VBA Liste déroulante pour filtrer une base

Bonjour à tous,

Je suis un grand débutant en VBA, mais mon objectifs est de créer un userform avec plusieurs listes déroulantes, qui serait dépendante les unes des autres (la deuxième liste se modifie en fonction de la première). J'ai déjà longuement cherché, j'ai cru comprendre qu'une astuce constituait à nommer les cellules, mais mon tableau étant assez dense 3500 lignes, c'est difficile à envisager ...

Ces listes déroulantes doivent me permettre de filtrer ce tableau un peu de la même façon qu'un filtre automatique.

Je ne tiens pas à utiliser le filtre automatique afin de faciliter au maximum l'utilisation pour l'utilisateur.

Ah oui aussi comment faire pour retirer les doublons dans une liste déroulante ? J'ai vu des partie de code en cherchant, mais vu que je débute ça m'a un peu embrouillé ...

Voila, en tout cas vous avez l'air super sympa sur ce forum, je tenais à le dire !

5 réponses

  1. J'ai réussi à supprimer les doublons de mes listes déroulantes ! Mais j'ai eu du mal ^^

    Voila ce que j'ai fais :

    Private Sub UserForm_Initialize()
        Dim i As Integer 
        For i = 1 To Range("C60000").End(xlUp).Row
        Combobox1 = Range("C" & i)
     
       If Combobox1.ListIndex = -1 And Range("C" & i) <> "" Then
       Combobox1.AddItem Range("C" & i)
       End If 
      Next i  
      End sub


    Par contre je bloque toujours complètement pour filtrer ma liste à partir de mes Combo box, toujours ce même message d'erreur.

    Et pareil pour la communication entre les Combo box, je ne m'en sors pas :(
    1
    1. J'ai trouvé pour le filtre si jamais quelqu'un se pose la même question !
      Le problème venait bien du range, ou plutôt du "selection" :

      En le mettant comme ça ça marche.
      Range("A1", "M1").Select
      [C3].AutoFilter Field:=3, Criteria1:=Combobox1.Value


      Par contre je galère toujours pour mettre mes combo box en cascades, mais je reprend espoir !
      1
      1. Je détaille peut être un peut plus :

        Private Sub ComboBox1_Change()

        Label1.Caption = Combobox1.Value

        Windows("Description_technique_des_appareils2.xls").Activate
        Selection.AutoFilter field:=3, Criteria1:=Combobox1.Value
        Combobox2.SetFocus
        End sub

        Voila mon code pour réaliser le filtrage de ma base grâce à la première Combo box.
        Lorsque je lance le programme, le filtrage se fait comme il faut mais une erreur apparait:
        "La méthode Autofilter de la classe range à échoué"

        D'où vient cette erreur et comment la corriger ?
        0
        1. Bonjour,

          Je pense que le problème vient de "Selection".
          La sélection n'est pas définie. Il faut sélectionner la plage à trier.
          Par exemple:
          Range("A2:F15").Select
          Selection.AutoFilter field:=3, Criteria1:=Combobox1.Value 


          ;o)
          0
          1. Merci, j'ai essayé mais j'ai la même erreur ...
            0