XL 2010 VBA - Lier trois listbox en cascade

elx

XLDnaute Nouveau
Bonjour à tous,


Je me permets de créer une énième discussion à ce sujet, car je n'ai pas réussi à appliquer les exemples des autres discussions à mon cas...

Ma problématique est relativement simple : j'aimerais lier ma listbox1 (listbox des types d'exercice) avec les listbox 3 et 5 (listbox des objectifs généraux et spécifiques).
C'est-à-dire que lorsque que je choisis un type les objectif correspondant s'affiche.
Par exemple : Sélectionner "tester l'alerte" génère automatiquement les objectifs correspondant ; c'est-à-dire "Test alerte + mobilisation communale". Et ainsi de suite pour "exercice partielle"="test alerte, mobilisation + armement" et "exercice général"= "test alerte+mobilisation+armement+ mesures de sauvegardes".

Actuellement, rien n'est lié et le contenu des lisbox est afficher entièrement au lancement du formulaire. Les listbox sont alimenter par rowsource.

Je vous joins le fichier ici, excusez le "bordel" apparent du code ; je débute et je me dépatouille comme je peux ^^
En vous remerciant d'avance pour votre aide/conseils :)

Erwan
 

Pièces jointes

  • BETA V3.xlsm
    96.4 KB · Affichages: 27
Solution
Votre fichier en retour pour test
attention que pour que les informations à mettre dans une combobox sur base du choix d'une combobox précédente, vous ne pouvez pas avoir de retour à la ligne dans les données de cellule.
Dans la colonne G (combobox 6) par exemple, j'ai supprimé les retours à la ligne dans les infos car la combobox suivante (combobox 7) ne prenait pas les valeurs.

Les rowssource sont supprimées pour la plupart, evitez cette instruction qui posent parfois des soucis
J'ai aussi supprimé quelques noms dans le gestionnaire de noms (ils n'allaient nulle part ou ne sont plus d'actualité suite au code)

Edit : je n'ai pas adapté la combobox 2 mais si vous me donnez les valeurs que l'on peut trouver, je vous donne...

Dan

XLDnaute Barbatruc
Bonjour,

SI vous voulez faire un choix dans votre listbox, il faut éviter la sélection multiple ou alors mieux mettre une combobox à la place. Dès que vous allez faire votre choix dans la combobox, on pourra alimenter les listsbox 3 et 5.
Vous etes d'accord sur ce point ?

Si oui, votre colonne E peut avoir plusieurs fois l'option tester Alerte ? (là je ne la vois qu'une seule fois

Cordialement
 

elx

XLDnaute Nouveau
Bonjour,

Oui tout à fait j'ai favoriser les listbox mais si il est plus adaptée ici de prendre une combobox alors soit faisant ca ! :) J'applique la modification et je reupload le fichier ?

Concernant la colonne E (type exo), oui elle peut avoir plusieurs fois "tester l'alerte" en fonction de ce qui est choisie par l'utilisateur, mais ce sera pour deux exercice distinct ; un sera pour tester l'alerte et un autre pour tester l'alerte + autres choses, par exemple. Donc la colonne E peut avoir plusieurs fois tester l'alerte mais dans des cellules distinctes. Je ne sais pas si je suis très claire ou si c'est la réponse que tu attendez..

Cordialement,

Erwan :)
 

Dan

XLDnaute Barbatruc
Ok. je pense avoir saisi
Je suppose que c'est la même chose pour la listbox3. Vous pouvez avoir aussi plusieurs valeurs identiques. Idem pour ce qui concerne la listbox5. Juste ?

Je vais déjà amender le fichier sur base de votre 1er commentaire

En attendant votre retour sur l'aspect doublons dans les colonnes G (Listbox 3) et H (Listbox 5)
 
Dernière édition:

Dan

XLDnaute Barbatruc
En colonne J et K, vous pouvez avoir aussi des doublons ?
Car vos deux combobox reprennent uniquement les deux premières lignes
je parle de Cinétique et condition meteo.
Si vous me donnez les valeurs, je modifie les combobox également
Exemple : Cinetique, je vois 3 valeurs (Rapide, lente, temps compressé). Y a-t-il d'autres valeurs ?
 

elx

XLDnaute Nouveau
Merci pour le temps que vous me consacrez :) !

Concernant ces deux colonnes(J et K) non pas de doublons ; si seulement un choix est possible c'est l'idéal.
Concernant les valeurs il n'y en pas d'autres en effet, il n'y a rien à rajouter normalement :)
 

Dan

XLDnaute Barbatruc
si seulement un choix est possible c'est l'idéal.
Oui mais le choix se fait dans les 3 valeurs comme j'ai indiqué dans l'exemple ?
Ce que je souhaite savoir c'est ce que les combobox 3 cinétique et 4 Méteo, doivent contenir au départ. Pour la 3, on a les 3 données que je vous ai données avant. Pour la 4, quelles sont les données
Attention ce sera figé, donc vous ne pourrez choisir que dans les données de ces deux combobox
 
