Bonjour à tous,
Je me permets de vous soumettre 1 problème que je rencontre.
A l'ouverture d'un Userform, j'affiche le contenu d'une feuille excel dans une Listbox avec ce bout de code :
Et un module :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub UserForm_Initialize() Call MAJ End Sub
Jusque là ça fonctionne.
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 Sub MAJ() 'mise à zéro du compteur ligne k = 0 'recherche de la dernière ligne du tableau excel derligne1 = Split(Worksheets("BDD").UsedRange.Address, "$")(4) With FormGen 'nom du formulaire .ListEssai.Clear 'réinitialisation du contenu de la liste 'ouverture de la boucle de la ligne 2 à la dernière ligne du tableau excel For j = 2 To derligne1 .ListEssai.AddItem 'ajout des items .ListEssai.List(k, 0) = Worksheets("BDD").Range("A" & j).Value 'remplissage ligne 0 colonne 0 .ListEssai.List(k, 1) = Worksheets("BDD").Range("B" & j).Value 'remplissage ligne 0 colonne 1 .ListEssai.List(k, 2) = Worksheets("BDD").Range("C" & j).Value 'remplissage ligne 0 colonne 2 .ListEssai.List(k, 3) = Worksheets("BDD").Range("D" & j).Value 'remplissage ligne 0 colonne 3 .ListEssai.List(k, 4) = Worksheets("BDD").Range("E" & j).Value 'remplissage ligne 0 colonne 4 .ListEssai.List(k, 5) = Worksheets("BDD").Range("F" & j).Value 'remplissage ligne 0 colonne 5 .ListEssai.List(k, 6) = Worksheets("BDD").Range("H" & j).Value 'remplissage ligne 0 colonne 6 .ListEssai.List(k, 7) = Worksheets("BDD").Range("I" & j).Value 'remplissage ligne 0 colonne 7 .ListEssai.List(k, 8) = Worksheets("BDD").Range("J" & j).Value 'remplissage ligne 0 colonne 8 .ListEssai.List(k, 9) = Worksheets("BDD").Range("K" & j).Value 'remplissage ligne 0 colonne 9 k = k + 1 'passage à la ligne suivante Next j End With End Sub
L'utilisateur peut ensuite filtrer la liste.
En fait, je recharge toute la liste en fonction du critère sélectionné par l'utilisateur :
Ca aussi ça fonctionne.
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 If OptionButton2.Value = True Then 'filtre par phase k = 0 'recherche de la dernière ligne du tableau excel derligne1 = Split(Worksheets("BDD").UsedRange.Address, "$")(4) With FormGen 'nom du formulaire .ListEssai.Clear 'réinitialisation du contenu de la liste 'ouverture de la boucle de la ligne 2 à la dernière ligne du tableau excel For j = 2 To derligne1 .ListEssai.AddItem 'ajout des items If Worksheets("BDD").Range("E" & j).Value = ComboBox2.Value Then .ListEssai.List(k, 0) = Worksheets("BDD").Range("A" & j).Value 'remplissage ligne 0 colonne 0 .ListEssai.List(k, 1) = Worksheets("BDD").Range("B" & j).Value 'remplissage ligne 0 colonne 1 .ListEssai.List(k, 2) = Worksheets("BDD").Range("C" & j).Value 'remplissage ligne 0 colonne 2 .ListEssai.List(k, 3) = Worksheets("BDD").Range("D" & j).Value 'remplissage ligne 0 colonne 3 .ListEssai.List(k, 4) = Worksheets("BDD").Range("E" & j).Value 'remplissage ligne 0 colonne 4 .ListEssai.List(k, 5) = Worksheets("BDD").Range("F" & j).Value 'remplissage ligne 0 colonne 5 .ListEssai.List(k, 6) = Worksheets("BDD").Range("H" & j).Value 'remplissage ligne 0 colonne 6 .ListEssai.List(k, 7) = Worksheets("BDD").Range("I" & j).Value 'remplissage ligne 0 colonne 7 .ListEssai.List(k, 8) = Worksheets("BDD").Range("J" & j).Value 'remplissage ligne 0 colonne 8 .ListEssai.List(k, 9) = Worksheets("BDD").Range("K" & j).Value 'remplissage ligne 0 colonne 9 k = k + 1 'passage à la ligne suivante Else End If Next j End With ElseIf ...
Par contre, lorsque j'essaie de récupérer le nombre de lignes de ma listbox j'ai des résultats incohérents.
Me renvoie 8 à l'initialisation du formulaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox FormGen.ListEssai.ListCount
Mais renvoie 8 aussi après filtrage, ce qui n'est pas exact.
On dirait qu'il me renvoie toujours le nombre de lignes intégrées la première fois...
Merci pour vos idées.
Bonne journée








Répondre avec citation
Partager