Paramétrer une combobox - VBA Excel

Signaler
Messages postés
44
Date d'inscription
jeudi 8 décembre 2011
Statut
Membre
Dernière intervention
14 mars 2012
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
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
Messages postés
44
Date d'inscription
jeudi 8 décembre 2011
Statut
Membre
Dernière intervention
14 mars 2012

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
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
Messages postés
44
Date d'inscription
jeudi 8 décembre 2011
Statut
Membre
Dernière intervention
14 mars 2012

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
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
Messages postés
44
Date d'inscription
jeudi 8 décembre 2011
Statut
Membre
Dernière intervention
14 mars 2012

1) Dans ce cas, j'y regarderai

2) Ma combobox est bien sur une feuille de calcul
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
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
Messages postés
44
Date d'inscription
jeudi 8 décembre 2011
Statut
Membre
Dernière intervention
14 mars 2012

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..
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
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
Messages postés
44
Date d'inscription
jeudi 8 décembre 2011
Statut
Membre
Dernière intervention
14 mars 2012

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
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