Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !
Dim mondico
Sub essai()
  Set mondico = CreateObject("scripting.dictionary")
  ajout "bb,aa"
  ajout "cc,aa"
  ajout "dd,aa"
  ajout "ee,bb"
  ajout "ff,bb"
  ajout "gg,dd"
  ajout "hh,ee"
  ajout "ii,ee"
  ajout "jj,hh"
  ajout "kk,hh"
  MsgBox affiche()
  SupPère "bb"
  MsgBox affiche()
End Sub
Sub SupPère(père)
   vpersonnes père, 1
End Sub
Sub ajout(FilsPère)
  a = Split(FilsPère, ",")
  clé = a(0): élem = a(1)
  mondico(clé) = élem
End Sub
Function affiche()
  tmp = ""
  For Each c In mondico.keys
   If mondico(c) <> "" Then tmp = tmp & "Fils:" & c & " - père:" & mondico.Item(c) & vbLf
  Next c
  affiche = tmp
End Function
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
  mondico.Remove parent
End Sub
	Private Tbl(1 To 100, 1 To 3)
Private n, branche
Public Property Let ajout(FilsPère)
  a = Split(FilsPère, ",")
  clé = a(0): élem = a(1)
  n = n + 1
  Tbl(n, 1) = clé: Tbl(n, 2) = élem
End Property
Public Property Let SupBranche(père)
   SupItem père, 1
    For i = n To 1 Step -1
     If Tbl(i, 3) = "sup" Then
        For k = i To n
           Tbl(k, 1) = Tbl(k + 1, 1)
           Tbl(k, 2) = Tbl(k + 1, 2)
           Tbl(k, 3) = Tbl(k + 1, 3)
        Next k
        n = n - 1
     End If
   Next i
End Property
Public Property Get VisuBranche(père)
   visu père, 1
   VisuBranche = branche
End Property
Public Property Get affiche()
  tmp = ""
  For p = 1 To n
   If Tbl(p, 1) <> "" Then tmp = tmp & "Fils:" & Tbl(p, 1) & " - père:" & Tbl(p, 2) & vbLf
  Next p
  affiche = tmp
End Property
Public Property Get père(fils)
   For i = 1 To n
     If Tbl(i, 1) = fils Then père = Tbl(i, 2)
   Next i
End Property
Public Property Get taille()
  taille = n
End Property
Sub SupItem(parent, niv)       ' procédure récursive
  For i = 1 To n
    If Tbl(i, 2) = parent Then SupItem Tbl(i, 1), niv + 1
  Next i
  For k = 1 To n
   If Tbl(k, 1) = parent Then Tbl(k, 3) = "sup"
  Next k
End Sub
Sub visu(parent, niv) ' procédure récursive
  branche = branche & parent & vbLf
  For i = 1 To n
    If Tbl(i, 2) = parent Then visu Tbl(i, 1), niv + 1
  Next i
End Sub
	Sub AjoutArbreAunAutre()
   Set a = New Arbre
   Set b = New Arbre
   '--- arbre a
   Set f = Sheets("bd")
   For i = 2 To f.[A65000].End(xlUp).Row
     a.ajout = f.Cells(i, 1) & "," & f.Cells(i, 2)
   Next i
   '--- arbre b
   b.ajout = "nn,mm"
   b.ajout = "oo,mm"
   b.ajout = "pp,nn"
   b.ajout = "qq,pp"
   '--- on ajoute arbre b à la branche ee de l'arbre a
   aa = Split(b.liste(), ":")
   bb = Split(aa(0), ",")
   a.ajout = bb(1) & ",ee"    ' on raccroche la branche mm  de b à ee de a
   For i = LBound(aa) To UBound(aa)
     a.ajout = aa(i)
   Next i
   a.DessineBrancheShapes = "aa,feuil3"
   Sheets("feuil3").Select
End Sub
	Tu veux chercher ou tu veux une piste ?
Class A
      private maString1 as String
      private mesAbonnes as collection
      public Sub AjouterAbonne(unObjet as Object)
              mesAbonnes.add unObjet
      end sub
      public property LET String1 (s as string)
               maString1 = s
               Dim o as object
               for each o in mesAbonnes
                    o.[B][I]traitementAFaire[/I][/B] 'traitementAFaire DOIT ETRE une méthode commune à tous les objets de la collection, même s'ils ne sont pas du même type
               next o
      end property
end class
Class B
       public sub Init (unA as A)
             ...traitements divers
             ...traitements divers
             unA.AjouterAbonne B
       end sub
       public sub traitementAFaire()
             ...
             ...
      end sub
end class
Class C
       public sub Init (unA as A)
             ...traitements divers
             ...traitements divers
             unA.AjouterAbonne C
       end sub
       public sub traitementAFaire()
             ...
             ...
      end sub
end class
	C'est là qu'il faut commencer à jouer avec des héritages ? je sens le mal de tête arriver 😉
Il me semblait simplement que créer des objets imbriqués était l'étape suivante logique
We use cookies and similar technologies for the following purposes:
Est ce que vous acceptez les cookies et ces technologies?
We use cookies and similar technologies for the following purposes:
Est ce que vous acceptez les cookies et ces technologies?