Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 classe combo cascade qui s'oublie

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 !

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 😳
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
 

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
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
    245.3 KB · Affichages: 32
Ok !
effectivement , j'utilise souvent cette façon de faire , mais que je n'ai pas automatisé ! Lol
car parfois c'est 3 Combobox de recherche ou 4 ou 6 etc
Bonne fin de Soirée
Cordialement
jean marie
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
235
Réponses
10
Affichages
281
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
8
Affichages
233
Réponses
5
Affichages
232
Réponses
4
Affichages
177
Réponses
3
Affichages
665
Réponses
8
Affichages
466
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…