[resolu]Ajouter un liste à un combobox

Ajouter un liste à un combobox [resolu] - VB/VBA/VBS - Programmation

Marsh Posté le 27-06-2006 à 13:56:38    

Salut
 
J'aimerais ajouter une liste de mots à mon Combo box et qu'elle ne puisse pas etre modifiable, en gros faire un menu déroulant.
 
Merci pour votre aide

Message cité 1 fois
Message édité par lden le 28-06-2006 à 10:42:09
Reply

Marsh Posté le 27-06-2006 à 13:56:38   

Reply

Marsh Posté le 27-06-2006 à 14:17:37    

lden a écrit :

Salut
 
J'aimerais ajouter une liste de mots à mon Combo box et qu'elle ne puisse pas etre modifiable, en gros faire un menu déroulant.
 
Merci pour votre aide


pour l'ajout de la liste de mots, passe par rowsource, pour la modification de cbobox, dans propriétés...

Reply

Marsh Posté le 27-06-2006 à 14:25:19    

huum mais la ca me fait passer par un user form. Ce que je souhaiterai c'est d'avoir déjà les donnée dans le code VBA de la list box

Reply

Marsh Posté le 27-06-2006 à 14:42:57    

Bonjour,
Plusieurs options :
 
1: Si tu veux mettre les valeurs de ta liste en "dur" dans le code :
   combobox1.additem valeur1
   combobox1.additem valeur2 ...
 
2 :tu n'es pas obligé d'avior un userform pour utiliser rowsource.
 
