Public Sub Gestion_Liste_Onglets()
' *** Appliquer ordre des présentations
Dim obj_onglets As AcadLayouts
Dim obj_onglet As AcadLayout
Liste_Presentations.Clear
If Option_Affiche_Acad.Value = True Then
For index = 0 To AcadDoc.layouts.Count - 1
Liste_Presentations.AddItem
Next index
For Each obj_onglets In AcadDoc.layouts
Liste_Presentations.List(obj_onglets.TabOrder) = obj_onglets.Name
Next obj_onglets
Liste_Presentations.RemoveItem (0)
Else
For Each obj_onglets In AcadDoc.layouts
If obj_onglets.TabOrder <> 0 Then
Liste_Presentations.AddItem obj_onglets.Name
End If
Next obj_onglets
End If
Label_Nbre_Onglet = "Liste des présentations (" & Liste_Presentations.ListCount & ")"
Tbx_Nom_Onglet.Value = ""
End Sub
J'ai une erreur 91 mais je n'arrive pas à trouver d'ou cela vient.
En Poste #15 :
* J'ai enlevé la variable tableau
* Géré la Gestion d'erreur
* Initialisé une fois
Set AcadApp = GetObject(, "AutoCAD.Application")
Set AcadDoc = AcadApp.ActiveDocument
* Récupérer directement l'ordre des présentation sans passer par une variable tableau
Liste_Presentations.AddItem onglet.Item(AcadDoc.Layouts(i).TabOrder).Name
Le code est fonctionnel à tester
VB:
Option Explicit
Dim AcadApp As Object
Dim AcadDoc As Object
'
Private Sub UserForm_Initialize()
' Excel (ListBox Clear)
Liste_Presentations.Clear
' Autocad
Set AcadApp = GetObject(, "AutoCAD.Application")
Set AcadDoc = AcadApp.ActiveDocument
On Error Resume Next
' Check if AutoCAD application is open. If is not opened create a new instance and make it visible
If AcadApp Is Nothing Then
If MsgBox("AUTOCAD n'est pas ouvert" & vbLf & "Voulez-vous ouvrir AUTOCAD", 36, "Ouvrir AUTOCAD") = vbYes Then
Set AcadApp = CreateObject("AutoCAD.Application")
AcadApp.Visible = True
End If
End If
On Error GoTo 0
' *** Renvois vers la fonction
' * L'odre des Présentation dans Autocad (Par Defaulf Initialisation UsurForm)
Gestion_Liste_Onglets
End Sub
Private Sub BP_Rafraichir_Click()
UserForm_Initialize
End Sub
Private Sub Option_Affiche_Acad_Click()
' *** Tri des présentations ordre alphanumérique
' *** Renvois vers la fonction
' Applique l'odre en fonction de : "Option Bouton"
' * L'odre des Présentation dans Autocad
Gestion_Liste_Onglets
End Sub
Private Sub Option_Affiche_Alpha_Click()
' *** Tri des présentations ordre alphanumérique
' *** Renvois vers la fonction
' Applique l'odre en fonction de : "Option Bouton"
' * D'une Liste Trié
Gestion_Liste_Onglets
End Sub
Private Sub Btn_Appliquer_Click()
' *** Tri des présentations ordre alphanumérique
' *** Renvois vers la fonction
' Applique l'odre en fonction de : "Option Bouton"
' * L'odre des Présentation dans Autocad
' * D'une Liste Trié
Gestion_Liste_Onglets
End Sub
Public Sub Gestion_Liste_Onglets()
' *** Appliquer ordre des présentations
' *** En fonction de :
' * L'odre des Présentation dans Autocad
' * D'une Liste Trié dans la ListeBox
' Excel (ListBox Clear)
Liste_Presentations.Clear
' Titre
Label_Onglet_Courant.Caption = "Présentation Courante: " & AcadDoc.GetVariable("CTAB")
' Variable
Dim onglet As AutoCAD.AcadLayouts
Dim i As Integer
Set onglet = AcadDoc.Layouts
' Condition
If Me.Option_Affiche_Acad = True Then
' Dans l'odre d'autocad
For i = 0 To onglet.Count - 1
If AcadDoc.Layouts(i).Name <> "Model" Then
Liste_Presentations.AddItem onglet.Item(AcadDoc.Layouts(i).TabOrder).Name
End If
Next i
Else
' Liste Trié
For i = 0 To onglet.Count - 1
If AcadDoc.Layouts(i).Name <> "Model" Then
Liste_Presentations.AddItem AcadDoc.Layouts(i).Name
End If
Next i
End If
' Affichage
Label_Nbre_Onglet = "Liste des présentations (" & Liste_Presentations.ListCount & ")"
End Sub
En Poste #15 :
* J'ai enlevé la variable tableau
* Géré la Gestion d'erreur
* Initialisé une fois
Set AcadApp = GetObject(, "AutoCAD.Application")
Set AcadDoc = AcadApp.ActiveDocument
* Récupérer directement l'ordre des présentation sans passer par une variable tableau
Liste_Presentations.AddItem onglet.Item(AcadDoc.Layouts(i).TabOrder).Name
Le code est fonctionnel à tester
VB:
Option Explicit
Dim AcadApp As Object
Dim AcadDoc As Object
'
Private Sub UserForm_Initialize()
' Excel (ListBox Clear)
Liste_Presentations.Clear
' Autocad
Set AcadApp = GetObject(, "AutoCAD.Application")
Set AcadDoc = AcadApp.ActiveDocument
On Error Resume Next
' Check if AutoCAD application is open. If is not opened create a new instance and make it visible
If AcadApp Is Nothing Then
If MsgBox("AUTOCAD n'est pas ouvert" & vbLf & "Voulez-vous ouvrir AUTOCAD", 36, "Ouvrir AUTOCAD") = vbYes Then
Set AcadApp = CreateObject("AutoCAD.Application")
AcadApp.Visible = True
End If
End If
On Error GoTo 0
' *** Renvois vers la fonction
' * L'odre des Présentation dans Autocad (Par Defaulf Initialisation UsurForm)
Gestion_Liste_Onglets
End Sub
Private Sub BP_Rafraichir_Click()
UserForm_Initialize
End Sub
Private Sub Option_Affiche_Acad_Click()
' *** Tri des présentations ordre alphanumérique
' *** Renvois vers la fonction
' Applique l'odre en fonction de : "Option Bouton"
' * L'odre des Présentation dans Autocad
Gestion_Liste_Onglets
End Sub
Private Sub Option_Affiche_Alpha_Click()
' *** Tri des présentations ordre alphanumérique
' *** Renvois vers la fonction
' Applique l'odre en fonction de : "Option Bouton"
' * D'une Liste Trié
Gestion_Liste_Onglets
End Sub
Private Sub Btn_Appliquer_Click()
' *** Tri des présentations ordre alphanumérique
' *** Renvois vers la fonction
' Applique l'odre en fonction de : "Option Bouton"
' * L'odre des Présentation dans Autocad
' * D'une Liste Trié
Gestion_Liste_Onglets
End Sub
Public Sub Gestion_Liste_Onglets()
' *** Appliquer ordre des présentations
' *** En fonction de :
' * L'odre des Présentation dans Autocad
' * D'une Liste Trié dans la ListeBox
' Excel (ListBox Clear)
Liste_Presentations.Clear
' Titre
Label_Onglet_Courant.Caption = "Présentation Courante: " & AcadDoc.GetVariable("CTAB")
' Variable
Dim onglet As AutoCAD.AcadLayouts
Dim i As Integer
Set onglet = AcadDoc.Layouts
' Condition
If Me.Option_Affiche_Acad = True Then
' Dans l'odre d'autocad
For i = 0 To onglet.Count - 1
If AcadDoc.Layouts(i).Name <> "Model" Then
Liste_Presentations.AddItem onglet.Item(AcadDoc.Layouts(i).TabOrder).Name
End If
Next i
Else
' Liste Trié
For i = 0 To onglet.Count - 1
If AcadDoc.Layouts(i).Name <> "Model" Then
Liste_Presentations.AddItem AcadDoc.Layouts(i).Name
End If
Next i
End If
' Affichage
Label_Nbre_Onglet = "Liste des présentations (" & Liste_Presentations.ListCount & ")"
End Sub