XL 2013 classe combo cascade qui s'oublie

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
de bon matin a la fraîche j'ai une énigme a résoudre

j'ai une toute petite classe combobox en cascade (exemple assez succin) qui oublie après la première sélection dans les 3 combo
j'explique je lance le userform il rempli la première appelle la classe pour l'event combobox
je sélectionne dans la première OK , la 2d OK , la 3eme OK
je reviens sur une des précédente et là ça plante
je contrôle pour quoi en débogage et j'ai mon tableau d'object combobox ("Combosoeurs") vide

je suis perplexe ai-je oublié quelque chose :oops:
me serais je levé trop tot ;)
dans mon userform j'ai 3 comb (cmb1,cmb2,cmb3)
le code
on se moque pas je sais la méthode sans doublons avec le( .value/.listindex-1) est archaïque ;);)😅
VB:
Dim cls As New Classecomb

Private Sub UserForm_Activate()
    Dim tbl
    tbl = Range("tableau1")
    cls.initcombo Me, Range("tableau1").Value

    With cmb1
        For i = 1 To UBound(tbl)
            .Value = tbl(i, 1)
            If .ListIndex = -1 Then .AddItem tbl(i, 1)
        Next
        .Value = ""
    End With
End Sub

le code ma classe
VB:
Public WithEvents cmb As MSForms.ComboBox
Dim cl(1 To 3) As New Classecomb
Public Combosoeurs
Public T
Public indexo&
Public Function initcombo(uf, tabl)
    Dim toutes(1 To 3), i&, z&, T
  
    For i = 1 To 3
        Set cl(i).cmb = uf.Controls("cmb" & i)
        Set toutes(i) = uf.Controls("cmb" & i)
        cl(i).T = tabl
        cl(i).indexo = i
    Next
    For z = 1 To 3: cl(z).Combosoeurs = toutes: Next
End Function



Private Sub cmb_Click()
    If indexo <= 2 Then 'on arrete la gestion du clik a la 2d
        With Combosoeurs(indexo + 1)
            .Clear
            For a = 1 To UBound(T)
                .Value = T(a, indexo + 1)
                If T(a, indexo) = cmb.Value Then If .ListIndex = -1 Then .AddItem T(a, indexo + 1)
            Next
            .Value = ""
        End With
    End If
End Sub

l'erreur
demo.gif
 

Pièces jointes

Solution
Non j'ai et tu peux tester
mis la Variable " toutes " en Object
VB:
 Dim toutes(1 To 3) As Object, i&, z&, T
si tu supprimes le "As Object" ca ne fonctionne plus !
et il y a bien un rapport entre "Combosoeurs" et "toutes" ?
puisque
Code:
   For z = 1 To 3: cl(z).Combosoeurs = toutes: Next
halloween est passé Lol
Jean marie

ChTi160

XLDnaute Barbatruc
Re
une question :
comment opérerais tu pour faire en sorte que la recherche puisse se faire a partir de n'importe quel Combobox
donc au départ ils sont tous remplis et le choix peut être fait de n'importe lequel.
as tu ca dans tes archives Lol
Soit , une recherche Multi cascades Lol🤣😂🤣😇
Cordialement
jean marie
edit ; un truc de ce genre mais à ta Sauce Lol
 

Pièces jointes

  • RechercheCascades.gif
    RechercheCascades.gif
    245.3 KB · Affichages: 28

Discussions similaires

Réponses
3
Affichages
557
Réponses
8
Affichages
626
Réponses
3
Affichages
437
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
473
Réponses
2
Affichages
342
Réponses
5
Affichages
503
Réponses
29
Affichages
2 K
Réponses
33
Affichages
2 K

Statistiques des forums

Discussions
315 285
Messages
2 118 023
Membres
113 412
dernier inscrit
Casi18