Liste déroulante en cascade sur VBA

Résolu/Fermé
JennySn Messages postés 4 Date d'inscription mardi 29 décembre 2015 Statut Membre Dernière intervention 13 février 2018 - 12 févr. 2018 à 12:03
JennySn Messages postés 4 Date d'inscription mardi 29 décembre 2015 Statut Membre Dernière intervention 13 février 2018 - 13 févr. 2018 à 08:33
Bonjour,

Je prépare un fichier de suivi de formations pour des agents. J'ai déjà créé/modifié un certain nombre de macros mais je bloque sur la suppression d'une formation.

Pour cette manip, j'aimerais qu'en cliquant sur le bouton "supprimer formation", une fenêtre s'ouvre avec 2 listes déroulantes : la 1ère servirait à choisir la catégorie de la formation, la seconde afficherait les différentes formations de la catégorie sélectionnées.

Les données des formations sont contenues dans la colonne A de ma feuille "Formations" dans l'ordre suivant :
CATEGORIE 1 (A4)
Formation 1 (A5)
Formation 2 (A6)
...
CATEGORIE 2 (A19)
Formation 1 (A20)
Formation 2 (A21)
...
CATEGORIE 2 (A33)
Formation 1 (A34)
Formation 2 (A35)
...

Evidemment, il n'y a pas le même nombre de formations dans chaque catégorie...

J'ai préparé un UserForm, j'ai réussi à ajouté les catégories en utilisant le code suivant :
Private Sub UserForm_Initialize()
ComboBox1.Clear
With Me.ComboBox1
.AddItem "Combustible"
.AddItem "Dechet"
.AddItem "Transport"
.AddItem "Manutention"
.AddItem "Securite_surete"
.AddItem "Surveillance"
End With
End Sub

Mon problème se complique ensuite. Après avoir renommé mes plages de formations (ex : A5:A18 se nomme Combustible), j'ai tenté ça :
Private Sub ComboBox1_Change()
Dim categorie As String
categorie = CaracSpec(ComboBox1.Value)
If NomDefini(categorie) Then
ComboBox2.List = Application.Transpose(Range(categorie))
End If
End Sub

Mais cela ne fonctionne pas, peu importe la catégorie choisie, la 2ème liste déroulante ne me propose que les formations du combustible.

Pouvez-vous m'aider s'il vous plait ?

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
12 févr. 2018 à 16:15
Bonjour,
Pouvez-vous m'aider s'il vous plait ?
Oui, mais:
categorie = CaracSpec(ComboBox1.Value)
et
If NomDefini(categorie) Then
Qu'est ce ces choses en gras ?????
Un fichier model serait le bienvenu
0
JennySn Messages postés 4 Date d'inscription mardi 29 décembre 2015 Statut Membre Dernière intervention 13 février 2018
12 févr. 2018 à 16:32
J'ai trouvé ces lignes sur le forum (https://www.commentcamarche.net/faq/41019-vba-excel-combobox-en-cascade-dans-un-userform

J'ai voulu vous mettre un fichier mais je n'arrive pas à le faire... Comment puis-je l'ajouter ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
12 févr. 2018 à 16:36
Re,

Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...

ou
'mon partage
https://mon-partage.fr/
0
JennySn Messages postés 4 Date d'inscription mardi 29 décembre 2015 Statut Membre Dernière intervention 13 février 2018
12 févr. 2018 à 16:47
Ça marche, voici le fichier (et merci pour les explications !) : https://www.cjoint.com/c/HBmpUgMsIKk
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
12 févr. 2018 à 16:55
RE,

Je recupere le baigneur
A+
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 12 févr. 2018 à 17:22
Re,

Deux anomalies:

1/ lister les plages nommees ne marche que pour le classeur, pas une feuille, donc a chaque fois pas de liste OK
2/ vous avez toujours la meme liste car vous avez mis Formations!A5:A18 dans RowSource de Combobox2. Si la recherche de la plage nommee avait marche vous auriez peut-etre pu le voir

Fichier modifie: https://mon-partage.fr/f/TRk7W9OD/
0