Menu déroulant cascade formulaire VBA

Bonjour,

Je suis déjà venu vers vous pour ces menus déroulants en cascade. Je n'arrive pas à reproduire le code pour mon nouveau document...

Vous avez dans l'onglet "Listes" des noms et des prénoms.

J'ai créé un formulaire pour remplir mon onglet calcul.

Je voudrais que ma Combobox2(Prénom) tienne compte de ce qui est renseigné dans la ComboBox1(Nom) afin d'avoir une liste de prénoms réduite...

Lorsque je veux lancer la macro de mon formulaire, le message "Erreur de compilation: variable non définie" s'affiche...

Vous trouverez en pièce-jointe mon document.

Je vous remercie.

105classeur1.xlsm (23.51 Ko)

bonjour,

proposition de correction

Private Sub UserForm_Initialize() 'à l'initilisation de l'UserForm

Dim DL As Integer 'déclare la variable DL (Dernière Colonne)

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Calcul")
Set L = Worksheets("Listes") 'définit l'onglet L
Set H = Worksheets("Calcul") 'définit l'onglet H
DL = L.Cells(3, 2).End(xlDown).Row 'définit la dernière ligne éditée DL de la colonne 2
Me.ComboBox1.List = Application.Transpose(L.Range(L.Cells(3, 2), L.Cells(DL, 2)).Value) 'alimente la ComboBox1 avec les valeurs de la plage allant des colonnes 3 à DC de la ligne 112
End Sub

Merci beaucoup!

Par contre je ne comprend pas pourquoi lorsque je sélectionne un nom, tous les prénoms apparaissent ?

L'idée étant que lorsque je sélectionne un nom, les prénoms portant le nom sélectionné apparaissent et seulement eux...

Dois-je plutôt faire un tableau avec en intitulé de colonnes les noms et en dessous la liste des prénoms portant ce nom?

Je vous remercie

re-bonjour,

voici une correction

Private Sub ComboBox1_Change()    'au changement dans la ComboBox1
    Dim i As Long
    Me.ComboBox2.Clear    'vide la ComboBox2
    If Me.ComboBox1.Value = "" Then Exit Sub    'si la ComboBox1 est effacée, sort de la procédure
    For i = 1 To L.Cells(3, 2).End(xlDown).Row
        If L.Cells(i, 2) = Me.ComboBox1.Value Then 'si nom = combobox1
            Me.ComboBox2.AddItem L.Cells(i, 3).Value    ' ajouter prénom à combobox2
        End If
    Next i
End Sub

Merci beaucoup!!

Rechercher des sujets similaires à "menu deroulant cascade formulaire vba"