Bonjour à tous,
J'ai besoin d'aide pour corriger ma procédure de filtre dans une listview.
En effet j'ai 8 Comboboxs à partir desquelles je veux lancer ma procédure de filtre c'est à dire:
Ma Combobox1 Filtrée m'affiche des données dans ma combobox2 et dans la listview selon le filtre ainsi de suite jusqu'au 8ème combobox.
J'ai fait en ma manière pour obtenir un résultat qui n'ai pas satisfaisant.
Le premier filtre avec la Combobox1 fonctionne très bien, par contre avec les autres combobox ca ne marche pas car surtout avec la 3ème combobox, rien ne s'affiche dans ma Listview.
Code du Filtre
Code pour Combobox1Code:
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 Sub Filtrer(P As Byte) C = Feuil2.Range("B7:P" & Feuil2.Range("B1048576").End(xlUp).Row).Value With Registre_Pr.Registre .ListItems.Clear For i = 1 To UBound(C, 1) If CStr(C(i, P)) = Registre_Pr.Controls("ComboBox" & P) Then .ListItems.Add , , CDate(C(i, 1)) Lg = .ListItems.Count .ListItems(Lg).ListSubItems.Add , , Format(C(i, 2), "Mm") .ListItems(Lg).ListSubItems.Add , , C(i, 3) .ListItems(Lg).ListSubItems.Add , , C(i, 4) .ListItems(Lg).ListSubItems.Add , , C(i, 5) .ListItems(Lg).ListSubItems.Add , , C(i, 6) .ListItems(Lg).ListSubItems.Add , , C(i, 7) .ListItems(Lg).ListSubItems.Add , , C(i, 8) .ListItems(Lg).ListSubItems.Add , , C(i, 9) .ListItems(Lg).ListSubItems.Add , , C(i, 10) .ListItems(Lg).ListSubItems.Add , , C(i, 11) .ListItems(Lg).ListSubItems.Add , , Format(C(i, 12), "# ### ### CFA") .ListItems(Lg).ListSubItems.Add , , Format(C(i, 13), "# ### ### CFA") .ListItems(Lg).ListSubItems.Add , , Format(C(i, 14), "# ### ### CFA") .ListItems(Lg).ListSubItems.Add , , Format(C(i, 15), "# ### ### CFA") End If Next i End With End Sub
Code pour Combobox2Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 ComboBox2.Clear ComboBox3.Clear ComboBox4.Clear ComboBox5.Clear ComboBox6.Clear ComboBox7.Clear ComboBox8.Clear Set S = CreateObject("Scripting.Dictionary") For Lg = 1 To UBound(C) If CStr(C(Lg, 1)) = ComboBox1.Value Then S(C(Lg, 2)) = "" Next Lg ComboBox2.List = S.keys Filtrer (1)
Code pour Combobox3Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 ComboBox3.Clear ComboBox4.Clear ComboBox5.Clear ComboBox6.Clear ComboBox7.Clear ComboBox8.Clear Set S = CreateObject("Scripting.Dictionary") For Lg = 1 To UBound(C) If CStr(C(Lg, 2)) = ComboBox2.Value Then S(C(Lg, 4)) = "" Next Lg ComboBox3.List = S.keys Filtrer (2)
C'est le même code utilisé pour les autres comboboxs selon les lignes et colonnes.Code:
1
2
3
4
5
6
7
8
9
10
11
12 ComboBox4.Clear ComboBox5.Clear ComboBox6.Clear ComboBox7.Clear ComboBox8.Clear Set S = CreateObject("Scripting.Dictionary") For Lg = 1 To UBound(C) If CStr(C(Lg, 4)) = ComboBox3.Value Then S(C(Lg, 7)) = "" Next Lg ComboBox4.List = S.keys Filtrer (3)
Voici des images d'exécution du code.
1) La procédure marche très bien avec le filtre de ma première combobox (Voir Image 1)
Pièce jointe 656285
2) Avec la deuxième combobox le filtre initialise tous les données du mois pourtant je voulais que ce soit uniquement les données de la date de la première combobox au mois du filtre 2 (Voir Image 2)
Pièce jointe 656286
3) Avec la Combobox 3 rien ne s'affiche du tout pourtant dans l'image 1 vous voyez bien qu'il y'a bien des données (d'impression) (Voir Image 3)
Pièce jointe 656287
Merci de me guider et merci pour votre bonne collaboration