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 : 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 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
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 Combobox2

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)
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
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)
C'est le même code utilisé pour les autres comboboxs selon les lignes et colonnes.

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)

Nom : 1.png
Affichages : 395
Taille : 50,5 Ko

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)

Nom : 2.png
Affichages : 364
Taille : 76,0 Ko

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)

Nom : 3.png
Affichages : 344
Taille : 16,4 Ko

Merci de me guider et merci pour votre bonne collaboration