pinhut
Messages postés2Date d'inscriptionmercredi 1 juillet 2015StatutMembreDernière intervention 3 juillet 2015
-
1 juil. 2015 à 14:30
pinhut
Messages postés2Date d'inscriptionmercredi 1 juillet 2015StatutMembreDernière intervention 3 juillet 2015
-
3 juil. 2015 à 09:10
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!
pinhut
Messages postés2Date d'inscriptionmercredi 1 juillet 2015StatutMembreDernière intervention 3 juillet 2015 3 juil. 2015 à 09:10
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