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

  • combocascade demo.xlsm
    20.1 KB · Affichages: 6
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: 9

patricktoulon

XLDnaute Barbatruc
a ben mon model tu peux avoir 36 combobox
on peut le faire en cascade comme ici et on peut le faire facon listing
tu change une seul combo et on charge dans cet exemple les deux autres combo en même temps mais là on est plus dans une cascade mais multi listing
 

Discussions similaires

Statistiques des forums

Discussions
298 011
Messages
1 965 118
Membres
200 854
dernier inscrit
GuillaumeA