3: Tu peux dans excel (si c'est excel) créer une "liste de choix" par l'option "données" puis "validation" etc...

Reply

Marsh Posté le 27-06-2006 à 15:06:37    

merci Paul, mais le pb c'est que chaque fois qu'il y aura une action sur le combo box cela remplira indefiniement mon combobox...

Reply

Marsh Posté le 27-06-2006 à 15:09:18    

lden a écrit :

merci Paul, mais le pb c'est que chaque fois qu'il y aura une action sur le combo box cela remplira indefiniement mon combobox...


pas nécessairement, tu peux mettre une variable booléenne ou une valeur dans une cellule, et dans le cas où ta cells().value est à tant, tu mets à jour ta cbobox, sinon tu ne fais rien.

Reply

Marsh Posté le 27-06-2006 à 15:10:50    

Il faut en dire un peu plus...
Apparamment ton combobox est sur une feuille mais je comprend spas pourquoi il devrait ce remplir indéfiniment lorsqu'il y a une action dessus ?

Reply

Marsh Posté le 27-06-2006 à 15:11:03    

oui mais pour la premiere fois que tu passes dans ta combobox....ca ne te met pas a jour! donc rien ne t'es proposé

Reply

Marsh Posté le 27-06-2006 à 15:13:57    

Paul voila ce tout simple je souhaite juste avoir une liste deroulante avec des valeur en dur proposée un code du style::
 
Private Sub ComboBox1_Change()
ComboBox1.AddItem "valeur1"
ComboBox1.AddItem "valeur2"
End Sub
 
ici a chaque fois que le combobox change il me rajoute valeur 1 et 2 donc si le combobox change n fois j'ai n fois valeur 1 et 2 dans la liste... pas nickel.
si je choisi click il en va de meme...
 
moi je veux que le type est son menu tout pres des qu'il clique sur la fleche a droite du combobox...rien de plus

Reply

Marsh Posté le 27-06-2006 à 15:16:33    

lden a écrit :

oui mais pour la premiere fois que tu passes dans ta combobox....ca ne te met pas a jour! donc rien ne t'es proposé


et pourkoi ca ?
tu mets un  
 
cbobox_mousemove()
if cells(1,1).value="0" then
cbobox.additem....
cells(1,1).value = "1"
end if

Reply

Marsh Posté le 27-06-2006 à 15:16:33   

Reply

Marsh Posté le 27-06-2006 à 15:19:08    

Si tu veux garder ton combobox1_change()
ajoute au début : combobox1.clear

Reply

Marsh Posté le 27-06-2006 à 15:26:43    

Merci à vous deux!!!!

Reply

Marsh Posté le 27-06-2006 à 15:45:33    

en fait le pb est pas fini car suivant cette syntaxe de code :
 
Private Sub ComboBox1_Click()
 
ComboBox1.AddItem "TOTAL"
ComboBox1.AddItem "UDP"
 
If ComboBox1.Value = "TOTAL" Then
    MsgBox ("TOTAL" )
ElseIf ComboBox1.Value = "UDP" Then
     
Else
     
End If
ComboBox1.Clear
End Sub
 
Mon combobox ne se rempli jamais...

Reply

Marsh Posté le 27-06-2006 à 15:46:53    

pkoi ne passes tu pas par les mousemove ?

Reply

Marsh Posté le 27-06-2006 à 15:47:15    

il fauat mettre le combobox.clear au début de la procédure PAS A LA FIN !!

Reply

Marsh Posté le 27-06-2006 à 15:48:08    


de plus, lorsque tu cliques, tu ne sélectionnes pas forcément une valeur, et comme tu clear ta cbobox à la fin et pas au début comme on te l'a dit, ben fatalement ca marchera po :bounce:

Reply

Marsh Posté le 27-06-2006 à 16:17:48    

Bon, premierement je fais tout sur un dropbuttonclick
le combobox1.clear au debut c'est ok pour eviter que le menu gonfle , le probleme c'est que meme si l on selectionne une valeur, la valeur du combobox1 est toujours nulle, donc ....apres pour traiter la valeur du combobox1 on peut aller se rhabiller!
 
Moi je propse cela comme code; le probleme c'est que si l'utilisateur clique plusieurs fois sur la petite fleche deroulante du menu, le menu gonfle!
 
Private Sub ComboBox1_DropButtonClick()
Call coco
End Sub
 
Function coco()
 
Dim etat As Integer
 
ComboBox1.AddItem "TOTAL"
ComboBox1.AddItem "UDP"
etat = 0
 
If ComboBox1.Value = "TOTAL" Then
    MsgBox ("TOTAL" )
    etat = 1
ElseIf ComboBox1.Value = "UDP" Then
    etat = 1
Else
    etat = 0
End If
If etat = 1 Then
    ComboBox1.Clear
ElseIf etat = 0 Then
 
End If
End Function
 

Reply

Marsh Posté le 27-06-2006 à 16:20:59    

tu sais que si tu nous donnais les informations utiles dès le début, on misèrerait moins :D
tu peux stocker la valeur de ta comboxbox dans une cellule, et après tu affiches dans ta msgbox la valeur de la cellule...

Reply

Marsh Posté le 27-06-2006 à 16:25:18    

ce bon j'ai trouvé!
 
Function coco()
 
Dim etat As Integer
 
ComboBox1.AddItem "TOTAL"
ComboBox1.AddItem "UDP"
etat = 0
 
If ComboBox1.Value = "TOTAL" Then
    MsgBox ("TOTAL" )
    etat = 1
ElseIf ComboBox1.Value = "UDP" Then
    etat = 1
Else
    ComboBox1.Clear
    ComboBox1.AddItem "TOTAL"
    ComboBox1.AddItem "UDP"
End If
If etat = 1 Then
    ComboBox1.Clear
End If
End Function
 
 
+++ et merci pr votre aide

Reply

Marsh Posté le 27-06-2006 à 16:25:22    

Ca marche pas avec ca ?
 
If ComboBox3.Value = "TOTAL" Then
    MsgBox ("TOTAL" )
Else
    If ComboBox3.Value = "UDP" Then MsgBox ("UDP" )
End If
 
 
ComboBox3.Clear
 
ComboBox3.AddItem "TOTAL"
ComboBox3.AddItem "UDP"

Reply

Marsh Posté le 27-06-2006 à 16:36:44    

Derniere question de mise en forme!
 
Pourquoi une fois selection faite dans le menu deroulant la valeur de la selection ne reste pas dans le combobox1...

Reply

Marsh Posté le 27-06-2006 à 16:39:51    

lden a écrit :

ce bon j'ai trouvé!
 
Function coco()
 
Dim etat As Integer
 
ComboBox1.AddItem "TOTAL"
ComboBox1.AddItem "UDP"
etat = 0
 
If ComboBox1.Value = "TOTAL" Then
    MsgBox ("TOTAL" )
    etat = 1
ElseIf ComboBox1.Value = "UDP" Then
    etat = 1
Else
    ComboBox1.Clear
    ComboBox1.AddItem "TOTAL"
    ComboBox1.AddItem "UDP"
End If
If etat = 1 Then
    ComboBox1.Clear
End If
End Function
 
 
+++ et merci pr votre aide


parce que si tu as une valeur de sélectionnée tu as mis état a 1 et donc tu clear ta cbobox...

Reply

Marsh Posté le 27-06-2006 à 16:40:35    

oue je suis con moi!!!

Reply

Marsh Posté le 27-06-2006 à 16:42:11    

ca devient un casse tete ce truc!

Reply

Marsh Posté le 27-06-2006 à 16:43:41    

lden a écrit :

ca devient un casse tete ce truc!


non, dès l'instant que tu respectes ton idée de départ et que tu suis ton plan, ca marche tout seul ^^

Reply

Marsh Posté le 27-06-2006 à 17:21:19    

Le problème maintenant c'est de savoir ce que tu veux faire et avec quoi ?
Avec _change, _click, ou _DropButtonClick ?
Et pourquoi tu veux mettre à jour ta liste à chaque fois ?

Reply

Marsh Posté le 27-06-2006 à 17:32:12    

et bien ma liste ce un menu deroulant!
le mec a le choix entre plusieurs valeur.
L'action la plus banale qu'il fasse c'est donc actionner avec la fleche a droite(DropButtonClick) pour choisir soit UDP soit TOTAL soit...
 
et je veux qu'il voit qd meme ce qu'il a choisi; le probleme c'est que le ComboBox1.Clear efface la valeur après donc bien que la valeur est été prise en compte le type n'a pas moyen de visualiser ce qu'il a choisi... c'est donc pour cela que ddans un autre post je demande comment faire une pause ....pour que son choix reste affiché pendant un instant!!!!!!!!

Reply

Marsh Posté le 28-06-2006 à 08:10:20    

Si tes valeurs ne bougent pas "Total" et UDP" pourquoi ne pas les mettre dans ton combobox au moment où tu active la feuille. Tu le fais une fois pour toute.
 
Private Sub Worksheet_Activate()
  ComboBox1.AddItem "TOTAL"
  ComboBox1.AddItem "UDP"
  Combobox1.text="TOTAL" 'pour faire afficher la valeur
End Sub
 
et après tu gères le changement de valeur dans ta combobox
Private Sub ComboBox1_Change()
  If ComboBox1.Value = "TOTAL" Then
    MsgBox ("TOTAL" )
  Else
    If ComboBox1.Value = "UDP" Then MsgBox ("UDP" )
  End If
end sub
 
Ca doit faire ce que tu veux si j'ai j'ai compris !!!

Reply

Marsh Posté le 28-06-2006 à 10:15:30    

ce bon paul j'ai géré avec une tempo....
Je te remercie bcp!
 
bonne journée

Reply

Marsh Posté le 28-06-2006 à 10:26:00    

pense à clore le topic stp =)

