Posez votre question Signaler

[VBA] Fonctionnement ComboBox [Résolu/Fermé]

Al1 - Dernière réponse le 18 août 2010 à 12:40
Salut à tous !

Ce que je vais vous demander n'est pas compliquer : je ne sais pas comment mettre plusieurs "noms" dans ma ComboBox.
Comment faire ?
Merci !
Lire la suite 
Réponse
+48
moins plus
Me.Combobox1.AddItem "Lundi"
Me.Combobox1.AddItem "Mardi"

Al1- 13 août 2005 à 10:43
OK ! C'est impec, ca marche ! Merci beaucoup !

Maintenant j'ai 3 autres questions :
1. A quoi sert le Me en premier ? j'ai essayé sans et ca fonctionnait aussi.
2. J'ai une barre de défilement horizontale qui s'affiche alors que mes items rentrent largement dans la combobox. Comment on fait pour l'enlever ?
3. Quand je voudrais savoir ce qui a été sélectionné, le code sera :
If Me.ComboBox1.Item = "Lundi" then... ?

Merci pour tout !
Réponse
+30
moins plus
il y a deux façons pour mettre du contenu dans l'objet combobox
dans Microsoft Excel
les deux sont faciles à réaliser.
la première méthode consiste à utiliser la propriété du contrôle combobox nomée ROWSOURCE (voir les propriétés du cont^rôle lorsque vous cliquez sur celui-ci)
la seconde consiste à tapez du code en utilisant la propriété ADDITEM du contrôle Combobox
ce qui suit des exemples pour chaque methode.
(utilisation de données de la feuille Excel):
Exemple Première methode:
- dans les cellules A1 à A3 de la feuille Excel, entrez les textes Produit1, ProduitB, ProduitC.
-poser un label sur votre Userform.
- poser une zone de liste modifiable sur votre Userform
- recherchez la propriété RowSource de la ComboBox1 et entrez les références à la feuille Excel comme ceci: Feuil1!A1:A3 ( Il s'agit tout simplement de la source des données affichées dans la ComboBox)
- recherchez la propriété Value et donnez lui comme valeur: Choisir
- poser un bouton de commande et entrez le code suivant:
Private Sub CommandButton1_Click()
Label1.caption = ComboBox1.Value
End Sub
- exécuter le programme
Exemple Deuxième mèthode :
- sélectionnez la combobox1 vérifiez que la propriété ROWSOURCE est Vide.
- double-cliquez sur le userform pour accèder au code
- entrez le code suivant
Private Sub UserForm_Initialize()
ComboBox1.AddItem "New york"
ComboBox1.AddItem "Paris"
ComboBox1.AddItem "Oslo"
End Sub
- exécuter le programme
A chaque clic sur le bouton, l'intitulé affiche la valeur sélectionnée. l'utilisateur peut ajouter des entrées dans la combobox sans probléme.
Bon courage

Réponse
+14
moins plus
1. "Me" est l'objet "parent" de la combobox1, qui peut-être par exemple un feuille excel (=onglet) ou un formulaire.

Exemple : si ta combobox s'appelle ma_boite (tu peux la renommer dans le champ "name" des propriétés), et qu'elle est sur l'onglet "feuil1", il faudra la désigner comme feuil1.ma_boite
Tu peux donc avoir des combobox qui portent le même nom sur différents onglets (elles n'auront pas le même parent). Si tu appelles directement ma_boite, le VB ne saura pas qui appeler s'il y a ambiguité (sinon ça marche tu l'as vu, VB "devine" avec le contexte)

2. celà vient du fait que la propriété Columnwidths doit avoir une valeur supérieure à "Width". Tu peux laisser Columnwidths vide (sinon, si tu as plusieurs colonnes, il faut indiquer les différentes largeurs en points séparées par des points-virgules)

3. non, il faudra utiliser soit me.combobox.value, qui renvoit la valeur de la ligne sélectionné, et de la colonne indiquée par la propriété boundcolumn (par défaut 1 = première colonne)

Al1- 18 août 2005 à 22:02
Merci !

Maintenant je pense que c'est ma toute derniére question :
dans la premiére réponse que j'ai reçu j'ai eu pour ligne de commande "ComboBox.AddItem..."
Le probléme est qu'à chaque fois que j'utilise la combobox, j'ai ça :
_ 1ére utilisation : 2 choix (normal)
_ je resélectionne, 2 éme utilisation : 4 choix qui sont 2 fois les mêmes etc...

Quel est la bonne ligne de commande pour éviter ça ?
WhiteFang 2075Messages postés dimanche 1 septembre 2002Date d'inscription 15 février 2008Dernière intervention - 5 sept. 2005 à 16:19
;-)

Houlà houlà, Vince75 !

Dans l'exemple que tu donnes : L'objet Me ne pourra jamais être une feuille !! L'objet Me, c'est la UserForm en cours !! Ca, c'est du vieil Excel où la définition de ta boîte de dialogue était dans la feuille !! Une boîte de dialogue, maintenant, n'est plus sur une feuille, c'est un objet à part... Et bon, cela m'étonnerais qu'il tourne sous Excel 7 ou 95...

Je dis juste ça car le post "date" un peu, mais le reste n'est pas tout à fait vrai non plus... Sorry...

;-)
Réponse
+12
moins plus
Salut,

avant de recharger, vider la combo avec l'instruction :

Me.Combobox1.Clear

Lupin

Réponse
+7
moins plus
Bonjour,

Il y a plusieurs possibilités d'exploiter la selection d'un utilisateur dans une combobox.
On peut exploiter directement le choix sur l'évènement change de la ComboBox, c'est à dire que dès que l'utilisateur séléctionne une valeur dans la liste de la ComboBox, il se passe quelque chose immédiatement :
Par exemple :
Private Sub Combo1_Change()
     Call AfficheSelect(Combo1.Text)
End Sub

Private Sub AfficheSelect(Byval str As Variant)
     MsgBox "Vous avez sélectionné : " & str & ".",,"Message"
End Sub


On peut également faire la même chose sur le click d'un bouton de confirmation par exemple.

Private Sub boutonOk_Click()
     Call AfficheSelect(Combo1.Text)
End Sub


...

C'est, je pense, les 2 façons les plus simples.
J'espère avoir répondu.
Bon courage

;o)

Polux

Réponse
+5
moins plus
Bonjour,

Pour afficher la selection dans la cellule :
worksheets(1).Range("J3").Value = ComboBox1.Text

Pour afficher une valeur de la liste automatiquement :
ComboBox1.ListIndex = 0

Sachant que "0" est le premier élément de la liste. Ou faire :
ComboBox.Text = "mon élément"

;o)

polux

Réponse
+3
moins plus
salut!
Taper les noms que vous mettez dans une colonne dans feuil excel, aprés allez à la propriété de comobox et dans rowsource remplir son case avec la référense de plage comme exemple d8:d19.

Ce document intitulé «  [VBA] Fonctionnement ComboBox  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.