Dernière édition:

elx

XLDnaute Nouveau
Ah oui pardon j'ai répondu a coté de la plaque ^^"

Oui le choix se fait dans une des valeurs proposer. Donc dans une des trois valeurs pour reprendre votre exemple.

Au départ la combobox cinétique peut contenir rapide ou compresser ou lente ; l'un ou l'autre ce n'est pas très important, c'est l'utilisateur qui choisira se qu'il a besoins. Ce qui est afficher au départ n'est qu'un exemple en soit.
Idem pour la météo au départ elle doit contenir soit réel soit fictive et l'utilisateur choisie ce qu'il lui convient.

J'ai cependant du mal a me représenter ce qu'implique le fait que soit "figé" les combobox ?
 

Dan

XLDnaute Barbatruc
Votre fichier en retour pour test
attention que pour que les informations à mettre dans une combobox sur base du choix d'une combobox précédente, vous ne pouvez pas avoir de retour à la ligne dans les données de cellule.
Dans la colonne G (combobox 6) par exemple, j'ai supprimé les retours à la ligne dans les infos car la combobox suivante (combobox 7) ne prenait pas les valeurs.

Les rowssource sont supprimées pour la plupart, evitez cette instruction qui posent parfois des soucis
J'ai aussi supprimé quelques noms dans le gestionnaire de noms (ils n'allaient nulle part ou ne sont plus d'actualité suite au code)

Edit : je n'ai pas adapté la combobox 2 mais si vous me donnez les valeurs que l'on peut trouver, je vous donne le code plutot que d'utiliser le rowssource
 

Pièces jointes

  • BETA V3.xlsm
    97.5 KB · Affichages: 43

elx

XLDnaute Nouveau
Et le test c'est avéré concluent ! Merci encore pour le temps consacré à mon problème :)

Concernant le retour à la ligne supprimé pas de problèmes ; je vais adapter la taille de mes combobox ou de mes phrases pour palier à ce soucis.

Une bonne journée à vous,
Cordialement,
 

Dan

XLDnaute Barbatruc
Je vais regarder. c'est dans la macro Private Sub CommandButton1_Click() ?

Et concernant ma remarque sur la combobox 2 ?

Edit : Oui c'est normal pour cette erreur car la Listbox1 est devenue Combobox5. Donc remplacez toutes les LISTBOX1 par COMBOBOX5
D'ailleurs en regardant le code complet, on pourrait adapter plus justement le code vu que votre base de données est mise en forme en tableau structuré
 

elx

XLDnaute Nouveau
Oui en effet j'ai trouver la solution et j'ai corrigé cela, merci encore ca fait plaisir d'avancer rapidement comme ca :) !

Je ne veux pas monopoliser votre temps tout fonctionne correctement ne vous embêtez a tout réadapter ; même si je sais que mes lignes sont assez "bordélique" ^^


Concernant la Combobox2 les valeurs sont : Inondation; Incendie de Forêt ; Transport de Matières Dangereuses (TMD). C'est vrai que éviter le row sources est préférable c'est bien mieux ainsi merci pour ce conseils :)
 

Dan

XLDnaute Barbatruc
"Bordéliques" ... non du tout mais avec les tableaux structuré les codes changent

Pour la combobox2, faites ceci
- Supprimer Theme dans rowssource
- Supprimer le nom associé dans le gestionnaire de noms
- Supprimer "Transport de Matières Dangereuses" dans la rubrique "text" associé à l'objet
- Dans la macro Private Sub UserForm_Initialize(), ajouter cette ligne juste avant Combobox3.list...
VB:
ComboBox2.List = Array("Inondation", "Incendie de Forêt", "Transport de Matières Dangereuses (TMD)")
 
Dernière édition:

elx

XLDnaute Nouveau
"Bordéliques" ... non du tout mais avec les tableaux structuré les codes changent

Pour la combobox2, faites ceci
- Supprimer Theme dans rowssource
- Supprimer le nom associé dans le gestionnaire de noms
- Supprimer "Transport de Matières Dangereuses" dans la rubrique "text" associé à l'objet
- Dans la macro Private Sub UserForm_Initialize(), ajouter cette ligne juste avant Combobox3.list...
VB:
ComboBox2.List = Array("Inondation", "Incendie de Forêt", "Transport de Matières Dangereuses (TMD)")
Ca fonctionne parfaitement encore une fois ! Au top :)
 

Discussions similaires

Réponses
3
Affichages
1 K

Statistiques des forums

Discussions
315 095
Messages
2 116 166
Membres
112 675
dernier inscrit
Tazra_IMOU