Problème Combobox en cascade

Ricky_77 Messages postés 2 Date d'inscription vendredi 4 janvier 2019 Statut Membre Dernière intervention 4 janvier 2019 - 4 janv. 2019 à 03:40
cs_Le Pivert Messages postés 7902 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 novembre 2023 - 5 janv. 2019 à 10:59
Bonjour tout le monde,

Je suis en train de créer un Userform avec 2 ComBox en cascade. J'ai essayé 2-3 manières de faire chercher des solution sur le forum et sur Google, mais je n'arrive pas à trouvé le bon code en feuilletant différents forum. Je suis débutant et j'ai office 2016.

Mon problème est _: j'ai une feuille nommée BaseDonnee qui comporte un bouton ou il y a une macro pour ouvrir un USF (NFormulaire) dans cet Userform j'ai un premier combox (C-Dep) ou je peux choisir le département en question DriveIn, Bois; peinture, etc et j'aimerais associer le nom des personnes de c'est différents secteurs dans le Combox 2 (NomCol)

J'ai créé une Feuille (Employe) ou j'ai noté en colonne les différentes valeurs et j'ai définis des noms par colonnes. Ces colonnes sont dynamique pour pouvoir ajouter ou retirer des noms de collaorateurs.

Pouvez-vous m'aider à résoudre ce problème? Et, d'avance, un grand merci.


en annexe le fichier, une image et le code qui ne fonctionne pas.

https://www96.zippyshare.com/v/3XEwb7qW/file.html





Private Sub NFormulaire_Initialize()
' C_dep :nom de la combox Secteur

C_Dep.Clear
C_Dep.List = Application.Transpose(Range("Depart"))
NomCol.Clear

End Sub

Private Sub C_Dep_Change()
'Combobox département
If C_Dep.Value = "" Then Exit Sub
NomCol.Clear

Dim NomRange As String
NomRange = CaracSpec(C_Dep.Value)
If NomDefini(NomRange) Then
' NomCol = combox nom Col.

NomCol.List = Application.Transpose(Range(NomRange))
Else
NomCol.AddItem """Aucun nom"""
End If
End Sub


Function NomDefini(Nom As String) As Boolean
Dim Noms As Name
NomDefini = False
For Each Noms In ThisWorkbook.Names
If Noms.Name = Nom Then NomDefini = True: Exit Function
Next Noms
End Function

Function CaracSpec(Nom As String) As String
CaracSpec = Replace(Nom, " ", "_")
CaracSpec = Replace(CaracSpec, "-", "_")
End Function

Private Sub UserForm_Click()

End Sub

2 réponses

vb95 Messages postés 3441 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 3 décembre 2023 165
4 janv. 2019 à 12:36
Bonjour
Tout d'abord je vous prie de lire ceci afin de présenter votre code correctement indenté : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Merci
0
Ricky_77 Messages postés 2 Date d'inscription vendredi 4 janvier 2019 Statut Membre Dernière intervention 4 janvier 2019
4 janv. 2019 à 12:56
Bonjour vb95,

J'espère que ce sera mieu ainsi !

Merci pour votre aide.

Je reinscrit le code comme indiqué sur le lien que vous m'avez donné :


Private Sub NFormulaire_Initialize() 
' C_dep :nom de la combox Secteur 

C_Dep.Clear 
C_Dep.List = Application.Transpose(Range("Depart")) 
NomCol.Clear 

End Sub 

Private Sub C_Dep_Change() 
'Combobox département 
If C_Dep.Value = "" Then Exit Sub 
NomCol.Clear 

Dim NomRange As String 
NomRange = CaracSpec(C_Dep.Value) 
If NomDefini(NomRange) Then 
' NomCol = combox nom Col. 

NomCol.List = Application.Transpose(Range(NomRange)) 
Else 
NomCol.AddItem """Aucun nom""" 
End If 
End Sub 


Function NomDefini(Nom As String) As Boolean 
Dim Noms As Name 
NomDefini = False 
For Each Noms In ThisWorkbook.Names 
If Noms.Name = Nom Then NomDefini = True: Exit Function 
Next Noms 
End Function 

Function CaracSpec(Nom As String) As String
CaracSpec = Replace(Nom, " ", "_") 
CaracSpec = Replace(CaracSpec, "-", "_") 
End Function 

Private Sub UserForm_Click() 

End Sub

0
cs_Le Pivert Messages postés 7902 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 novembre 2023 137
5 janv. 2019 à 10:59
Bonjour,

tu trouveras de nombreux exemples à télécharger ici:

http://boisgontierjacques.free.fr/pages_site/formulairecascade.htm

0
Rejoignez-nous