j'essaye de comprendre et ça avance tout doucement....
pourquoi 5 niveaux, est-ce que toutes les adresses ont 5 niveaux exactement ou est-ce qu'elles peuvent faire plus ou moins ?
parceque dans mon exemple, il faut exactement le niveau demandé sinon elle ne sera pas générée.
le tableau doit être déclaré au niveau général pour être accessible (voir public si nécessaire ?)
Array fixed voudrait dire que le tableau a été déclaré avec une taille donc ne serait pas dynamique.
tableau temporarly locked, ça c'est pas très clair, voudrait dire qu'on est sorti trop tôt d'un bloc With et End With ...?
----- niveau général -----
'déclaration du tableau
Dim Tableau() As String
'taille maxi redimentionnée
Dim Tna As Integer
'nombre d'éléments dans le tableau
Dim Tnb As Integer
----- niveau appel de la Fonction -----
'appel de la Fontion
FirstNode 5
'redimentionnement avec la bonne taille
ReDim Preserve Tableau(Tnb)
'édition du résultat (ça risque d'être long)
'faut faire un Dim x As Integer
For x = 1 To Tnb
MsgBox Tableau(x)
Next
----- recherche du premier Node -----
Private Sub FirstNode(Level As Long)
Dim nod1 As Node
Dim nod2 As Node
'changer le nom TreeView1 si nécessaire
'on commence à partir d'un Node quelconque
Set nod1 = TreeView1.SelectedItem
'on boucle de parent en parent
Do While (nod1 Is Nothing) = False
Set nod2 = nod1
Set nod1 = nod1.Parent
Loop
'on remonte au premier
'et on appelle directement la 2eme Fonction
ShowNodes nod2.FirstSibling, Level
End Sub
----- recherche des noeuds jusqu'au niveau demandé -----
Private Sub ShowNodes(N As Node, Level As Long)
's'il n'y a rien on fait rien
'sinon il faudrait peut être mettre en table aussi (adresses avec moins de 5 niveaux...?)
If Not N Is Nothing Then
If Level > 1 Then
'on n'a pas encore atteint le niveau
'on développe le noeud
N.EnsureVisible
'on va chercher le niveau plus bas
ShowNodes N.Child, Level - 1
Else
'ici on a atteint le niveau
'on ferme les noeuds de niveau inférieur
N.Expanded = False
'je commence l'indice à un
Tnb = Tnb + 1
'je redimentionne de 20 en 20 pour aller plus vite
If Tnb > Tna Then Tna = Tna + 20: ReDim Preserve Tableau(Tna)
'en principe ici on doit avoir l'adresse complète de l'URL
Tableau(Tnb) = N.FullPath
End If
'il ya peut être d'autres enfants avec le même niveau
ShowNodes N.Next, Level
End If
End Sub
Daniel