cyril92 Posté(e) le 18 avril 2013 Posté(e) le 18 avril 2013 Bonjour,J'ai un plan autocad avec une multitude de présentations et je voudrais les trier par ordre alpha-numérique (en utilisant le nom de chaque onglet). Est ce possible de le faire avec une routine VBA. Si oui quelqu'un peut il m'aider? Cordialement.
Lommig Posté(e) le 18 avril 2013 Posté(e) le 18 avril 2013 Bonjour, Oui, je pense que c'est possible en VBA.Je te propose cette procédure :1) récupérer le nom de chaque présentation2) trier cette liste par ordre alpha-numérique3) forcer la position d'onglet de chaque présentation Cette routine VBA parcourt les espaces en affichant leur nom et leur position actuel :Sub LISTE()Dim Esp As AcadLayoutFor Each Esp In ThisDrawing.LayoutsMsgBox Esp.Name & " - " & Esp.TabOrderNext EspEnd Sub(On obtient des messages du genre : "Model - 0", "Présentation1 - 1", "Présentation2 - 2", ...) Cette routine VBA force la présentation "Présentation1" au 3ème onglet :Sub MODIF()Dim MaPrésentation As AcadLayoutSet MaPrésentation = ThisDrawing.Layouts("Présentation1")MaPrésentation.TabOrder = 2End Sub Ce n'est qu'un début de réponse...Je te conseille de poster ton ébauche de code. Guillaume AutoCAD, AutoCAD Map3D, AutoCAD Architecture, Revit, COVADIS, InfraWorks 360, ReCap 360, ...BIM Infrastructure
cyril92 Posté(e) le 19 avril 2013 Auteur Posté(e) le 19 avril 2013 Merci guillaume.Entre temps j'ai réussi à faire ce code et ça marche. Sub TriAuto() Dim Layout As AcadLayout Dim layouts As AcadLayout Dim SortLayoutRight As AcadLayout, SortLayoutLeft As AcadLayout Dim SortIt As New Collection Dim TabCount As Long, SortCount As Long, TabOrder As Long Dim TabName As String, SortText As String, msg As String Dim tempLayout As AcadLayout Dim AddedTab As Boolean ' Alphabetize internally For TabCount = 0 To (ThisDrawing.layouts.Count - 1) AddedTab = False TabName = ThisDrawing.layouts(TabCount).Name If TabName = "Model" Then GoTo SKIP ' Skip modelspace If SortIt.Count = 0 Then SortIt.Add TabName ' Add to beginning of list Else For SortCount = 1 To SortIt.Count ' Add to list by string SortText = SortIt(SortCount) If StrComp(TabName, SortText, vbTextCompare) = -1 Then If SortCount = 1 Then SortIt.Add TabName ' Add as first item Else SortIt.Add TabName, , SortCount ' Add as previous item End If AddedTab = True Exit For End If Next If Not (AddedTab) Then SortIt.Add TabName, , , SortIt.Count ' Add if we haven't yet End IfSKIP: Next ' Write new AutoCAD tab order For SortCount = 1 To SortIt.Count Set tempLayout = ThisDrawing.layouts(SortIt(SortCount)) tempLayout.TabOrder = SortCount Next '------------------------------- ' Read and display New Tab Order '------------------------------- msg = "Classement Alphanumérique : " & vbCrLf & vbCrLf For TabCount = 0 To (ThisDrawing.layouts.Count - 1) TabName = ThisDrawing.layouts(TabCount).Name If TabName = "Model" Then GoTo SKIP2 ' Don't show modelspace TabOrder = ThisDrawing.layouts(TabCount).TabOrder msg = msg & "(" & TabOrder & ")" & vbTab & TabName & vbCrLfSKIP2: Next MsgBox msg, vbInformation End Sub
Olivier Eckmann Posté(e) le 19 avril 2013 Posté(e) le 19 avril 2013 Bonjour, un petit outil fait par Lee Mac qui fait exactement ce que l'on souhaite avec les présentations tabsort Olivier
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant