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 :

Remplir un combobox à 2 colonnes


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut Remplir un combobox à 2 colonnes
    Bonjour.
    Je cherche à remplir un combobox à 2 colonnes mais je n'y parviens pas.
    J'ai essayé de faire avec un rowsource mais j'ai un message d'erreur comme quoi le rowsource n'est pas gérer par l'objet. Et de même avec la propriété column.
    J'ai de plus essayé avec un Range("A1:B10") mais rien à faire, aussi une erreur.
    Je suis donc à court d'idée.
    Si quelqu'un en a une SVP ???
    Merci d'avance

  2. #2
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut
    yo

    c'est très très compliqué... non, je plaisante, c'est assez simple en fait :

    en utilisant la propriété .list, tu peux indexer tes éléments, exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For index = 0 to 3
     
    With MaCombo
      .AddItem
      .List(index,0)= "Ligne " & index & "colonne 0"
      .List(index,1)= "Ligne " & index & "colonne 1"
      .List(index,2)= "Ligne " & index & "colonne 2"
    End With
     
    Next
    non ?

  3. #3
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut
    ok, merci, je teste dans la soirée et te donne la réponse.

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonsoir tlm,

    Je me permet une petite précision, voir même deux c'est soirée promo.

    Si tu veux 2 colonnes dans ton Combo, la première chose à faire est de modifier la propriété ColumnCount et de la fixer à 2.

    Ensuite le remplissage du Combo dépend si il est inséré sur un UserForm ou si il est directement inséré sur la feuille via le menu Boîte à outils Contrôle pour lequel la propriété RowSource n'existe pas :
    1. Combo sur UserForm --> UserForm1.ComboBox.RowSource = "A1:B10"
    2. Combo sur feuille --> ActiveSheet.ComboBox1.ListFillRange = "A1:B10"

  5. #5
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut
    Citation Envoyé par laloune Voir le message
    yo

    c'est très très compliqué... non, je plaisante, c'est assez simple en fait :

    en utilisant la propriété .list, tu peux indexer tes éléments, exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For index = 0 to 3
     
    With MaCombo
      .AddItem
      .List(index,0)= "Ligne " & index & "colonne 0"
      .List(index,1)= "Ligne " & index & "colonne 1"
      .List(index,2)= "Ligne " & index & "colonne 2"
    End With
     
    Next
    non ?
    en fait, et je viens de retester au cas où, mais list ne passer pas non plus.

    Citation Envoyé par fring Voir le message
    Bonsoir tlm,

    Je me permet une petite précision, voir même deux c'est soirée promo.

    Si tu veux 2 colonnes dans ton Combo, la première chose à faire est de modifier la propriété ColumnCount et de la fixer à 2.

    Ensuite le remplissage du Combo dépend si il est inséré sur un UserForm ou si il est directement inséré sur la feuille via le menu Boîte à outils Contrôle pour lequel la propriété RowSource n'existe pas :
    1. Combo sur UserForm --> UserForm1.ComboBox.RowSource = "A1:B10"
    2. Combo sur feuille --> ActiveSheet.ComboBox1.ListFillRange = "A1:B10"
    OK, merci de ta réponse.
    Pour le columnCount, c'est ok. J'ai aussi régler le BoundColumn et TextColumn.
    Par contrre, bien que je n'ai pas d'erreur, la combo ne se rempli pas.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            Feuil4.ComboBox_departement1.ListFillRange = "Feuil11!A1:B" & i 'Feuil11.Cells(i, 1)
    Il s'agit en fait d'aller chercher sur une autre feuille et c'est cela qui pose problème car j'ai également fait le test sur la même feuille et là ca marche.
    Savez-vous pourquoi ?
    Merci

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    bonsoir

    je viens de faire un petit teste et il en ressort que si le nom de la feuille n'exite pas aucun défaut n'est créé et dans ce cas la liste est effectivement vide.

    donc ma question est la suivante : est-ce que tu as réellement une feuille qui s'appelle Feuil11 dans ton classeur?

  7. #7
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut
    oui, j'ai revérifié plusieurs fois et la complétition automatique du code me le confirme aussi

  8. #8
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Le problème vient sans doute de ce que renvoit ta variable i
    Juste avant la ligne de code qui remplit ton combo, teste i pour voir ce que ça donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox i
    Feuil4.ComboBox_departement1.ListFillRange = "Feuil11!A1:B" & i
    Cet autre petit test devrait te donner un résultat positif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
    i = 10
    Feuil4.ComboBox_departement1.ListFillRange = "Feuil11!A1:B" & i
    End Sub
    Autre source d'erreur éventuelle, dans ton code tu mélanges le "CodeName" de la feuille et le "Name"
    Feuil4 = CodeName --> Feuil4(Feuil36)
    Par contre Feuil11 doit être le nom de la feuille --> Feuil36(Feuil11)
    Ce point là est ok ?

  9. #9
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut
    Citation Envoyé par fring Voir le message
    Le problème vient sans doute de ce que renvoit ta variable i
    Juste avant la ligne de code qui remplit ton combo, teste i pour voir ce que ça donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox i
    Feuil4.ComboBox_departement1.ListFillRange = "Feuil11!A1:B" & i
    Cet autre petit test devrait te donner un résultat positif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
    i = 10
    Feuil4.ComboBox_departement1.ListFillRange = "Feuil11!A1:B" & i
    End Sub
    Non, i est à la bonne valeur et vaut 106, ce qui est correct, je l'ai déjà vérifié
    Citation Envoyé par fring Voir le message
    Autre source d'erreur éventuelle, dans ton code tu mélanges le "CodeName" de la feuille et le "Name"
    Feuil4 = CodeName --> Feuil4(Feuil36)
    Par contre Feuil11 doit être le nom de la feuille --> Feuil36(Feuil11)
    Ce point là est ok ?
    ah, là, par contre, j'ai utilisé le codename de la feuille.
    je fais le test avec le nom de celle-ci et revient vous donner le résultat...

  10. #10
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut
    j'ai donc mis le nom de la feuille et cela fonctionne très bien en effet.
    Merci à toi.
    Par contre, je ne souhaite afficher que la première colonne mais bon, je pense que ça je vais trouver.
    Dans tous les cas, je passe le sujet en résolu
    Merci à vous

  11. #11
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par doudouallemand Voir le message
    j'ai donc mis le nom de la feuille et cela fonctionne très bien en effet.
    Merci à toi.
    Par contre, je ne souhaite afficher que la première colonne mais bon, je pense que ça je vais trouver.
    Dans tous les cas, je passe le sujet en résolu
    Merci à vous
    ColumnCount = 1

    Ou par exemple, 3 colonnes mais on ne veut afficher que la 1 et la 3
    ColumnCount = 3
    ColumnWidth = 100 pt;0 pt;100 pt
    (100 pt à adapter selon la largeur du Combo et la largeur des données à afficher)

  12. #12
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut
    Citation Envoyé par fring Voir le message
    ColumnCount = 1

    Ou par exemple, 3 colonnes mais on ne veut afficher que la 1 et la 3
    ColumnCount = 3
    ColumnWidth = 100 pt;0 pt;100 pt
    (100 pt à adapter selon la largeur du Combo et la largeur des données à afficher)
    Oui, merci, c'est ce que j'avais fait juste après.
    Merci à toi

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

Discussions similaires

  1. Remplir une combobox multi colonnes
    Par Beef76 dans le forum VB.NET
    Réponses: 2
    Dernier message: 01/04/2011, 19h26
  2. [XL-2003] Remplir une combobox avec le contenu d'une colonne d'un autre fichier Excel
    Par funkykiwi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/02/2011, 15h50
  3. [XL-2007] remplir Le ComboBox avec la colonne A
    Par chikitin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/06/2010, 19h51
  4. Réponses: 2
    Dernier message: 07/07/2008, 18h24
  5. Remplir une ComboBox avec DEUX colonnes (ou plus ^_^)
    Par DashRendar dans le forum VB.NET
    Réponses: 3
    Dernier message: 07/02/2008, 08h54

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