Ajouter un liste à un combobox [resolu] - VB/VBA/VBS - Programmation
Marsh Posté le 27-06-2006 à 14:17:37
lden a écrit : Salut |
pour l'ajout de la liste de mots, passe par rowsource, pour la modification de cbobox, dans propriétés...
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
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...
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...
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.
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 ?
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é
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
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
Marsh Posté le 27-06-2006 à 15:19:08
Si tu veux garder ton combobox1_change()
ajoute au début : combobox1.clear
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...
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 !!
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
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
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
tu peux stocker la valeur de ta comboxbox dans une cellule, et après tu affiches dans ta msgbox la valeur de la cellule...
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
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"
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...
Marsh Posté le 27-06-2006 à 16:39:51
lden a écrit : ce bon j'ai trouvé! |
parce que si tu as une valeur de sélectionnée tu as mis état a 1 et donc tu clear ta cbobox...
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 ^^
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 ?
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!!!!!!!!
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 !!!
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
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
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...
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
@++
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?)?
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é....
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...
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...."
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 ???
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?
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 édité par lden le 28-06-2006 à 10:42:09