Tri automatique et listbox

Résolu
Bonjour,

Je cherche actuellement à créer un outil pour faciliter le tri dans une liste excel. En résumé, j'ai un certain nombre de documents (lignes) avec des critères remplis ou non (colonnes), et je voulais créer un système pour rendre la recherche plus "user friendly".

Je cherche à lancer un tri/filtrage dans ma feuille excel en selectionnant 6 critères: j'ai créé 6 listbox, en option multiselect, qui listent les options de 6 critères. Après, j'ai un bouton recherche qui est sensé enregistrer ces critères et lancer un tri en fonction. Le problème, c'est que je n'arrive pas à récupérer ces critères. Ca marchait pour des listbox à sélection unique, mais il faudrait pouvoir sélectionner plusieurs options, sinon il suffirait de cliquer sur chaque filtre...

Je souhaiterais éviter d'utiliser un userform et plutôt rester sur la même page. Comment donc recuperer les multiples critères de chaque listbox? Quelle commande utiliser ?

Un très grand merci d'avance aux âmes charitables qui voudront bien m'aider!!

Arnaud

3 réponses

  1. Modérateur
    Bonjour,
    Il convient de boucler sur les lignes de chaque ListBox et de tester si elles sont sélectionnées. Attention toutefois, si aucune ligne n'est sélectionnée, on opeux avoir un message d'erreur. On va donc contourner ça. Essaye ceci :
    Dim i As Byte
    If ListBox1.ListIndex = -1 Then Exit Sub
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then 
            MsgBox ListBox1.List(i)
        End If
    Next i
    1. Bonjour Pikaju,
      merci pour ta réponse rapide.

      Je viens d'essayer, et je recois un message d'erreur:

      Runtime error 424, ""Object"" Required

      On dirait qu'il ne reconnait pas ma listbox, mais je ne vois pas quoi faire. Pour info je l'avais inserée avec les outils developpeur.

      Arnaud
      1. Modérateur
        ok. PadSouci!!!!
        Essaye donc plutôt ceci : ADAPTE ListBox1 avec le nom d'une de tes listboxes...

        Sub test()
        Dim i As Byte
        If Sheets("Feuil1").ListBox1.ListIndex = -1 Then Exit Sub
        For i = 0 To Sheets("Feuil1").ListBox1.ListCount - 1
            If Sheets("Feuil1").ListBox1.Selected(i) = True Then
                MsgBox Sheets("Feuil1").ListBox1.List(i)
            End If
        Next i
        End Sub
    2. Ach soooo! c'était pas très compliqué pourtant!
      Merci beaucoup Pikaju, me reste plus qu'a restocker les valeurs sous formes de critères pour mes tris et c'est bon!
      Bonne journée, merci encore!