Menu

Liste déroulante en cascade sur VBA [Résolu]

JennySn 4 Messages postés mardi 29 décembre 2015Date d'inscription 13 février 2018 Dernière intervention - 12 févr. 2018 à 12:03 - Dernière réponse : JennySn 4 Messages postés mardi 29 décembre 2015Date d'inscription 13 février 2018 Dernière intervention
- 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 ?
Afficher la suite 

Votre réponse

7 réponses

f894009 13031 Messages postés dimanche 25 novembre 2007Date d'inscription 17 mai 2018 Dernière intervention - 12 févr. 2018 à 16:15
0
Utile
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
f894009 13031 Messages postés dimanche 25 novembre 2007Date d'inscription 17 mai 2018 Dernière intervention - 12 févr. 2018 à 16:36
Re,

Allez sur ce site : http://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/
JennySn 4 Messages postés mardi 29 décembre 2015Date d'inscription 13 février 2018 Dernière intervention - 12 févr. 2018 à 16:47
Ça marche, voici le fichier (et merci pour les explications !) : https://www.cjoint.com/c/HBmpUgMsIKk
f894009 13031 Messages postés dimanche 25 novembre 2007Date d'inscription 17 mai 2018 Dernière intervention - 12 févr. 2018 à 16:55
RE,

Je recupere le baigneur
A+
f894009 13031 Messages postés dimanche 25 novembre 2007Date d'inscription 17 mai 2018 Dernière intervention - 12 févr. 2018 à 17:20
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/
JennySn 4 Messages postés mardi 29 décembre 2015Date d'inscription 13 février 2018 Dernière intervention - 13 févr. 2018 à 08:33
D'accord, merci beaucoup pour ces explications !!
Commenter la réponse de f894009