XL 2019 Erreur 91

netparty

XLDnaute Occasionnel
Bonjour à tous

J'ai un soucis avec le code suivant :
VB:
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.

Auriez-vous une idée pour moi

Merci d'avance
 

laurent950

XLDnaute Accro
Bonsoir @netparty

Voilà : le code de la L'Userform "USR_Gestion_Presentations"

Remplacer TOUT votre code par celui ci dessous dans Votre USERFORM

VB:
Option Explicit
'
Private Sub UserForm_Initialize()
' Excel (ListBox Clear)
    Liste_Presentations.Clear
' Autocad
    Dim AcadApp As Object
        Set AcadApp = GetObject(, "AutoCAD.Application")
    Dim AcadDoc As Object
        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

' Dans l'odre d'autocad
    Label_Onglet_Courant.Caption = "Présentation Courante: " & AcadDoc.GetVariable("CTAB")
    Dim onglet As AutoCAD.AcadLayouts
    Dim i As Integer
        Set onglet = AcadDoc.Layouts
    Dim TabPresentation() As String
        ReDim TabPresentation(1 To onglet.Count - 1)
    For i = 0 To onglet.Count - 1
        If AcadDoc.Layouts(i).Name <> "Model" Then
            TabPresentation(AcadDoc.Layouts(i).TabOrder) = AcadDoc.Layouts(i).Name
        End If
    Next i
    ' Transfert le tableau dans la ListeBox (Dans l'ordre d'Autocad)
    Liste_Presentations.List = TabPresentation
' Affichage
    Label_Nbre_Onglet = "Liste des présentations (" & Liste_Presentations.ListCount & ")"
End Sub

Private Sub BP_Rafraichir_Click()
    UserForm_Initialize
End Sub

Private Sub Option_Affiche_Acad_Click()
'   *** Tri des présentations ordre Autocad
'   *** Renvois vers la fonction
' Applique l'ordre en fonction de : "Option Bouton"
'    * L'odre des Présentation dans Autocad
    Btn_Appliquer_Click
End Sub

Private Sub Option_Affiche_Alpha_Click()
'   *** Tri des présentations ordre alphanumérique
'   *** Renvois vers la fonction
' Applique l'ordre en fonction de : "Option Bouton"
'    * L'odre des Présentation dans Autocad
    Btn_Appliquer_Click
End Sub

Private Sub Btn_Appliquer_Click()
' Applique l'ordre en fonction de : "Option Bouton"
'    * L'ordre des Présentation dans Autocad
'    * D'une Liste Trié

' Excel (ListBox Clear)
    Liste_Presentations.Clear
' Autocad
    Dim AcadApp As Object
        Set AcadApp = GetObject(, "AutoCAD.Application")
    Dim AcadDoc As Object
        Set AcadDoc = AcadApp.ActiveDocument
' 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
            Dim TabPresentation() As String
                ReDim TabPresentation(1 To onglet.Count - 1)
            For i = 0 To onglet.Count - 1
                If AcadDoc.Layouts(i).Name <> "Model" Then
                    TabPresentation(AcadDoc.Layouts(i).TabOrder) = AcadDoc.Layouts(i).Name
                End If
            Next i
            ' Transfert le tableau dans la ListeBox (Dans l'ordre d'Autocad)
            Liste_Presentations.List = TabPresentation
    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
 
Dernière édition:

laurent950

XLDnaute Accro
Option @netparty

Aux Choix :
* Poste 12 (Utilisation de la Sub : "Btn_Appliquer_Click" [Le Code en Poste #13 est plus Propre])
Ou
*Poste 13 (Utilisation de la Sub : "Gestion_Liste_Onglets")
Idem

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
'   *** 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
' Autocad
        Set AcadApp = GetObject(, "AutoCAD.Application")
        Set AcadDoc = AcadApp.ActiveDocument
' 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
            Dim TabPresentation() As String
                ReDim TabPresentation(1 To onglet.Count - 1)
            For i = 0 To onglet.Count - 1
                If AcadDoc.Layouts(i).Name <> "Model" Then
                    TabPresentation(AcadDoc.Layouts(i).TabOrder) = AcadDoc.Layouts(i).Name
                End If
            Next i
            ' Transfert le tableau dans la ListeBox (Dans l'ordre d'Autocad)
            Liste_Presentations.List = TabPresentation
    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
 
Dernière édition:

netparty

XLDnaute Occasionnel
Option @netparty

Aux Choix :
* Poste 12 (Utilisation de la Sub : "Btn_Appliquer_Click" [Le Code en Poste #13 est plus Propre])
Ou
*Poste 13 (Utilisation de la Sub : "Gestion_Liste_Onglets")
Idem

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
'   *** 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
' Autocad
        Set AcadApp = GetObject(, "AutoCAD.Application")
        Set AcadDoc = AcadApp.ActiveDocument
' 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
            Dim TabPresentation() As String
                ReDim TabPresentation(1 To onglet.Count - 1)
            For i = 0 To onglet.Count - 1
                If AcadDoc.Layouts(i).Name <> "Model" Then
                    TabPresentation(AcadDoc.Layouts(i).TabOrder) = AcadDoc.Layouts(i).Name
                End If
            Next i
            ' Transfert le tableau dans la ListeBox (Dans l'ordre d'Autocad)
            Liste_Presentations.List = TabPresentation
    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
Bonjour @laurent950

Super cela fonctionne parfaitement

Un tout grand merci pour ton aide

Bonne journée
 

Discussions similaires

Réponses
29
Affichages
926

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote