Aller au contenu

Lister les blocs dans un ListBox VBA


Messages recommandés

Posté(e)

Bonjour à tous

J'ai commencé un bout de code, mon premier listbox (LB_Onglet_Source) m'affiche tous les onglets de mon dessin quand je sélectionne un onglet je doit afficher dans mon deuxième listbox (LB_Bloc_Source) la liste des blocs de cet onglet, mais mon problème est que tous les blocs de chaque onglet se retrouve de le deuxième listbox.

J'aimerais si je clique sur presentation1 je n'ai que les blocs de presentation1 et ainsi de suite.

Ci-joint mon code

Merci d'avance

Dim AcadApp As Object
Dim AcadDoc As Object

'   **********************************************************************************************************

Private Sub UserForm_Initialize()

    Dim AcadApp As Object
    Dim AcadDoc As Object
    Set AcadApp = GetObject(, "AutoCAD.Application")
    Set AcadDoc = AcadApp.ActiveDocument
    Dim onglet As AcadLayout
    
    On Error Resume Next
 
 'Check if AutoCAD application is open. If is not opened create a new instance and make it visible.
    Set AcadApp = GetObject(, "AutoCAD.Application")
    Set AcadDoc = AcadApp.ActiveDocument

    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



LB_Onglet_Source.Clear


For Each onglet In AcadDoc.Layouts
    'If onglet.Name <> "Model" Then
        LB_Onglet_Source.AddItem onglet.Name
    'End If
Next onglet


End Sub
'   **********************************************************************************************************

'   **********************************************************************************************************

Private Sub LB_Onglet_Source_Change()

Dim obj_onglets As AcadLayouts
Dim obj_onglet As AcadLayout
Dim index As Integer
Dim position As Integer
Dim totaux As Integer

For index = 0 To LB_Onglet_Source.ListCount - 1
If LB_Onglet_Source.Selected(index) = True Then
    position = index
    totaux = totaux + 1
End If


    
    Tb_Onglet_Source = LB_Onglet_Source.List(position)
   
    
    Dim nbrblocs As Integer 'nombre de calques dans le dessin courant
    Dim numbloc As Integer 'nième calque dans la liste
    nbrblocs = ThisDrawing.Blocks.Count
    For numbloc = 1 To nbrblocs
    Me.LB_Bloc_Source.AddItem ThisDrawing.Blocks(numbloc - 1).Name
    Next numbloc

    

Next index

Set obj_onglets = ThisDrawing.Layouts


End Sub

 

Posté(e)

Salut,

 

Alors sache pour pour compter les nombres de blocs dans les présentations il faut qu'elle soit active pour utilié le thisdrawing.paperspace.count-1 et boucler dessus

ensuite fait des lists de nom ou ce que tu veux pour faire

Me.LB_Bloc_Source.list = TA liste

tu verras que tu vas gagner en temps ^^

Citation

J'aimerais si je clique sur presentation1 je n'ai que les blocs de presentation1 et ainsi de suite.

alors prneds juste les blocs du layouts actif 😉

via

 thisdrawing.activelayout

car moi dans ton code tu parcours toutes tes présentations

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é