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 Combobox1
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
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 Combobox2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Combobox3
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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)
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)
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)
Merci de me guider et merci pour votre bonne collaboration
Partager