Bonjour,

J'ai créer une listBox dans le but de filtrer les éléments d'une feuille excel. Je remplie cette ListBox avec une plage de cellule que j'applique dans les propriété de la ListBox. de plus j'utilise la fonction MultiCritere pour des sélections multiples.

Comment il faut faire pour indexer la liste. Le but étant de maintenir la sélection de la liste après le filtre.

et comment délectionner les éléments de façon efficace sans les détruires.

j'ai réussi a faire le tout, mais en ajoutant une colonne dans ma ListBox. Je crois qu'il y a une méthode plus simple que la mienne pour le faire et de plus, ma méthode a une faille énorme si je ne sais pas la taille de ma ListBox.



Je peux joindre mon exemple si cela peut vous être utile. pour l'instant, je vous joint une partie de mon code.

Merci de votre aide.

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
30
31
32
33
34
35
36
37
38
39
 
Private Sub CommandButton1_Click()
 
Dim MyArray(12) As String
Dim InString() As String
Dim i, j, x As Integer
 
For i = 0 To Me.ListBox1.ListCount - 1
 
If Me.ListBox1.Selected(i) = True Then
MyArray(i) = ListBox1.Column(1, i)
Else
MyArray(i) = 0
End If
 
Next i
'Debug.Print ListBox1.List(i)
InString = Filter(MyArray, 0, False)
 
 ActiveSheet.Range("$D$1:$F$15").AutoFilter Field:=2, Criteria1:=InString, Operator:=xlFilterValues
 
InString = Filter(MyArray, 0, False)
For i = 0 To UBound(InString)
Debug.Print InString(i)
 
Next i
 
For i = 0 To 11
  For j = 0 To 11
 
  If MyArray(i) Like ListBox1.Column(1, j) Then
    x = ListBox1.Column(0, j) - 1
    ListBox1.Selected(x) = True
  End If
 
   Next j
Next i
 
End Sub