ListBox indexé multisélection
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:
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 |