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 :

Utilisation de Combobox + Rowsource [Débutant(e)] [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Dessinateur industriel
    Inscrit en
    Mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur industriel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 35
    Points : 17
    Points
    17
    Par défaut Utilisation de Combobox + Rowsource
    Bonjour à tous,

    j'ai actuellement un soucis avec l'utilisation de plusieurs combobox liée entre elle.
    Je m'explique

    J'ai fais clic droit sur la premiere "Visualiser code" et la j'entre en Private sub.

    Je rentre donc mon code qui est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ComboBox2_Change()
    If Range("B43").Value = "W44" And Range("B49").Value = "Serreur" Then
        ComboBox3.RowSource = "C55:C69"
     
     End If
     End Sub
    En gros je veux qu'en fonction des valeures présente en "B43" et "B44" la plage de recherche de la combobox 3 change.

    Cela est il possible ?


    Merci pour votre aide,
    Cordialement
    Defter

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Si, comme tu sembles l'indiquer, ta combobox est sur une feuille, la propriété à utiliser est "ListFillRange", et non pas "RowSource" qui est utilisée avec les combobox sur userform.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Membre à l'essai
    Homme Profil pro
    Dessinateur industriel
    Inscrit en
    Mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur industriel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Bonjour Daniel.C

    J'ai utilisé ta technique, et cette fois-ci il me demande une maccro, seulement il n'y en a pas comme je cherche à la créer justement.

    Est-ce lié au faite que je sois dans "Private Sub" ?
    J'ai aussi actualisé le "_Change" en "_QuandClic" car je souhaite que la Combobox3 s'actualise lors du choix de la 2. Est ce un problème aussi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ComboBox2_quandclic()
    If Range("B43").Value = "W44" And Range("B49").Value = "Serreur" Then
        Me.ComboBox3.ListFillRange = "C55:C69"
     
     End If
     End Sub
    Désolé c'est peut être des questions stupides mais je débute dans l'utilisation de combobox.


    Cordialement,
    Defter

    J'arrive maintenant à obtenir des valeures dans la combobox3, je n'avais pas précisé vers quel feuille aller chercher les prérequis et les données ...

    Le code à maintenant cette forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ComboBox3_Clic()
        If Sheets("Data").Range("B43").Value = "W44" AndSheets("Data").Range("B49").Value = "Serreur" Then
            ComboBox3.ListFillRange = "Data!C55:C69"
     
        End If
    End Sub
    Existe t-il un moyen de clean une combobox ? C'est à dire qu'elle n'affiche rien comme si aucun prérequis n'avait été selectionné ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Tu utilises certainement les contrôles de formulaire. Tu devrais utiliser plutôt les contrôles ActiveX qui offrent davantage de fonctionnalité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.ComboBox3.ListIndex = -1
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Membre à l'essai
    Homme Profil pro
    Dessinateur industriel
    Inscrit en
    Mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur industriel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Non je suis bien en ActiveX,

    J'ai maintenant les données que je souhaite dans ma combobox,
    Je cherche maintenant à influencer les valeures présentes dans celle-ci avec des paramètres présents dans d'autre cellules.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub ComboBox2_quandclic()
        If Sheets("Data").Range("B43").Value = "W44" And Sheets("Data").Range("B49").Value = "Serreur" Then
            ComboBox3.ListFillRange = "Poteau_Serreur"
            ComboBox3.ListRows = 6
     
        End If
        If Sheets("Data").Range("B43").Value = "W80" And Sheets("Data").Range("B49").Value = "VEC" Then
            ComboBox3.ListFillRange = "Poteau_VEC"
            ComboBox3.ListRows = 2
        End If
     
    End Sub
    Il me detecte bien la première condition c'est à dire "Poteau_serreur" mais lorsque je change les valeurs, il n'actualise pas au profit des valeurs de "Poteau_Vec".

    Je pense que c'est une erreur de synthaxe au niveau des deux conditions "SI" mais la j'avoue être completement bloqué.

    Merci pour tes conseils en tout cas.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Tu ne peux pas écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox3.ListFillRange = "Poteau_Serreur"
    Tu dois coder soit une plage de cellules (par exemple A1:A10) ou une plage nommée sans guillemets dans ListFillRange.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  7. #7
    Membre à l'essai
    Homme Profil pro
    Dessinateur industriel
    Inscrit en
    Mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur industriel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Merci pour l'attention que vous me portez,

    cependant en écrivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox3.ListFillRange = "Poteau_Serreur"
    il change ce qui est présent dans combobox3 qu'une fois : Si maintenant il est affiché W80 et VEC, il ne va pas me mettre à jour malgrès que la fonction "If" précise que lorsque W80 et VEC sont affiché il affiche les références liées à savoir "Poteau_VEC"

    Si j'enlève les guillemets il ne m'affiche plus rien dans combobox3. Celà doit venir d'un problème de synthaxe mais je ne m'y connais pas assez pour le résoudre.


    Petit rappel du code actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub ComboBox2_change()
        If Sheets("Data").Range("B43").Value = "W44" And Sheets("Data").Range("B49").Value = "Serreur" Then
            ComboBox3.ListFillRange = Poteau_Serreur
            ComboBox3.ListRows = 6
        End If
        If Sheets("Data").Range("B43").Value = "W80" And Sheets("Data").Range("B49").Value = "VEC" Then
            ComboBox3.ListFillRange = Poteau_VEC
            ComboBox3.ListRows = 2
        End If
     
    End Sub
    Cordialement,
    Defter

  8. #8
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    J'ai peur que tu fasses une confusion. Ta macro n'est PAS une macro évènementielle. Si tu veux qu'une macro se déclenche sur un clic, écris :

    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
    Private Sub ComboBox2_Click()
        Dim Poteau_Serreur As String, Poteau_VEC As String
        Poteau_Serreur = "Data!C55:C69"
        Poteau_VEC = "Data!D55:D69"
        With Sheets("Data")
           If .Range("B43").Value = "W44" And .Range("B49").Value = "Serreur" Then
               ActiveSheet.ComboBox3.ListFillRange = Poteau_Serreur
               ActiveSheet.ComboBox3.ListRows = 6
     
           End If
           If .Range("B43").Value = "W80" And .Range("B49").Value = "VEC" Then
               Me.ComboBox3.ListFillRange = Poteau_VEC
               Me.ComboBox3.ListRows = 2
           End If
     End With
    End Sub
    J'ai ajouté les trois premières lignes pour te montrer comment spécifier la propriété "ListFillRange". Tu devras les modifier ou les ôter.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  9. #9
    Membre à l'essai
    Homme Profil pro
    Dessinateur industriel
    Inscrit en
    Mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur industriel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Super ça marche !

    J'ai modifier en fonction de mon cas ce qui donne :

    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
    Private Sub ComboBox2_Click()
        Dim Poteau_Serreur As String, Poteau_VEC As String, Poteau_SOF As String, Poteau_VEP As String
        Poteau_Serreur = "Data!C59:C65"
        Poteau_VEC = "Data!A59:A60"
        Poteau_SOF = "Data!D59:D60"
        Poteau_VEP = "Data!B59:B61"
            With Sheets("Data")
                If Range("B43").Value = "W44" And .Range("B49").Value = "Serreur" Then
                    Me.ComboBox3.ListFillRange = Poteau_Serreur
                    Me.ComboBox3.ListRows = 6
     
                End If
                If .Range("B43").Value = "W80" And .Range("B49").Value = "VEC" Then
                    Me.ComboBox3.ListFillRange = Poteau_VEC
                    Me.ComboBox3.ListRows = 2
                End If
                If .Range("B43").Value = "W80" And Sheets("Data").Range("B49").Value = "VEP" Then
                    Me.ComboBox3.ListFillRange = Poteau_VEP
                    Me.ComboBox3.ListRows = 3
                End If
                If .Range("B43").Value = "W44" And Sheets("Data").Range("B49").Value = "Serreur+OF" Then
                    Me.ComboBox3.ListFillRange = Poteau_SOF
                    Me.ComboBox3.ListRows = 6
                End If
            End With
    End Sub
    Merci beaucoup pour ton aide !

    J'ai une petite question subsidiaire (Pour voir si c'etait un coup de chance haha :p)
    Est il possible d'afficher par défaut la premiere valeure qui ce trouve dans la collone "Poteau_VEP" ?

    Dans le cas actuel lorsque je change la liste s'actualise bien mais elle conserve la valeure de l'ancienne liste par défaut.
    Il doit y avoir un moyen de lui dire :
    Lorsque c'est tel cas, la valeur affiché de la liste est "XX"

    Encore merci pour l'aide apportée et désolé pour les questions stupides mais je débute .


    Cordialement,
    Defter

  10. #10
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut


    Ajoute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ComboBox3.ListIndex = 0
    derrière les lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ComboBox3.ListFillRange = x
    ListIndex est une propriété qui prend les valeurs suivantes :
    -1 quand rien est sélecté
    0 première valeur de la plage spécifiée dans ListFillRange
    1 deuxième valeur de la plage spécifiée dans ListFillRange
    etc.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  11. #11
    Membre à l'essai
    Homme Profil pro
    Dessinateur industriel
    Inscrit en
    Mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur industriel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Parfait !

    Encore une fois merci beaucoup pour ton aide, j'aurais surement l'occasion de revenir poser des questions haha.

    Bon appétit.


    Cordialement,
    Defter

  12. #12
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Avec plaisir. Merci du retour.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

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

Discussions similaires

  1. [C#] Utilisation de ComboBox
    Par Troopers dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/11/2009, 13h07
  2. utilisation de combobox
    Par fredppp dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 04/04/2007, 07h55
  3. Questions concernant l'utilisation des ComboBox
    Par philguio dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/01/2007, 11h26
  4. Utilisation de combobox et d'une animation flash
    Par naima2005 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 04/06/2006, 20h09
  5. [VBA-E]ComboBox + RowSource ne concerne que les lignes ?
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 10/04/2006, 14h29

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