Aller au contenu

Trier onglet de présentation


Messages recommandés

Posté(e)

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.

Posté(e)

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ésentation

2) trier cette liste par ordre alpha-numérique

3) 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 AcadLayout

For Each Esp In ThisDrawing.Layouts

MsgBox Esp.Name & " - " & Esp.TabOrder

Next Esp

End 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 AcadLayout

Set MaPrésentation = ThisDrawing.Layouts("Présentation1")

MaPrésentation.TabOrder = 2

End 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

Posté(e)

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 If

SKIP:

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 & vbCrLf

SKIP2:

Next

 

MsgBox msg, vbInformation

 

End Sub

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité