Menu en cascade 2 critères et filtre

Bonjour le forum

je tente d'adapter un code, mais j'ai peine à le compléter!

J'aimerais filtré une base de données à l'aide de deux critères en cascade.

Actuellement, le ComboBox 2 n'est pas limité au choix du 1. Il donne toute la colonne.

Et côté, présentation de l'userform, il y a un bog de dimension et de colonne.

Merci de votre aide.

Bonjour,

Si tu "garnis" tes deux ComboBox dans la procédure Initialize de ton UserForm, tu ne saurais pas lier le contenu de la seconde liste (puisque rien n'a été choisi dans la première!)

Essaie donc en déplaçant la partie de code concernée dans la procédure liée à l'événement ComboBox1_Change:

Private Sub ComboBox1_Change()
'   '--- combobox Emplois trié
   Set f = Sheets("bd")
   BD = f.Range("A2:E" & f.[A65000].End(xlUp).Row).Value
   Set d = CreateObject("Scripting.Dictionary")
   d("*") = ""
   For i = LBound(BD) To UBound(BD)
    If BD(i, 1) = ComboBox1.Value Then d(BD(i, 2)) = ""
   Next i
   Temp = d.keys
   Tri Temp, LBound(Temp), UBound(Temp)
   Me.ComboBox2.List = Temp
   Me.ComboBox2.ListIndex = 0
End Sub

De cette manière, c'est bien au changement de sélection dans la première liste déroulante, que le contenu de la seconde se mettra à jour ... Si j'ai bien compris la demande!?

Bonjour U.Milité

merci infiniment, c'est impeccable. J'ai pourtant d'autres codes semblables, et je n'avais pas fait le lien avec l'événement change.

il ne me reste juste à trouver le bog sur la mise en forme de la Listbox.

Merci encore.

Bonjour,

Autre proposition avec révision du code

Bonjour thev,

ouf, quel travail! Merci beaucoup. Je chercherai à comprendre mieux votre révision.

J'ai aussi compris que la clé pour l'apparence des colonnes de la ListBox repose en parti sur ces deux lignes:

x = x + .Columns(i).Width * 1#
tempCol = tempCol & .Columns(i).Width * 1# & ";"

Merci encore et bonne fin de semaine.

Rechercher des sujets similaires à "menu cascade criteres filtre"