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
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 :)
A voir également:

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
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
2
Ca fonctionne! Merci beaucoup pour votre temps et votre patience! :)
0
f894009 Messages postés 17224 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 12 janvier 2025 1 712
8 nov. 2012 à 07:43
Bonjour,
Pas de probleme.

Bonne continuation
0
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
Bonjour,

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+
0
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.
0
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
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.
0
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?
0
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
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
0
Re,

Ca ne fonctionne toujours pas :(
Désolé de vous prendre votre temps ainsi.
Voici un lien sur lequel vous pourrez trouver mon tableau et peut être déceler l'erreur:
https://www.box.com/s/b2mcx6ebwvrm3wuxv576
0