Filtrer une colonne avec une listbox

Résolu
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 - 25 sept. 2014 à 08:26
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 - 25 sept. 2014 à 17:10
Bonjour le forum,

Donc voilà, je reviens vers vous avec un nouveau problème, je vous explique :

J'ai une feuille nommé bilan, sur ce bilan se trouve plusieurs colonne dont une nommée semaine, de là, j'ai créé un USF avec une ListBox, 2 boutons

1 pour lancer le filtre, et un pour annulé mais mon code ne fonctionne pas, j'ai voulu me débrouiller, mais pas bon...

Le but est de filtrer la colonne semaine, a savoir que le multiselect est utilisé, c'est peut être là mon problème...

Voici le code :

Private Sub CommandButton1_Click()
'code du filtre à mettre en place
Dim lbVal As Long

If ListBox2.ListIndex = -1 Then Exit Sub
'Not sure that I need the next line. Listbox is a SingleSelect.
For i = ListBox2.ListCount - 1 To 0 Step -1
If ListBox2.Selected(i) = True Then
lbVal = ListBox2.Selected(i)
Range("B3:B").AutoFilter Field:=lbVal, Criteria1:=lbVal
End If
Next i
End Sub

Je ne vous cache pas que ça ne fonctionne pas...

Auriez vous une solution ?

Merci à tous et bonne journée

Christian

--

4 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
25 sept. 2014 à 10:14
Bonjour,

Je constate plusieurs erreurs dans ton code.
La première étant sur la ligne :
 Range("B3:B").AutoFilter Field:=lbVal, Criteria1:=lbVal

Tu n'aurais pas oublié quelque chose dans le RANGE ?

Ensuite .. FIELD : C'est le Numéro de la colonne où appliquer le filtre

Criteria(1,2,3,..) : on lui passe une "string"

Et enfin.. si ta liste est en multiselect... il y donc plusieurs FILTRES à appliquer (plusieurs critères) sur la même colonne.
Il ne faut pas appliquer CHAQUE filtre les UNS après les autres... mais tous en même temps.

Si tu utilises ton enregistreur de macros, tu verras que le code à utiliser ressemble à :
'activation du filtre sur la ligne où je me trouve
Range("A1").Select
 Selection.AutoFilter
'j'ai mis deux critères : 
    ActiveSheet.Range("$A$1:$D$8").AutoFilter Field:=2, Criteria1:="=dfs", _
        Operator:=xlOr, Criteria2:="=dfsdfsg"


0