Bonjour
Dans un userform j'ai une listbox qui est alimentée par deux combobox les sources sont colonne B et C , je souhaite créer un filtre sur la colonne D sur le choix de l'année.
J'ai donc créé des CheckBox avec pour action le code des filtres par année.
Pour le CheckBox2016 ça fonctionne mais pas pour CheckBox2017
les filtres se font sur la feuille mais pas sur la lisbox.
Une piste ?
Merci
Cordialement
Codes des CheckBox
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Sub CheckBox2016_Change() 'filtre 2016 Me.ListBox1.Clear If CheckBox2016 = True Then Sheets("BD").Select ActiveSheet.Range("$A$1:$J$3000").AutoFilter Field:=4, Criteria1:= _ ">=01/01/2016", Operator:=xlAnd, Criteria2:="<=12/31/2016" Else Sheets("BD").Select ActiveSheet.Range("$A$1:$J$3000").AutoFilter Field:=4 End If End SubLe code des combobox
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Sub CheckBox2017_Change() 'filtre 2017 Me.ListBox1.Clear If CheckBox2017 = True Then Sheets("BD").Select ActiveSheet.Range("$A$1:$J$3000").AutoFilter Field:=4, Criteria1:= _ ">=01/01/2017", Operator:=xlAnd, Criteria2:="<=12/31/2017" Else Sheets("BD").Select ActiveSheet.Range("$A$1:$J$3000").AutoFilter Field:=4 End If End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Private Sub ComboBox2_click() 'Filtre colonne B 'ComboBox1 = "" ComboBox3 = "" Me.ListBox1.Clear For k = 1 To Ncol: Me("textBox" & k) = "": Next k j = 0 n = Application.CountIf(Application.Index(Rng, , 2), Me.ComboBox2) 'colonne B Dim b() ReDim b(1 To n, 1 To Ncol + 1) For i = LBound(BD) To UBound(BD) If Me.ComboBox2 = BD(i, 2) Then j = j + 1 For k = 1 To Ncol b(j, k) = BD(i, k) If k >= 3 And k <= 5 Then b(j, k) = BD(i, k) End If Next k b(j, k) = i End If Next i ListBox1.List = b 'alimente listbox1 ListBox1.ListIndex = 0 End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Private Sub ComboBox3_click() 'Filtre colonne C 'ComboBox1 = "" ComboBox2 = "" Me.ListBox1.Clear For k = 1 To Ncol: Me("textBox" & k) = "": Next k j = 0 n = Application.CountIf(Application.Index(Rng, , 3), Me.ComboBox3) 'colonne C Dim b() ReDim b(1 To n, 1 To Ncol + 1) For i = LBound(BD) To UBound(BD) If Me.ComboBox3 = BD(i, 3) Then j = j + 1 For k = 1 To Ncol b(j, k) = BD(i, k) If k >= 3 And k <= 5 Then b(j, k) = BD(i, k) End If Next k b(j, k) = i End If Next i ListBox1.List = b 'alimente listbox1 ListBox1.ListIndex = 0 End Sub![]()
Partager