Reply

Marsh Posté le 28-06-2006 à 10:42:11    

Bonjour!
 
Je viens de lire ce topic et j'ai une petite question. en gros, je souhaite faire une zone de liste déroulante (via la barre Formulaires de Excel) avec des données non présente sur ma feuille. En effet, le remplissage de la liste déroulante en passant par Format de controle (clic droit)/Controle impose de préciser une plage de données de type "range" qui préexiste. en gros je voudrais remplir ma liste avec des données qui ne figurent pas dans des cellules de ma feuille Excel.
 
merci pour votre aide

Reply

Marsh Posté le 28-06-2006 à 10:43:49    

ici on n'utilise pas de cellules pour remplir les items de lla cbobox tu remarqueras... :pt1cable:

Reply

Marsh Posté le 28-06-2006 à 10:46:45    

ok voila le code:
 
Private Sub ComboBox1_DropButtonClick()
Call coco
End Sub
 
Function coco()
 
Dim etat As Integer
 
ComboBox1.AddItem "Ta premiere valeur"
ComboBox1.AddItem "Ta seconde valeur" 'autant que tu veux!!
 
If ComboBox1.Value = "V1" Then
    PauseTimer (3)    
' c'est la seule solution que j'ai trouvé pour que tu  saches ce que tu 'selectionnes
    ComboBox1.Clear
