Bonjour,
Dans un UserForm, j'ai une Listbox que j'aimerais alimenter à partir d'une plage de cellules filtrées. Je procède ainsi : je filtre ma plage de cellule, puis j'alimente ma Listbox, grâce à la propriété List et à la propriété SpecialCells(xlCellTypeVisible) pour la plage de cellule.
Seulement, ma ListBox ne prend pas en compte toutes les cellules visibles. Elle prend en compte seulement les premières cellules (jusqu'à la première cellule non visible exclue). Par exemple avec les valeurs suivantes:
FAUX
FAUX
VRAI
FAUX
Si je filtre sur FAUX, la ListBox ne m'affichera que les 2 premières lignes.
Voici mon code :
Pour faire des tests, j'ai fait un copié-collé de la plage de cellules visibles et j'ai bien toutes les lignes visibles qui sont collées. Donc, a priori, c'est bien au niveau de la ListBox qu'il y a un problème.
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 Private Sub okButton_Click() '**** GET THE OPEN WORK ASSOCIATED TO CATEGORY FROM COMBOBOX **** Dim filterNum As Integer Dim row_n As Long 'conditions pour obtenir filterNum --> pas intéressant pour la question With Sheets("Selection table") row_n = .Cells(Rows.Count, 1).End(xlUp).Row If filterNum <> 0 Then .Range("$A$1:$J$" & row_n).AutoFilter Field:=filterNum, Criteria1:=Sheets("Database").Range("CH1").Text 'filtre sur un tableau (ça marche comme il faut) End If Me.declaListBox.List = .Range("A2:F" & row_n).SpecialCells(xlCellTypeVisible).Value 'je veux récupérer dans la Listbox seulement les cellules visibles après le filtre. If filterNum <> 0 Then .Range("$A$1:$J$" & row_n).AutoFilter Field:=filterNum End With End Sub
Voyez-vous le problème?
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 Private Sub okButton_Click() '**** GET THE OPEN WORK ASSOCIATED TO CATEGORY FROM COMBOBOX **** Dim filterNum As Integer Dim row_n As Long 'conditions pour obtenir filterNum --> pas intéressant pour la question With Sheets("Selection table") row_n = .Cells(Rows.Count, 1).End(xlUp).Row If filterNum <> 0 Then .Range("$A$1:$J$" & row_n).AutoFilter Field:=filterNum, Criteria1:=Sheets("Database").Range("CH1").Text 'filtre sur un tableau (ça marche comme il faut) End If .Range("A2:F" & row_n).SpecialCells(xlCellTypeVisible).Copy destination:=.Range("A10") Me.declaListBox.List = .Range("A2:F" & row_n).SpecialCells(xlCellTypeVisible).Value 'je veux récupérer dans la Listbox seulement les cellules visibles après le filtre. If filterNum <> 0 Then .Range("$A$1:$J$" & row_n).AutoFilter Field:=filterNum End With End Sub
Merci beaucoup pour votre aide
Partager