Paramétrer une combobox - VBA Excel

talined Messages postés 44 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 14 mars 2012 - 22 janv. 2012 à 09:26
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 22 janv. 2012 à 13:28
Bonjour,

Je souhaiterai paramétrer une combobox sur VBA Excel avec 2 seules variables : "Simple" et "Composé".
J'aimerai que l'utilisateur n'est le choix qu'entre ces 2 variables, via la liste déroulante, et ne puisse pas entrer une autre variable.

J'ai essayé avec la fonction "AddItem", mais à chaque fois que je selectionne une des 2 variables, elle se démultiplie... Si bien qu'en cliquant 4 fois sur Simple, j'ai 4 "Simple" qui s'affiche sur ma combobox.


Quelqu'un aurait la solution pour bloquer 2 seules variables??

Merci!

11 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2012 à 09:31
Bonjour,

Je ne suis pas certain d'avoir compris la problématique exposée.

Peux-tu détailler la chose ?
Plus particulièrement en ce qui concerne ce que tu entends exactement par "paramétrer" ?*
Peux-tu également montrer le code tenté (il nous permettra peut-être de comprendre ce que tu cherches à faire) ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
talined Messages postés 44 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 14 mars 2012
22 janv. 2012 à 10:06
En fait, je voudrais que la combobox ne m'affiche que 2 variables possibles à selectionner : "Simple" ou "Composée". Dans le même temps, je voudrais bloquer ma combobox de toute nouvelle entrée manuelle.

Voici mon code

..........
Private Sub ZLD_MODEAMT_Change()

With ZLD_MODEAMT
.AddItem "Simple"
.AddItem "Composée"

End With
End Sub
..........

Avec ce code, quand je clique sur les 2 variables, elles se démultiplient dans ma liste deroulante.. Et je peux également rentrer manuellement n'importe quelle valeurs dans celle-ci alors que j'aimerai la bloquer.

Merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2012 à 10:09
Je veux bien répondre à une telle question, mais pas avant de t'avoir vivement incité à utiliser dans un tel cas (bien mois cher en ressources) deux optionbuttons au lieu de cette combobox (plus lourde)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
talined Messages postés 44 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 14 mars 2012
22 janv. 2012 à 10:20
D'accord.
Mais j'ai entendu dire qu'il y avait un moyen, via les propriétés de la combobox, de stocker les valeurs dans la feuille Excel, et de les lier directement à la zone de liste. Sais-tu comment cela fonctionne?

Effectivement j'y avais pensé pour l'optionbutton
Comment Je peux adapter mon code à ce bouton?

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2012 à 10:43
Bonjour,

tu me parais mélanger un peu tout...

1) je ne répondrai pas en ce qui concerne les boutons d'option. Trop rudimentaire et il te suffira de lire un peu ton aide VBA, hein !
2) en ce qui concerne ta combobox que tu veux lier à une plage : est-elle sur un userform ou sur une feuille de calcul (car réponses totalement différentes dans un cas et dans l'autre !)



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
talined Messages postés 44 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 14 mars 2012
22 janv. 2012 à 10:48
1) Dans ce cas, j'y regarderai

2) Ma combobox est bien sur une feuille de calcul
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2012 à 11:34
alors pas de propriété rowsource, dans un tel cas, pour une combobox placée sur une feuille de calcul
et il faut donc gérer autrement une instruction.
Genre :

 ComboBox1.Clear
    ComboBox1.Locked = False
    ComboBox1.AddItem Sheets("Feuil1").Range("A1")
    ComboBox1.AddItem Sheets("Feuil1").Range("A2")
    ComboBox1.Locked = True

Où Feuil1 est à remplacer par le nom de TA feuille en cause


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
talined Messages postés 44 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 14 mars 2012
22 janv. 2012 à 11:46
Merci.

Par contre, j'ai 2 problemes avec ce code :
- La variable que je choisis dans la zone de liste ne reste pas dans la combobox.
- Mes 2 variables sont en double dans la zone de liste..
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2012 à 11:52
Comment cela, elle n'y "reste" pas ?
Tu veux dire qu'elle n'apparait pas dans la zone de saisie ! et pour cause (puisque Locked = True). Mais elle y est.
Ton problème est probablement que tu fais partie de ceux qui, pour connaître l'article choisi, vont relever (Combobox1.text) ce qui apparait dans la zone de saisie ! solution de facilité qui n'est qu'une fort mauvaise habitude ! Il y a d'autres méthodes qui, elles, sont orthodoxes, non ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
talined Messages postés 44 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 14 mars 2012
22 janv. 2012 à 12:06
Oui c'est bien ca. Et ca me pose probleme car l'utilisateur ne sait point ce qu'il a choisi...
C'est bien dommage.

Je vais peut être essayer de paramétrer ces variables avec optionbutton, ca sera surement plus simple..

Merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 janv. 2012 à 13:28
Oui, les optionbuttons sont la vraie solution dans un tel cas.
Mais : quand tu dis à propos d'une combobox :
Et ca me pose probleme car l'utilisateur ne sait point ce qu'il a choisi...

tu me désespères !
Je voudrais quant à moi te dire ceci :
Quand je suis passé d'un OS/langage (Pick, où les comboboxes n'existent pas) à l'autre (VB sous Windows, donc), c'était il y a environ 15 ans. Et je n'avais pas accès à Internet et les forums d'aide n'existaient de toutes manières pas. Il ne me restait que l'aide VB, dont j'ai décortiqué chaque élément, au fur et à mesure de mes besoins.
Maintenant :
- voilà 24 heures que tu "travailles" sur des exemples que tu attends, bec ouvert
- il ne m'a fallu que quelques minutes, par mon analyse faite, à l'époque, des propriétés d'un contrôle combobox, pour découvrir et comprendre ceci :
--- il possède une propriété List (tous ses articles), indexée.
--- dans cette propriété, il y a des index. Celui qui est cliqué a la valeur de ListIndex.

et que donc : ComboBox1.List(ComboBox1.ListIndex) ne peut que me retourner le contenu de ce que j'ai cliqué !

24 heures d'un côté, quelques minutes d'analyse de l'autre . Cherche l'erreur !
Tu devrais faire comme moi (lire ton aide en ligne) , peut-être, non ? (d'autant que j'ai commencé cette démarche à l'époque (il y a 15 ans) où j'étais TRES "jeune" - à peine 55 ans !!!). On constate ici le temps que tu aurais gagné en agissant ainsi.



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
-1
Rejoignez-nous