OVH Cloud OVH Cloud

Parcours feuille excel

2 réponses
Avatar
PROTHEAs
Salut =E0 tous,

J'ai une arborescence, saisie dans un tableau. J'aimerai remont=E9
jusqu'=E0 la racine en partant de chaque noeud de l'arborescence.

Exemple : Sch=E9ma :

3-PBT 4-PBP 6-
PBT 7-PBT
|_________| |
___________|
=20
| |
2-
REP 5-REP
|__________________________|
|
1- AMP
Tableau repr=E9sentatif:
N=B0 | Ref | N=B0 Amont || N=B0Racine
1 AMP - -
2 REP 1 1
3 PBT 2 1
4 PBP 2 1
5 REP 1 1
6 PBT 5 1
7 PBT 5 1


Donc voila :
Mon tableau au d=E9part contient les trois colonnes N=B0, Ref, N=B0 Amont.
Il s'agit donc de parcourir le tableau pour d=E9termin=E9 la racine de
chaque noeud, sachant qu'il peut y avoir plusieurs racines.

J'esp=E8re que c'est assez clair.
Merci =E0 ceux et celles qui voudront bien m'aider.

2 réponses

Avatar
JB
On 7 fév, 14:37, "PROTHEAs" wrote:
Salut à tous,

J'ai une arborescence, saisie dans un tableau. J'aimerai remonté
jusqu'à la racine en partant de chaque noeud de l'arborescence.

Exemple : Schéma :

3-PBT 4-PBP 6-
PBT 7-PBT
|_________| |
___________|

| |
2-
REP 5-REP
|__________________________|
|
1- AMP
Tableau représentatif:
N° | Ref | N° Amont || N°Racine
1 AMP - -
2 REP 1 1
3 PBT 2 1
4 PBP 2 1
5 REP 1 1
6 PBT 5 1
7 PBT 5 1

Donc voila :
Mon tableau au départ contient les trois colonnes N°, Ref, N° Amont.
Il s'agit donc de parcourir le tableau pour déterminé la racine de
chaque noeud, sachant qu'il peut y avoir plusieurs racines.

J'espère que c'est assez clair.
Merci à ceux et celles qui voudront bien m'aider.


Bonjour,

Cette procédure récursive permet d'obtenir tous les descendants d'un
père. Je ne sais pas si cela peut t'aider.

Dim bdt, n, ligne
Sub vpersonnes(parent, niv) ' procédure récursive
ligne = ligne + 1
Range("B16").Offset(ligne, niv) = parent
Range("B16").Offset(ligne, niv).Borders(xlEdgeLeft).Weight = xlThin
Range("B16").Offset(ligne, niv).Borders(xlEdgeBottom).Weight =
xlThin

For i = 1 To n
If bdt(i, 2) = parent Then
vpersonnes bdt(i, 1), niv + 1
End If
Next i
End Sub

Sub organigramme()
Range("C17:M200").Clear
ligne = 0
n = Application.CountA(Range("a:a")) - 1
bdt = Range("BD")
vpersonnes Range("D2"), 1
End Sub

http://boisgontierj.free.fr/fichiers/jb-organigramme.xls
http://boisgontierj.free.fr/fichiers/jb-TreeViewExemples.zip

Cordialement JB

Avatar
PROTHEAs
Merci.
J'ai finalement utilisé une méthode un peu plus draconienne...j'ai pas
pu attendre une réponse.
Je peux t'envoyer la méthode utilisé si tu veux.

Enfin merci quand même.