VBA, Excel: Tri de valeur selectionnées dans Listbox
Zovixel
-
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je suis un grand novice du VBA. J'ai un problème lorsque je veux filtrer les différentes données d'une ListBox.
Voici mon code:
________________________________________________________________________
Private Sub OK_Click()
Dim lItem As Long
For lItem = 0 To ListBoxLines.ListCount - 1
If ListBoxLines.Selected(lItem) = True Then
ActiveSheet.Range("$A$3:$BH$800").AutoFilter Field:=11, Criteria1:=ListBoxLines.List(lItem)
ListBoxLines.Selected(lItem) = False
End If
Next
' Fermer fenêtre après avoir selectionné commande
Unload Me
End Sub
________________________________________________________________________
Le code fonctionne mais dès lors que plusieurs données sont sélectionnées dans la ListBox le résultat du filtre n'est que la dernière donnée qui a été sélectionnée et non toutes les sélections.
Comment faire pour que toutes les données sélectionnées dans la ListBox soient prises en compte par le filtre et pas uniquement la dernière?
Merci de votre réponse :)
Je suis un grand novice du VBA. J'ai un problème lorsque je veux filtrer les différentes données d'une ListBox.
Voici mon code:
________________________________________________________________________
Private Sub OK_Click()
Dim lItem As Long
For lItem = 0 To ListBoxLines.ListCount - 1
If ListBoxLines.Selected(lItem) = True Then
ActiveSheet.Range("$A$3:$BH$800").AutoFilter Field:=11, Criteria1:=ListBoxLines.List(lItem)
ListBoxLines.Selected(lItem) = False
End If
Next
' Fermer fenêtre après avoir selectionné commande
Unload Me
End Sub
________________________________________________________________________
Le code fonctionne mais dès lors que plusieurs données sont sélectionnées dans la ListBox le résultat du filtre n'est que la dernière donnée qui a été sélectionnée et non toutes les sélections.
Comment faire pour que toutes les données sélectionnées dans la ListBox soient prises en compte par le filtre et pas uniquement la dernière?
Merci de votre réponse :)
A voir également:
- VBA, Excel: Tri de valeur selectionnées dans Listbox
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
- Déplacer colonne excel - Guide
2 réponses
Re,
il faut prendre toutes les colonnes pour plage:-----> A3:D400
le filtre est sur le champ 3 pas 1, sauf erreur de ma part.
https://www.cjoint.com/?BKhqUMeSWOx
Bon courage
il faut prendre toutes les colonnes pour plage:-----> A3:D400
le filtre est sur le champ 3 pas 1, sauf erreur de ma part.
https://www.cjoint.com/?BKhqUMeSWOx
Bon courage
Bonjour,
Si j'ai bien compris ce que vous voulez: adaptez la plage pour le filtre
A+
Si j'ai bien compris ce que vous voulez: adaptez la plage pour le filtre
Private Sub Ok_Click()
Dim lItem As Long
'Tableau a dimensionner suivant le nombre maxi de choix
Dim Choix(12) As String
Dim x
For lItem = 0 To ListBoxLines.ListCount - 1
If ListBoxLines.Selected(lItem) = True Then
Choix(x) = ListBoxLines.List(lItem)
ListBoxLines.Selected(lItem) = False
x = x + 1
End If
Next
'Efface filtre ADAPTER la plage
ActiveSheet.Range("$A$1:$A$19").AutoFilter Field:=1
'Filtre(s) idem plage mettre les variables au maxi choix(x),ici 12
ActiveSheet.Range("A1:A19").AutoFilter Field:=1, _
Criteria1:=Array(Choix(0), Choix(1), Choix(2), Choix(3), _
Choix(4), Choix(5), Choix(6), Choix(7), _
Choix(8), Choix(9), Choix(10), Choix(11), Choix(12)) _
, Operator:=xlFilterValues
'Fermer fenêtre après avoir selectionné commande
Unload Me
End Sub
A+
Hello,
Non ce n'est pas tout à fait cela. J'ai plusieurs choix en texte dans ma listbox et j'aimerais que mon filtre prenne en compte toutes les valeurs selectionnées dans cette listbox. Le code que j'avais donné dans le sujet fonctionnait mais il ne filtrait que sur la dernière valeur qui était sélectionnée.
Non ce n'est pas tout à fait cela. J'ai plusieurs choix en texte dans ma listbox et j'aimerais que mon filtre prenne en compte toutes les valeurs selectionnées dans cette listbox. Le code que j'avais donné dans le sujet fonctionnait mais il ne filtrait que sur la dernière valeur qui était sélectionnée.
J'ai copié tel quel votre code et l'ai adapté à mon tableau (15 choix au maximum, tableau qui a 400 lignes maxi et 53 colonnes, filtre de la listbox sur la 11eme colonne). Mais lorsque je le lance j'ai le message d'erreur suivant: "Run-time error '1004': Autofilter method of Range class failed" le debug me surligne la ligne après le commentaire " 'Efface filtre ADAPTER la plage "
Voici le code tel qu'il est adapté:
Private Sub Ok_Click()
Dim lItem As Long
'Tableau a dimensionner suivant le nombre maxi de choix
Dim Choix(15) As String
Dim x
For lItem = 0 To ListBoxLines.ListCount - 1
If ListBoxLines.Selected(lItem) = True Then
Choix(x) = ListBoxLines.List(lItem)
ListBoxLines.Selected(lItem) = False
x = x + 1
End If
Next
'Efface filtre ADAPTER la plage
ActiveSheet.Range("$A$3:$BA$400").AutoFilter Field:=11
'Filtre(s) idem plage mettre les variables au maxi choix(x),ici 12
ActiveSheet.Range("a1:BA400").AutoFilter Field:=11, _
Criteria1:=Array(Choix(0), Choix(1), Choix(2), Choix(3), _
Choix(4), Choix(5), Choix(6), Choix(7), _
Choix(8), Choix(9), Choix(10), Choix(11), Choix(12), Choix(13), Choix(14), Choix(15)) _
, Operator:=xlFilterValues
'Fermer fenêtre après avoir selectionné commande
Unload Me
End Sub
___________________________________________________________________________
Est-il possible que le problème vienne du fait que toutes les valeurs ne soient pas forcément selectionnées pour le filtre?
Voici le code tel qu'il est adapté:
Private Sub Ok_Click()
Dim lItem As Long
'Tableau a dimensionner suivant le nombre maxi de choix
Dim Choix(15) As String
Dim x
For lItem = 0 To ListBoxLines.ListCount - 1
If ListBoxLines.Selected(lItem) = True Then
Choix(x) = ListBoxLines.List(lItem)
ListBoxLines.Selected(lItem) = False
x = x + 1
End If
Next
'Efface filtre ADAPTER la plage
ActiveSheet.Range("$A$3:$BA$400").AutoFilter Field:=11
'Filtre(s) idem plage mettre les variables au maxi choix(x),ici 12
ActiveSheet.Range("a1:BA400").AutoFilter Field:=11, _
Criteria1:=Array(Choix(0), Choix(1), Choix(2), Choix(3), _
Choix(4), Choix(5), Choix(6), Choix(7), _
Choix(8), Choix(9), Choix(10), Choix(11), Choix(12), Choix(13), Choix(14), Choix(15)) _
, Operator:=xlFilterValues
'Fermer fenêtre après avoir selectionné commande
Unload Me
End Sub
___________________________________________________________________________
Est-il possible que le problème vienne du fait que toutes les valeurs ne soient pas forcément selectionnées pour le filtre?
Pas de probleme.
Bonne continuation