Mais en réalité, tu alourdis les traitements.
Sub essaiClasseArbre()
Set a = New Arbre
a.init = 0
a.ajout = "bb,aa"
a.ajout = "cc,aa"
a.ajout = "dd,aa"
a.ajout = "ee,bb"
a.ajout = "ff,bb"
a.ajout = "gg,dd"
a.ajout = "hh,ee"
a.ajout = "ii,ee"
a.ajout = "jj,hh"
a.ajout = "kk,hh"
x = "bb"
MsgBox "Père de : " & x & " " & a.père(x)
MsgBox "Taille:" & a.taille
MsgBox a.affiche()
a.SupPère = "cc"
MsgBox a.affiche()
x = "dd"
a.SupPère = x
MsgBox x & " est supprimé"
MsgBox a.affiche()
End Sub
Private mondico
Public Property Let init(n)
Set mondico = CreateObject("scripting.dictionary")
End Property
Public Property Let ajout(filsPère)
a = Split(filsPère, ",")
clé = a(0): élem = a(1)
mondico(clé) = élem
End Property
Public Property Let SupPère(père)
vpersonnes père, 1
End Property
Public Property Get affiche()
[A20:B30].Clear
tmp = ""
For Each c In mondico.keys
tmp = tmp & "Fils:" & c & " - père:" & mondico.Item(c) & vbLf
Next c
affiche = tmp
End Property
Public Property Get père(fils)
père = mondico(fils)
End Property
Public Property Get taille()
taille = mondico.count
End Property
Sub vpersonnes(parent, niv) ' procédure récursive
For Each c In mondico.keys
If mondico.Item(c) = parent Then vpersonnes c, niv + 1
Next c
MsgBox parent & " sup"
mondico.Remove parent
End Sub