VBA, Excel: Tri de valeur selectionnées dans Listbox
Fermé
Zovixel
-
31 oct. 2012 à 13:28
f894009 Messages postés 17224 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 12 janvier 2025 - 8 nov. 2012 à 07:43
f894009 Messages postés 17224 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 12 janvier 2025 - 8 nov. 2012 à 07:43
A voir également:
- VBA, Excel: Tri de valeur selectionnées dans Listbox
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
- Déplacer une colonne excel - Guide
2 réponses
f894009
Messages postés
17224
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 janvier 2025
1 712
7 nov. 2012 à 16:49
7 nov. 2012 à 16:49
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
f894009
Messages postés
17224
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 janvier 2025
1 712
31 oct. 2012 à 16:25
31 oct. 2012 à 16:25
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.
f894009
Messages postés
17224
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 janvier 2025
1 712
6 nov. 2012 à 14:41
6 nov. 2012 à 14:41
Bonjour,
Vous etes sur de ce que vous voulez, parce que le code que je vous ai fourni filtre avec tout les choix que vous faites.
Vous etes sur de ce que vous voulez, parce que le code que je vous ai fourni filtre avec tout les choix que vous faites.
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?
f894009
Messages postés
17224
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 janvier 2025
1 712
6 nov. 2012 à 15:25
6 nov. 2012 à 15:25
Re,
Remplacez ActiveSheet par Worksheets("feuil1") en mettant le nom de la feuille du filtre ( 2 remplacements), parce que la feuille du filtre n'est pas active quand vous lancez le programme filtre
Remplacez ActiveSheet par Worksheets("feuil1") en mettant le nom de la feuille du filtre ( 2 remplacements), parce que la feuille du filtre n'est pas active quand vous lancez le programme filtre
7 nov. 2012 à 19:58
8 nov. 2012 à 07:43
Pas de probleme.
Bonne continuation