Ranger une valeur saisie d'une combobox dans une cellule excel préselectionnée

Résolu
flamalex Messages postés 29 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 21 avril 2005 - 24 févr. 2005 à 15:53
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 26 févr. 2005 à 18:24
Bonjour!
j'ai une feuille excel, un userform contenant une combobox et un command bouton.

lorsque je suis sur ma feuille excel dans la colonne C, je voudrais cliquer sur une cellule(n'importe laquelle), a ce moment la, ma userform s'ouvre, me proposant une liste ds la combobox, je clic sur un element de cette liste
et cet element est envoyé dans la cellule excel, préséléctionnée préalablement.
quel serait le code svp
merci

12 réponses

mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 7
24 févr. 2005 à 17:33
Si c'est pour resteindre une cellule à une liste de choix, Excel permet de le faire automatiquement.
Exemple : tu mets dans la colonne A, pour les lignes 1 à 3 :
a (en A1)
b (en A2)
c (en A3)
Tu sélectionnes toute la colonne C, puis tu vas dans le menu Données, Validation.
Dans l'écran qui s'ouvre, tu choisis Liste dans la liste déroulante. Puis dans la zone source, tu sélectionnes ta zone A1:A3 (ou tu tapes directement =$A$1:$A$3), puis OK.
Si l'utilisateur choisit autre chose que a,b ou c, il recevra un message d'erreur.

Sinon, voila un bout de code qui devrait correspondre à tes besoins

'---------- Code à mettre sur la worksheet
Option Explicit


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Se déclenche au changement de cellule.
'Target contient la cellule d'arrivée.
If Target.Column = 3 then
Load UserForm1
Set UserForm1.l_Target = Target
UserForm1.Show vbModal
end if
End Sub

'------------ Code a mettre dans la UserForm
Option Explicit
Public l_Target As Range


Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "a"
.AddItem "b"
.AddItem "c"
End With
End Sub


Private Sub UserForm_Terminate()
l_Target.Value = ComboBox1.Text
End Sub
3
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
24 févr. 2005 à 23:11
Re,
Tu rempaces le code ci-aprés par l'autre dans le module VB de ta feuille

<STRIKE>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 3 Then UserForm1.Show
End Sub</STRIKE>

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 3 Then UserForm1.Show
End Sub

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
3
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
25 févr. 2005 à 10:34
Encore un petit mot,
Tu as remarqué qu'en cas d'annulation dans ta user form ta cellule reste en édition cela peu provoquer des plantages si tu as d'autres macros. Pour éviter cela rajoute ce code dans ta user form. Cela va sélectionner la cellule de la même ligne une case à droite. Et sortir du mode édition.

Private Sub UserForm_Terminate()
ActiveCell.Offset(0, 1).Select


End Sub

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
3
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
26 févr. 2005 à 18:24
Salut,
Dans un premier temps je ne te conseille pas de mettre deux boutons sur ta feuille
tu vas passer ton temps à cliquer lol
pour faire les modifs dont tu parle c'est assez simple change le code sous VBA par celui-ci

Private Sub CommandButton1_Click()
ActiveCell.Value = ComboBox1.Text
ActiveCell.Offset(0, -1).Value = ComboBox1.Value
Unload UserForm2
End Sub


Private Sub UserForm_Activate()
'Là tu charges ton ComboBox
' ou alors tu le lie avec une source de donné
' qui peut être une plage de cellules
' Ex:
' Toto 45E
' Titi 54F
'Tu nomes ta plage de cellules dans Excel "MaBase"
ComboBox1.RowSource = "MaBase"

' Sinon tu ajoute par code dans VBA
' Ex:
' ComboBox1.AddItem "Toto", "45E"

ComboBox1.BoundColumn = 2
ComboBox1.TextColumn = 1

End Sub

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
3

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

Posez votre question
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
24 févr. 2005 à 17:39
Salut,
T'as plus simple pour faire cela
Sélectionnes ta cellule.ensuite menu [données] validation tu choisi liste et tu suis les instruction. les items de ta liste doivent figurer sur ta feuille.

sinon dans le module VB de ta Feuille tu tapes ce code

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 3 Then UserForm1.Show
End Sub

Et dans ta UserForm ce code-ci

Private Sub CommandButton1_Click()
ActiveCell.Value = ComboBox1.Text
End Sub


Private Sub UserForm_Activate()
'Là tu charges ton ComboBox
' ou alors tu le lie avec une source de donné
' qui peut être une plage de cellules
ComboBox1.AddItem "Paramètre 1"
ComboBox1.AddItem "Paramètre 2"
ComboBox1.AddItem "Paramètre 3"
ComboBox1.AddItem "Paramètre 4"
ComboBox1.ListIndex = 0

End Sub

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
24 févr. 2005 à 17:40
Sur j'ai pas copié lol

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 7
24 févr. 2005 à 17:42
La prochaine fois, je mettrai un copyright sur ma réponse
0
mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 7
24 févr. 2005 à 17:48
les items de ta liste doivent figurer sur ta feuille.
--> J'ai découvert y a pas longtemps qu'elles ne devaient pas être obligatoirement sur la même feuille.
Supposons que tu mettes les éléments sur la Feuille2, tu sélectionnes ta zone (ex A1:A3), tu vas dans le menu Insertion, Nom, Définir...
Tu lui donnes comme nom "Toto" (c'est vachement explicite comme ça :) )
Ensuite, dans la zone Source de l'écran Validation, tu peux mettre directement : =Toto
0
flamalex Messages postés 29 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 21 avril 2005
24 févr. 2005 à 22:39
Merci beaucoup les gars, c super sympa, en plein ds le mil !!! lol
c exactement ce que je recherchais, vs etez trop bon, encore mil merci....

voici ce ke j'ai ds ma userform
Private Sub UserForm_Initialize()
ComboBox1.RowSource = "obs_detail"
End Sub

Private Sub CommandButton1_Click()
ActiveCell.Value = ComboBox1.Text
Unload UserForm2
End Sub
voici ce que j'ai ds ma feuille 2, la feuille concernée
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 3 Then UserForm2.Show
End Sub
..............................................................
j'ai une derniere question

dans ma feuille 2, on peut voir comme ci dessus, que lorsque je clic (une fois) sur une cellule de la colonne 3, boom ma userform2 s'ouvre, c super, c ce ke je vs demandais un peu plus haut, mais ma question nouvelle, c comment faire pour attendre le ''DOUBLE CLIC'' sur l'une d cellule pour ke la userform2 s'ouvre, maintenant......merci d'avance, c sympa!!! svp merci
0
flamalex Messages postés 29 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 21 avril 2005
25 févr. 2005 à 09:47
Encore merci a vous et a toi " valtrase" pour ton aide, c tres sympa, je m'attendais pas a avoir de reponse, je suis agreablement surpris, encore merci.

j'ai encore plein de questions, mais je v pas abuser!! ca fait kke jours ke je cherche sur le forum apres kke reponse, mais ya tellement de chose.
en tt cas ce qui est sur , c kil y a reponse a tt.
et ca c bien....
encore merci a vous et a ce forum
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
25 févr. 2005 à 10:12
Re,
Faut pas hésiter. Si on peu aider. En plus ça rafraichi la mémoire ........

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
flamalex Messages postés 29 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 21 avril 2005
25 févr. 2005 à 15:19
bien vu, je l'ai integret ds mon program, c bien aussi!

je voudrai faire une petite variante a tt ca!!! lol!! en fait j'essaye tjrs d'avancer! j'ai une petite question et ensuite une grosse, mais je v commencer par la petite!

lorsque je clic sur mon bouton valider actuellement
Private Sub CommandButton1_Click()
ActiveCell.Value = ComboBox1.Text
Unload UserForm2
End Sub

admettons ke j'enleve le unload

ensuite je crais un deuxieme bouton '' Private Sub CommandButton2_Click()''
et je souhaiterai en cliquant sur ce bouton, quil vienne affecter une valeur a la cellule de gauche, qui ce trouve juste a coté de la cellule qui a ete preselectionnée

exemple ds mon prog, ds la combobox, g une liste, ds cette liste je selectionne ''toto''
en selectionnant toto, celui ci vient ce mettre ds la cellule preselectionné sur excel apres le clic sur bouton1 et je souhaiterai donc que par exemple associé a toto on retouve ds la cellule juste a ca gauche, la valeur ''113D''
alors, soit kan je clic sur le bouton1 en meme tps ke toto
soit en cliquant sur un autre bouton 2 par exemple!
comment pourrai je faire?
ps: il faudrait egalement que kan je selectionne ''tata'' ds la liste ce soit un autre code par exemple ''059 C'' qui vienne s'afficher a gauche sur excel tjrs.
merci d'avance valtrase
0
Rejoignez-nous