Parcours d'un TreeView [Résolu]

Signaler
Messages postés
2
Date d'inscription
mercredi 1 juillet 2015
Statut
Membre
Dernière intervention
3 juillet 2015
-
Messages postés
2
Date d'inscription
mercredi 1 juillet 2015
Statut
Membre
Dernière intervention
3 juillet 2015
-
Bonjour à tous !

Je débute dans ce langage depuis un peu moins de 3 semaines et j'avoue avoir besoin d'un petit coup de pouce!

voilà ce que je souhaite faire:

J'ai établi une hiérarchie de compteurs ( chaque compteurs peut posséder des sous compteurs, eux meme pouvant posséder des sous compteurs et ainsi de suite...) à l'aide d'un TreeView.


Une fois la hiérarchie établie, je souhaite qu'une fonction me l'a recopie dans une feuille ( Feuil 2 ). Par exemple:

Imaginons un bâtiment avec 3 compteurs principaux

- Le premier possède 3 sous compteurs associés, chacun possédant encore un sous compteur associé

-Le deuxième possède 2 sous compteurs

-Le 3ème n'a rien en dessous de lui.

Je souhaite donc un affichage de ce type


Compteur 1
Sous compteurs 1.1
sous-sous compteurs 1.1.1
Sous compteurs 1.2
sous-sous compteurs 1.2.1
Sous compteurs 1.3
sous-sous compteurs 1.3.1


Compteur 2
Sous compteur 2.1
Sous compteur 2.2

Compteur 3



En définitif, je cherche une fonction qui parcours tous les noeuds enfants d'un noeud parent, le noeud parent dont on souhaite connaitre absolument tous ses "déscendents" serait passé en paramètre .J'ai donc procédé ainsi, Idx_Affichage étant une variable globale



Public Sub Parcourir_Enfants(ByVal Noeud_Parent As MSComctlLib.Node)
Dim Noeud_Enfant As Node
Dim Noeud_Suivant As Node



If Noeud_Parent.Children = 0 Then
Idx_Remplissage = Idx_Remplissage + 1
Worksheets("Feuil2").Cells(Idx_Remplissage, 1).Value = Noeud_Parent.Text


If Noeud_Parent.Index <> Noeud_Parent.LastSibling.Index Then

Set Noeud_Suivant = Noeud_Parent.Next

Call Parcourir_Enfants(Noeud_Enfant)

End If

End If


If Noeud_Parent.Children <> 0 Then
Idx_Remplissage = Idx_Remplissage + 1
Worksheets("Feuil2").Cells(Idx_Remplissage, 1).Value = Noeud_Parent.Text


Set Noeud_Enfant = Noeud_Parent.Child
Call Parcourir_Enfants(Noeud_Enfant)

End If




End Sub



Je comprends pourquoi cela ne marche pas mais je n'arrive pas à m'en sortir. Si il y à des cracks ici je veux bien un coup de main!

En vous remerciant !!!!!

2 réponses

Messages postés
7081
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2020
116
Bonjour,

Tu as ici un exemple démo à télécharger avec toutes les explications:

http://silkyroad.developpez.com/VBA/XlOrganigramme/
Messages postés
2
Date d'inscription
mercredi 1 juillet 2015
Statut
Membre
Dernière intervention
3 juillet 2015

Bonjour et merci pour ta réponse !! J'ai pu en effet m'inspirer de ton exemple, et j'ai réussi ! Alors pour ceux que ça intéresse, voila mon bout de code !!



Public Sub Parcourir_Enfants(ByVal Noeud_Parent As MSComctlLib.Node)
Dim Noeud_Enfant As Node
Dim Noeud_Suivant As Node

Dim i As Integer


If Noeud_Parent.Children = 0 Then
Idx_Remplissage = Idx_Remplissage + 1
Worksheets("Comptage complet").Cells(Idx_Remplissage, 1).Value = Noeud_Parent.Text

End If


If Noeud_Parent.Children <> 0 Then
Idx_Remplissage = Idx_Remplissage + 1
Worksheets("Comptage complet").Cells(Idx_Remplissage, 1).Value = Noeud_Parent.Text


Set Noeud_Enfant = Noeud_Parent.Child
For i = 1 To Noeud_Parent.Children

Call Parcourir_Enfants(Noeud_Enfant)
Set Noeud_Enfant = Noeud_Enfant.Next
Next i
End If

End Sub


Encore merci et à bientôt peut-être !!