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 éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Par défaut listbox en cascade
    Bonjour,

    Je prends un exemple par souci de confidentialité, merci.

    J'ai une Userform, avec Trois ListBox, dans la première j'ai des marques de voirures, dans la seconde les modèles de voiture, et dans la troisième el type de carburant.

    J'ai une feuille excel qui rescense le tout de la façon suivante :

    Marque Modèle Carburant
    Renault Twingo Essence
    Renault Clio Diesel
    Renault Clio Essence
    Peugeot 1007 Diesel
    Peugeot 1007 GPL
    Peugeot 1007 Essence
    Citroën C2 Diesel
    Citroën C3 GPL
    Citroën C3 Essence

    et donc, j'aimerais qu'à l'ouverture de l'useform on voit apparaitre les marques distinctes bien sur, et que lorsque je sélectionne la marque Renault par exemple, apparaisse dans la liste modèle : Twingo et Clio (de façon distinct), etc... jusqu'au carburant.

    J'ai déjà la première partie qui consiste à ouvrir la userform avec les marques distinct.

    je fourni ce que j'ai déjà fait

    par avance merci

    meumeu73
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Cette marcro fait ce que tu souhaites, mais remplace ton ancien code

    Il te suffit de m'appeler au démarrage et sur les actions clics des liste marque et modele


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    Sub cherche()
     
    Dim i As Long
    Dim c As Long
    Dim ColMarque As New Collection
    Dim colModele As New Collection
    Dim colCarburant As New Collection
     
    If Marque.Text <> "" And Marque.Text <> strMarque Then
        strMarque = Marque.Text
    End If
    If Modele.Text <> "" And Modele.Text <> strModele Then
        strModele = Modele.Text
    End If
    If Carburant.Text <> "" And Carburant.Text <> strCarburant Then
        strCarburant = Carburant.Text
    End If
     
    Marque.Clear
    Modele.Clear
    Carburant.Clear
     
    i = 2
     
    Do While ThisWorkbook.Worksheets("Feuil1").Range("A" & i).Value <> ""
        On Error Resume Next
     
        ColMarque.Add ThisWorkbook.Worksheets("Feuil1").Range("A" & i).Value, CStr(ThisWorkbook.Worksheets("Feuil1").Range("A" & i).Value)
     
        If strMarque = "" Or ThisWorkbook.Worksheets("Feuil1").Range("A" & i).Value = strMarque Then
            colModele.Add ThisWorkbook.Worksheets("Feuil1").Range("B" & i).Value, CStr(ThisWorkbook.Worksheets("Feuil1").Range("B" & i).Value)
        End If
     
        If strModele = "" Or ThisWorkbook.Worksheets("Feuil1").Range("B" & i).Value = strModele Then
            colCarburant.Add ThisWorkbook.Worksheets("Feuil1").Range("C" & i).Value, CStr(ThisWorkbook.Worksheets("Feuil1").Range("C" & i).Value)
        End If
     
        i = i + 1
    Loop
     
     
    For c = 1 To ColMarque.Count
        Marque.AddItem ColMarque(c)
    Next c
     
    For c = 1 To colModele.Count
        Modele.AddItem colModele(c)
    Next c
     
    For c = 1 To colCarburant.Count
        Carburant.AddItem colCarburant(c)
    Next c
     
    End Sub

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Par défaut
    bonjour,

    si j'ai bien compris il faut que je remplace mon ancien code d'initailization de la userform par le code que tu m'as transmis ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Par défaut
    merci, j'ai bien remplacé mon code par celui que tu m'as transmis, j'ai bien mes listbox remplies.

    Mon but est que les listbox modèle et carburant se remplissent par rapport à la marque, c'est à dire que si je selectionne renault, dans la colonne modèle apparaissent twingo et clio, et ensuite lorsque je sélectionne clio, dans la colonne carburant diesel et essence.

    merci
    Fichiers attachés Fichiers attachés

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Par défaut
    moi, je remplacerais les listbox par des combobox...

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Citation Envoyé par meumeu73.1 Voir le message
    bonjour,

    si j'ai bien compris il faut que je remplace mon ancien code d'initailization de la userform par le code que tu m'as transmis ?
    Tout a fait

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 304
    Par défaut
    j'ai apporté quelque retouche, maintenant je cherche a ne pas avoir les modèles renault lorsque je sélectionne peugeot.
    Fichiers attachés Fichiers attachés

  8. #8
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    J'ai apporté les modifs

    listbox3.xls

+ Répondre à la discussion
Cette discussion est résolue.

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. [XL-2003] ListBox en cascade
    Par maniak99 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/08/2013, 13h45
  4. listbox en cascade provenant d'access
    Par air023 dans le forum VBA Word
    Réponses: 5
    Dernier message: 25/02/2008, 14h15
  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