IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

ListBox en cascade


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 14
    Par défaut ListBox en cascade
    Bonjour,

    J'aurais besoin d'aide pour un programme c'est pour le boulot.
    J'aimerais créer un menu avec des listbox en cascade.
    C'est à dire que le choix fait dans la première liste conditionne la liste de choix dans les listes suivantes. Dites moi si c'est pas clair

    J'ai fait un programme mais qui ne répond pas totalement à mon problème. Enfaite j'ai ma 2ème ListBox qui dépend de la 1ère ListBox , et la 3ème qui dépend de la 2ème mais la 3ème ListBox ne dépend plus de la 1ère

    Je ne sais pas si vous voyez mon problème? je peux tenter de mieux expliquer sinon.

    Alors voila si quelqu'un aurait une idée à partager?

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 38
    Par défaut
    Bonjour,

    Ta listBox est-elle dans un userform ou dans une feuille excel ?

    Sur le principe tu as une macro associée à chaque sélection effectuée dans ta listBox, il suffit dans la macro de la list box 1 de modifier à la volée la zone (ou le contenu de la zone) de la list box 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ActiveSheet.Shapes.Range(Array("List Box 2")).ListFillRange = "$W$1:$W$4"
    (soit tu renseignes à la volée les cellules de la List Box 2 (contenu W1:W4 dans l'exemple ci-dessus), soit tu modifies la zone source (V1:V4 pour choix 1, W1:W7 pour choix 2, ...)


    et dans la macro associée à la list Box 2 faire la même chose (mais tenant compte des contenus de tes 2 premières List Box pour mettre à jour à la volée le contenu de la 3ème listBox...

    Si c'est dans un userform c'est le même principe avec ListBox1.RowSource

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 14
    Par défaut
    merci philoul de m'aider

    Mes listbox sont bien sur une feuille excel.

    Je fais comme tu dis ( si j'ai bien compris ) : à chaque changement dans une listbox (l'événement listbox_change ), je modifie en conséquence la listbox dépendante.

    Mais justement je ne sais pas comment faire pour que la listbox3 garde en mémoire les choix fait dans la listbox1,oui parce que l'utilisateur peut faire plusieurs choix dans chaque listbox.

    Et pour compliquer le tout l'utilisateur peut ajouter des listbox pour créer ses propres filtres

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 38
    Par défaut
    Avec Excel la mémoire n'est pas vraiment un problème, rien ne t'emplèche dans la macro listbox_change de sauvegarder les choix sélectionnés dans une zone masquée de ton onglet courant (colonnes de droites par exemple) ou dans un onglet supplémentaire, (visible ou masqué) :

    J'ai compris que tout commence par la 1ère listbox :

    On peut donc imaginer de faire un onglet spécifique qui contient :
    Colonne A tous les choix de la listbox 1 (sur lequel tu vas faire pointer .listfillrange)
    Colonne B (renseignée sur sélection listbox 1) mémorisation des choix effectués sur la listbox 1
    Colonne C (renseignée sur sélection listbox 1 par macro de la List Box 1) les choix possibles pour la listbox 2 compte tenu des sélection faite sur la 1 (.listfillrange de la listbox 2)
    Colonne D (renseignée sur sélection listbox 2) mémorisation des choix effectués sur listbox 2
    Colonne E (renseignée sur sélection listbox 2) les choix possibles pour la listbox 3 compte tenu des sélection faite sur les listbox 1 et 2 (.listfillrange de la listbox 3)
    ...

    il suffit ensuite à chaque macro de chaque listbox de faire les actions, mise à jours sélections, mises à jour des autres listbox, en vérifiant les contenu sélectionnés de l'ensemble (colonnes B, D, F, ... s'il y a d'autres listbox).


    Mais rien ne t'empèche d'aller plus loins en initialisant tes 3 listbox avec tous les choix possibles pour chacune des trois. et dès q'une sélection (simple ou multiple) est faite sur une des 3 listBox faire la mise à jour des choix possibles sur les 2 autres, et ainsi de suite

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 14
    Par défaut
    Merci encore de ton aide philoul !

    ok donc si j'ai bien compris il faut que je garde en mémoire les choix et que je remplisse les listbox en fonction des choix.


    Sinon t'as une idée d'un algorithme pour remplir une listbox en fonction des anciens choix?

    J'ai pensé à garder sur une feuille tous les triplés possibles sans doublons de mes enregistrements ( si on a 3 listbox ) et ensuite de travailler sur cette base de données.

    C'est pour savoir si je vais dans la bonne direction au moins

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 38
    Par défaut
    Là je pense que cela dépends directement des données que tu manipules :
    Soit tu as besoins d'une base de données exhaustives car il n'y a aucune logique d'association de choix "automatisable", soit tu peux construire une logique séquentielle (choix 1 puis choix 2 puis choix 3) , ou encore s'il existe des caractéristiques associées à chaque choix (dimensions, poids, couleurs, prix, ...) qui peuvent te permettre de coder les choix possibles plutôt que de les rechercher dans une base de données...

    Tout dépend du nombre de données et de la complexité (si tu disposes d'un nombre faibles d'éléments, tu as probablement plus vite fait de construire à la main la liste exhaustive des combinaisons possibles, en revanche, si tu disposes d'un nombre important d'éléments avec une cominatoire complexe c'est une autre paire de manches...

    Sans avoir plus d'infos sur les données que tu manipules difficile de t'aider...

Discussions similaires

  1. Listbox en cascade et sélections multiples
    Par Sofy16 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 24/06/2015, 16h36
  2. [AC-2010] Filtrer a partir de 2 listbox en cascade
    Par mlww dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/02/2015, 12h05
  3. listbox en cascade provenant d'access
    Par air023 dans le forum VBA Word
    Réponses: 5
    Dernier message: 25/02/2008, 14h15
  4. listbox en cascade
    Par meumeu73.1 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 23/01/2008, 15h05
  5. 3 Combobox (Listbox) en cascade la 3éme colonne ne s'affiche pas
    Par minogttao dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 08/11/2006, 22h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo