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 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
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
Le 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
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
Nom : apercu.JPG
Affichages : 1619
Taille : 30,0 Ko