Réaliser dans un userform une combobox dynamique
Résolu/Fermé
whouann
Messages postés
5
Date d'inscription
mardi 3 septembre 2013
Statut
Membre
Dernière intervention
5 septembre 2013
-
3 sept. 2013 à 22:43
foo - 5 sept. 2013 à 19:46
foo - 5 sept. 2013 à 19:46
A voir également:
- Combobox vba liste déroulante dynamique
- Liste déroulante excel - Guide
- Tableau croisé dynamique - Guide
- Liste déroulante en cascade - Guide
- Google sheet liste déroulante - Accueil - Guide bureautique
- Le nom du champ de tableau croisé dynamique n'est pas valide ✓ - Forum Excel
6 réponses
Bonjour,
En fait tu souhaites tout simplement filtrer sur un NOM
Pour alimenter ta combobox je suppose que tu as mis ton code dans L'initalisation du userform comme dans l'exemple ci-dessous :
Sub UserForm_Initialize()
Dim Nb_Lgn As Long, y As Byte
Nb_Lgn = Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row
For y = 2 To Nb_Lgn
Manitou.ComboBox1.AddItem Sheets("Feuil1").Cells(y, 1) 'Alimente le NOM
Manitou.ComboBox2.AddItem Sheets("Feuil1").Cells(y, 2) 'Alimente le Prénom
Next i
End Sub
Pour le Filtrage il suffit de démarrer une macro au changement de contenu de la Combobox1
Sur ton userform double click sur ton ComboBox1, il génèrera automatique la macro ComboBox_Change
Copie ensuite le code suivant :
Sub ComboBox1_Change()
Dim Nb_Lgn As Long, y As Byte, NOM_Lgn As Variant
UserForm1.ComboBox2.Clear 'Vide la ComboBox2
Nb_Lgn = Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row
For y = 2 To Nb_Lgn
NOM_Lgn = Sheets("Feuil1").Cells(y, 1)
If NOM_Lgn = UserForm1.ComboBox1 Then
UserForm1.ComboBox2.AddItem Sheets("Feuil1").Cells(y, 2)
End If
Next i
End Sub
Voilà,
A chaque changement de Nom dans ta combobox1, il videra le contenu de la ComboBox2 et alimentera uniquement les prénoms dont le Nom sera identique à ta sélection.
Si tu as renommé ton Userform, penses à remplacer tout les Userform1 par le nom que tu lui a donné.
En fait tu souhaites tout simplement filtrer sur un NOM
Pour alimenter ta combobox je suppose que tu as mis ton code dans L'initalisation du userform comme dans l'exemple ci-dessous :
Sub UserForm_Initialize()
Dim Nb_Lgn As Long, y As Byte
Nb_Lgn = Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row
For y = 2 To Nb_Lgn
Manitou.ComboBox1.AddItem Sheets("Feuil1").Cells(y, 1) 'Alimente le NOM
Manitou.ComboBox2.AddItem Sheets("Feuil1").Cells(y, 2) 'Alimente le Prénom
Next i
End Sub
Pour le Filtrage il suffit de démarrer une macro au changement de contenu de la Combobox1
Sur ton userform double click sur ton ComboBox1, il génèrera automatique la macro ComboBox_Change
Copie ensuite le code suivant :
Sub ComboBox1_Change()
Dim Nb_Lgn As Long, y As Byte, NOM_Lgn As Variant
UserForm1.ComboBox2.Clear 'Vide la ComboBox2
Nb_Lgn = Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row
For y = 2 To Nb_Lgn
NOM_Lgn = Sheets("Feuil1").Cells(y, 1)
If NOM_Lgn = UserForm1.ComboBox1 Then
UserForm1.ComboBox2.AddItem Sheets("Feuil1").Cells(y, 2)
End If
Next i
End Sub
Voilà,
A chaque changement de Nom dans ta combobox1, il videra le contenu de la ComboBox2 et alimentera uniquement les prénoms dont le Nom sera identique à ta sélection.
Si tu as renommé ton Userform, penses à remplacer tout les Userform1 par le nom que tu lui a donné.
whouann
Messages postés
5
Date d'inscription
mardi 3 septembre 2013
Statut
Membre
Dernière intervention
5 septembre 2013
4 sept. 2013 à 17:08
4 sept. 2013 à 17:08
Super,
merci beaucoup à tous pour la qualité et la rapidité de vos réponses.
Je teste cela dés que possible.
Encore merci
Whouann
merci beaucoup à tous pour la qualité et la rapidité de vos réponses.
Je teste cela dés que possible.
Encore merci
Whouann
Bonjour
voila la rectif
Dim Nb_Lgn As Long, Lig As Byte
Nb_Lgn = Feuil12.Range("B" & Rows.Count).End(xlUp).Row
For Lig = 1 To Nb_Lgn
ComboBoxetape1.AddItem Feuil12.Cells(Lig, 2)
ComboBoxpanne1.AddItem Feuil12.Cells(Lig, 3)
Next
A+
Maurice
voila la rectif
Dim Nb_Lgn As Long, Lig As Byte
Nb_Lgn = Feuil12.Range("B" & Rows.Count).End(xlUp).Row
For Lig = 1 To Nb_Lgn
ComboBoxetape1.AddItem Feuil12.Cells(Lig, 2)
ComboBoxpanne1.AddItem Feuil12.Cells(Lig, 3)
Next
A+
Maurice
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
whouann
Messages postés
5
Date d'inscription
mardi 3 septembre 2013
Statut
Membre
Dernière intervention
5 septembre 2013
5 sept. 2013 à 18:46
5 sept. 2013 à 18:46
Ca marche, et dernière question:
comment retirer les doublons du menu déroulant?
Merci pour le temps accordé, ca fait plaisir.
Whouann
comment retirer les doublons du menu déroulant?
Merci pour le temps accordé, ca fait plaisir.
Whouann
5 sept. 2013 à 15:52
je viens de mettre ton code en application, mais un message d'eereur apparait lorsque je le lance:
"erreur d'exécution '438'
Propriété ou méthode non gérée par cet objet"
Merci encore de ton aide
Voici le code tel que je l'ai transcrit:
Private Sub ComboBoxetape1_Change()
'combobox1 correspond à comboboxetape1
'combobox2 correspond à comboxpanne1
'userform1 correspond à userformerca
'j'ai décallé de 1 les valeurs car je n'ai pas de ligne correspondant au titre des colonnes
Dim Nb_Lgn As Long, y As Byte, NOM_Lgn As Variant
UserFormerca.ComboBoxpanne1.Clear
Nb_Lgn = Sheets("base").Cells(Rows.Count, 2).End(xlUp).Row
For y = 1 To Nb_Lgn
NOM_Lgn = Sheets("base").Cells(y, 2)
If NOM_Lgn = UserFormerca.ComboBoxetape1 Then
UserFormerca.ComboBoxpanne1.AddItem Sheets("base").Cells(y, 3)
End If
Next y
End Sub
Private Sub UserForm_Initialize()
Dim Nb_Lgn As Long, y As Byte
Nb_Lgn = Sheets("base").Cells(Rows.Count, 2).End(xlUp).Row
For y = 1 To Nb_Lgn
Manitou.ComboBoxetape1.AddItem Sheets("base").Cell(y, 2)
Manitou.ComboBoxpanne1.AddItem Sheets("base").Cell(y, 3)
Next y
TextBoxdate.Value = Format(Now(), "dd/mm/yyyy")
TextBoxcodeproduit.Value = ""
ComboBoxetape1.Enabled = True
ComboBoxetape2.Enabled = False
ComboBoxetape3.Enabled = False
ComboBoxetape4.Enabled = False
ComboBoxetape5.Enabled = False
ComboBoxetape6.Enabled = False
ComboBoxpanne1.Enabled = True
ComboBoxpanne2.Enabled = False
ComboBoxpanne3.Enabled = False
ComboBoxpanne4.Enabled = False
ComboBoxpanne5.Enabled = False
ComboBoxpanne6.Enabled = False
ComboBoxcause1.Enabled = False
ComboBoxcause2.Enabled = False
ComboBoxcause3.Enabled = False
ComboBoxcause4.Enabled = False
ComboBoxcause5.Enabled = False
ComboBoxcause6.Enabled = False
TextBoxquantite1.Enabled = False
TextBoxquantite2.Enabled = False
TextBoxquantite3.Enabled = False
TextBoxquantite4.Enabled = False
TextBoxquantite5.Enabled = False
TextBoxquantite6.Enabled = False
End Sub
5 sept. 2013 à 16:22
https://www.cjoint.com/?CIfqwa9X1HZ