ElseIf ComboBox1.Value = "V2" Then
    PauseTimer (3) 'pause de trois seconde pr freezer ton combobox
    ComboBox1.Clear
Else
    ComboBox1.Clear
    ComboBox1.AddItem "V1"
    ComboBox1.AddItem "V2"
End If
 
End Function
 
Sub PauseTimer(ByVal nSecond As Single)
Dim t0 As Single
     'temps de référence
     t0 = Timer
     'boucle d'attente
     Do While Timer - t0 < nSecond
           Dim dummy As Integer
           dummy = DoEvents()
           'si on dépasse minuit,il faut
           'retrancher un jour
           If Timer < t0 Then
               t0 = t0 - 24 * 60 * 60
           End If
     Loop
End Sub
 
 
@++

Reply

Marsh Posté le 28-06-2006 à 10:47:35    

justement jpcheck!  mon code correspond a sa demande!

Reply

Marsh Posté le 28-06-2006 à 10:47:37    

en fait, je crois qu'il faut plutot utiliser la "boite à outils de controles" pour pouvoir éditer le code ss VBA, non? c'est impossible en utilisant une zone de liste déroulante de la barre "formulaires" (on peut récupérer le code?)?


Message édité par acrosomia le 28-06-2006 à 10:48:57
Reply

Marsh Posté le 28-06-2006 à 10:48:52    

oui acrosomia tu fais une comobobox, puis tu mets le code ss VBA que je t'ai donné....

Reply

Marsh Posté le 28-06-2006 à 10:52:33    

merci. et à quoi sert le champ (après un clic droit) "objet Zone de liste modifiable>edition"? on peut taper des trucs dans la cobobox après, on dirait...

Reply

Marsh Posté le 28-06-2006 à 10:55:35    

bon, ce trucs tu veux les rentrer dans ta combobox ou tu veux qu'ils soient deja proposé dans ton menu?
d'autre part je ne vois pas ou tu as trouvé "objet Zone de liste...."

Reply

Marsh Posté le 28-06-2006 à 11:02:07    

34 messages pour écrire et lire dans un combobox !!!!
 
Combien pour générer des controles en dynamique ???

Reply

Marsh Posté le 28-06-2006 à 11:06:53    

ce que je veux:
1/sur une sheet excel, l'opérateur sélectionne une des valeurs proposées dans la liste déroulante (en fait mes valeurs sont 'uniforme' et 'variable' et ne bougeront JAMAIS, elles sont en "dur" ). le choix d'une des valeurs doit en suite activer une cascade d'evenements (style bloquer des cellules ou ecrire qqch de special ds une cellule spécifique etc...).
Bien sur, qd lutilisateur sauvegardera sa sheet, la dernière valeur selectionnée de la liste doit rester à la prochaine ouverture de la feuille excel (et non etre resetée).
 
2/pour "objet zone de ..." qd tu crées ton objet conbobox sur ta feuille, tu le selectionnes (en étant en mode création) et tu fais clic droit et bingo! je sais pas à quoi ça sert...
 
3/pour mon cas, un controle ListBox ne suffirait-il pas?


Message édité par acrosomia le 28-06-2006 à 11:11:07
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed