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 :

Userform, lier les données contenues dans les ComboBox entre elles


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2008
    Messages : 195
    Points : 82
    Points
    82
    Par défaut Userform, lier les données contenues dans les ComboBox entre elles
    Bonjour,

    Je travaille sur un petit projet afin de comprendre et d'utiliser les Userforms.
    Dans ce cadre, j'ai une idée en tête mais je n'arrive pas à l'appliquer....

    J'aimerai que si je choisis un "nom" dans la ComboBox 1, la liste de la ComboBox 2 varie en fonction de ce nom.

    Par exemple:
    ComboBox 1 contient "orange, citron, banane", si je choisis "citron", la ComboBox 2 me donnera comme choix "presser, manger,..."

    Si je choisis "orange", la combobox2 m'affichera "décoration, ..."

    Pour cela j'ai écris cela:

    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
    Private Sub UserForm_Initialize()
     
    Me.ComboBox1.RowSource = "Info_Userform1!A2:A8" 'Récupération des Données
     
        If Me.ComboBox1.Value = "Orange" Then
        Me.ComboBox2.RowSource = "Info_Userform1!C2:C8"
        End If
     
        If Me.ComboBox1.Value = "Banane" Then
        Me.ComboBox2.RowSource = "Info_Userform1!D2:D8"
        End If
     
        If Me.ComboBox1.Value = "Citron" Then
        Me.ComboBox2.RowSource = "Info_Userform1!F2:F8"
        End If
     
    End Sub
    Ma ComboBox1 contient bien les données que je lui demande.
    Par contre ma ComboBox2 ne contient que les données "Info_Userform1!C2:C8". Et ce quelque soit le choix effectué en combobox1....

    J'ai essayé de changer la manière d'écrire, je remplace:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        If Me.ComboBox1.Value = "Banane" Then
        Me.ComboBox2.RowSource = "Info_Userform1!D2:D8"
        End If
    Par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i = 2 To 8
        If Me.ComboBox1.Value = "Banane" Then
        Me.ComboBox2.RowSource = Worksheets("Info_Userform1").Cells(i, 1)
        End If
        Next i
    Et la je n'ai carrément plus aucune info dans ma combobox2

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    bonjour,
    dans le code initialize, uniquement remplis uniquement la premiere combo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox1.RowSource = "Info_Userform1!A2:A8" 'Récupération des Données
    et j'espère que Info_Userform1 soit une feuille avec ce nom

    et dans l'évenement click de cette combo
    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 combobox1_Click()
     
         If ComboBox1.Value = "Orange" Then
        ComboBox2.RowSource = "Info_Userform1!C2:C8"
        End If
     
        If ComboBox1.Value = "Banane" Then
        ComboBox2.RowSource = "Info_Userform1!D2:D8"
        End If
     
        If ComboBox1.Value = "Citron" Then
        ComboBox2.RowSource = "Info_Userform1!F2:F8"
        End If
    end sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2008
    Messages : 195
    Points : 82
    Points
    82
    Par défaut
    Sa marche nickel,

    Merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/12/2011, 10h23
  2. Réponses: 15
    Dernier message: 22/07/2009, 22h38
  3. Réponses: 0
    Dernier message: 23/06/2009, 15h24
  4. Réponses: 4
    Dernier message: 10/07/2007, 09h36
  5. Réponses: 2
    Dernier message: 09/06/2007, 22h09

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