XL 2013 Creation shapes et clic pour déployer arborescence

erics83

XLDnaute Impliqué
Bonjour,

A la lecture des très bons tutos de JB (dans"Arborescence/Récursivité"), je vois qu'il est possible de créer des arborescence suivant une BD. Mais dans les différents exemples, à chaque fois, l'arborescence complète est affichée. Serait-il possible d'avoir une arborescence qui se développe "au fur et à mesure"...
JB propose cette solution via un USF :

1570115570348.png

Serait-il possible d'avoir ce résultat sans passer par un USF et si oui.....comment faire.....

Merci pour votre aide,
 

erics83

XLDnaute Impliqué
Bonjour patricktoulon,

C'est dans ces moments que je comprends à quel point il me reste beaucoup de choses à apprendre...car je n'ai rien compris....lol

Par contre, je vois que je me suis trompé dans le préfixe : j'ai Excel 2007....

Merci pour ton aide
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonsoir,

Exemple de treeview simple dans feuille mais fiabilité en doute.

VB:
Sub essai()
  Sheets(1).TreeView1.Nodes.Clear
  For k = 1 To 5
    Sheets(1).TreeView1.Nodes.Add , , "maClé1" & k, "père" & k
  Next
  For j = 1 To 5
    For k = Sheets(1).TreeView1.Nodes.Count To Sheets(1).TreeView1.Nodes.Count + 2
      Sheets(1).TreeView1.Nodes.Add "maClé1" & j, tvwChild, "maClé2" & Str(k), "Fils" & k
    Next k
  Next j
End Sub


Boisgontier
 

Pièces jointes

  • TreeviewFeuille.xlsm
    21.7 KB · Affichages: 16

erics83

XLDnaute Impliqué
Bonjour et merci JB,

Oui, cela fonctionne très bien, mais tout l'intérêt était de partir d'une BD ...
en fait, je souhaiterai faire comme les "cartes mentales" : en double-clic cela développe, exactement comme vos exemples de TreeView dans vos tutos, mais sans passer par un USF..(à moins que les TreeView génèrent automatiquement un USF et/ou que ce soit ça un TreeView...comme je ne connais pas...)

En vous remerciant pour votre aide,
Merci,
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
cf PJ

VB:
Dim tw, Tbl(), n
Sub Initialise()
  Tbl = Range("A2:E" & [A65000].End(xlUp).Row).Value
  pere = Tbl(1, 1)
  Set tw = Sheets(1).TreeView1
  Sheets(1).TreeView1.Nodes.Clear
  n = UBound(Tbl)
  tw.Nodes.Add(, , "NoeudMat" & pere, Tbl(1, 1)).Expanded = True ' Racine arbre
  Fils pere, 1
End Sub
Sub Fils(parent, niv)      ' procédure récursive
  For i = 2 To n
    cd = Tbl(i, 2)
    If cd = parent Then
      tw.Nodes.Add("NoeudMat" & parent, tvwChild, "NoeudMat" & Tbl(i, 1), Tbl(i, 1)).Expanded = False 'True
      Fils Tbl(i, 1), niv + 1
    End If
  Next i
End Sub

Boisgontier
 

Pièces jointes

  • TreeviewFeuilleHier.xlsm
    25 KB · Affichages: 20

Statistiques des forums

Discussions
312 033
Messages
2 084 806
Membres
102 674
dernier inscrit
Eloels