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