filtre sur plusieurs Combobox
Bonjour à tous,
Après avoir regardé les tutos et autres sujet du forum, je n'ai pas réussit à répondre à ma question, peut être est elle bête j'en suis désolée par avance.
Voilà j'ai fichier excel contenant pas mal de données. Afin de les retrouver plus vite je crée une interface à l'aide d'une macro et de combobox. J'aimerais avoir des combobox "maitre esclave", ça j'ai réussit à faire plus ou moins (j'ai réussit à remplir les combobox). Le problème est que mon tableau s'organise de la façon suivante:
toto1
bobo
boubou
baba
toto2
plif
plaf
plouf
j'aimerais savoir si il est possible de programmer les Combobox, de façon à ce que lorsque je sélectionne avec la Combobox1, toto1, la combobox2 me laisse juste la possibilité de choisir entre les 3 possibilité (bobo, boubou, baba). Une espèce de filtre en faite?
J'ai quatre niveau comme cela de combobox mais je pense que si j'y arrive déjà avec 2, le reste coule de source
Merci de votre réponse
Je vous met mon code au cas où cas ou!
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| Option Explicit
Dim NbLignes As Integer
Private Sub UserForm_Initialize()
Dim j As Long
Dim kol As New Collection
NbLignes = Cells(Rows.Count, 1).End(xlUp).row
For j = 2 To NbLignes
On Error Resume Next
kol.Add Range("A" & j).Value, Range("A" & j).Value
Next j
For j = 2 To kol.Count
Me.ComboBox1.AddItem kol(j)
Next j
End Sub
Private Sub ComboBox1_Change()
Dim j As Long
Dim kol As New Collection
For j = 2 To NbLignes
On Error Resume Next
If CStr(Range("A" & j).Value) Then kol.Add Range("B" & j).Value, Range("B" & j).Value
Next j
Me.ComboBox2.Clear
For j = 1 To kol.Count
Me.ComboBox2.AddItem kol(j)
Next j
End Sub
Private Sub ComboBox2_Change()
Dim j As Long
Dim kol As New Collection
For j = 2 To NbLignes
On Error Resume Next
If Me.ComboBox1.Value And Me.ComboBox2.Value Then kol.Add Range("C" & j).Value, Range("C" & j).Value
Next j
Me.ComboBox3.Clear
For j = 1 To kol.Count
Me.ComboBox3.AddItem kol(j)
Next j
End Sub
Private Sub ComboBox3_Change()
Dim j As Long
Dim kol As New Collection
For j = 2 To NbLignes
On Error Resume Next
If Me.ComboBox1.Value And Me.ComboBox2.Value And Me.ComboBox3.Value Then kol.Add Range("D" & j).Value, Range("D" & j).Value
Next j
Me.ComboBox4.Clear
For j = 1 To kol.Count
Me.ComboBox4.AddItem kol(j)
Next j
End Sub |