Problème Combobox en cascade

Messages postés
2
Date d'inscription
vendredi 4 janvier 2019
Statut
Membre
Dernière intervention
4 janvier 2019
- - Dernière réponse : cs_Le Pivert
Messages postés
6051
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 mai 2019
- 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
Afficher la suite 

Votre réponse

2 réponses

Messages postés
1877
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
25 mai 2019
60
0
Merci
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
Ricky_77
Messages postés
2
Date d'inscription
vendredi 4 janvier 2019
Statut
Membre
Dernière intervention
4 janvier 2019
-
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

Commenter la réponse de vb95
Messages postés
6051
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 mai 2019
79
0
Merci
Bonjour,

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

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

Commenter la réponse de cs_Le Pivert