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 :

Combobox 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
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Par défaut Combobox en cascade
    Bonjour à tous,
    Je me retrouve face à un petit problème que j'aimerais bien adapté sur un plus gros fichier. Il s'agit bien entendu des combo box en cascade. Malgré mes recherches sur internet, je n'arrive pas à adapté les bouts de code par ci par là à mon fichier.

    Je me retrouve avec une grosse base de données. Lorsqu'on appuie sur le bouton1, un UserForm avec trois liste déroulante apparaît.
    La 1ère correspond aux valeurs de la colonne C
    La 2ème correspond aux valeurs de la colonne D suivant le choix de la colonne précédente
    La 3ème correspond aux valeurs de la colonne E suivant le choix de la colonne D

    Ensuite, lorsqu'on valide, le code apparaît dans la cellule M3 avec les valeurs de la base de données, dans les colonnes suivantes

    Je vous joins un fichier pour que vous compreniez et si l'un d'entre vous pourrait m'aider ça serait génial
    Merci d'avance.

    Comboxcascade.xlsm

  2. #2
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    Voici une piste pour que tu puisses commencer.

    J'ai fait le remplissage de la première liste au chargement du formulaire.
    Et la remplissage de la deuxième sur changement de la première.

    Il te reste à faire la troisième en t'inspirant de ce que j'ai fait ...

    Le tout est commenté ...

    la première liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub UserForm_Initialize()
    'positionnemet en haut du tableau
        c = 4
        'boucle pour parcourir la colonne C jusqu'aà la dernière cellule non vide
        Do While c <= Range("C" & Rows.Count).End(xlUp).Row
            'on teste que la cellule n'est pâs vide
            If Cells(c, 3).Value <> "" Then
                'si la cellule n'est pas vide on ajoute à la première liste
                ComboBox1.AddItem Cells(c, 3).Value
            End If
            'passage à la ligne suivante
            c = c + 1
        Loop
    End Sub
    La deuxième :
    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
    Private Sub ComboBox1_Change()
        'on se place en haut du tableau
        c = 4
        'boucle jusqu'à trouver la saisie dans la col C.
        'La deuxième condition est une sécurité, si l'utilisateur saisi une valeur qui n'est pas dans la liste
        Do Until ComboBox1.Value = Cells(c, 3).Value Or c > Range("C" & Rows.Count).End(xlUp).Row
            'si la valeur saisie dans la liste est rouvée, on sort de la boucle
            If Cells(c, 3).Value = ComboBox1.Value Then
                Exit Do
            End If
            'passage à la ligne suivante
            c = c + 1
        Loop
        'test pour savoir si on à trouver la valeur (en cas de saisie non valide
        If ComboBox1.Value <> Cells(c, 3).Value Then
            MsgBox "La valeur saisie n'existe pas"
            Exit Sub
        End If
        c = c + 1
        'si la saisie est valide, on efface le contenu de la liste
        ComboBox2.Clear
        'et on alimente à deuxième liste
        Do Until Cells(c, 3).Value <> ""
            'on teste que la cellule n'est pâs vide
            If Cells(c, 4).Value <> "" Then
                'si la cellule n'est pas vide on ajoute à la première liste
                ComboBox2.AddItem Cells(c, 4).Value
            End If
            'passage à la ligne suivante
            c = c + 1
        Loop
    End Sub
    Bonne suite à toi

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Par défaut
    Je te remercie énormément, je vais essayer ça et je reviens vers toi si jamais j'ai un soucis

  4. #4
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Pour info,

    Le code aurai pu être plus simple si le texte de la colonne C était répété en face de toutes les lignes.

    Idem pour le texte de la colonne D.

    C'est juste une remarque comme çà. De plus, on est plus dans la logique d'excel :
    Une ligne = une info complète.

    Du coup, derrière si on veut trier, filtrer, TDC, c'est plus simple.

    A bon entendeur ...

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Par défaut
    En effet la base de données est pas top, je vais la refaire et adapté le code.
    Je te remercie de ton aide

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

Discussions similaires

  1. Probleme ComboBox en cascade
    Par YOP33 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 17/01/2010, 15h08
  2. fonction pour filtrage avec des combobox en cascade
    Par Montor dans le forum Contribuez
    Réponses: 3
    Dernier message: 09/11/2009, 12h05
  3. [E-00] ComboBox en cascade + TextBox
    Par couistelle dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/11/2008, 10h32
  4. Combobox en cascade et sans doublons
    Par humbp dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/11/2007, 13h54
  5. [VBA-E] ComboBox en cascade avec correspondance dans matrice
    Par ViperSpy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/06/2006, 17h01

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