Ranger une valeur saisie d'une combobox dans une cellule excel préselectionnée [Résolu]

Messages postés
29
Date d'inscription
jeudi 9 novembre 2000
Dernière intervention
21 avril 2005
- 24 févr. 2005 à 15:53 - Dernière réponse :
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Dernière intervention
17 mars 2017
- 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
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
402
Date d'inscription
jeudi 25 novembre 2004
Dernière intervention
7 juin 2009
24 févr. 2005 à 17:33
3
Merci
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

Merci mrdep1978 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Meilleure réponse
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Dernière intervention
17 mars 2017
24 févr. 2005 à 23:11
3
Merci
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é

Merci valtrase 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Meilleure réponse
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Dernière intervention
17 mars 2017
25 févr. 2005 à 10:34
3
Merci
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é

Merci valtrase 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Meilleure réponse
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Dernière intervention
17 mars 2017
26 févr. 2005 à 18:24
3
Merci
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é

Merci valtrase 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Dernière intervention
17 mars 2017
24 févr. 2005 à 17:39
0
Merci
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é
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Dernière intervention
17 mars 2017
24 févr. 2005 à 17:40
0
Merci
Sur j'ai pas copié lol

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
Messages postés
402
Date d'inscription
jeudi 25 novembre 2004
Dernière intervention
7 juin 2009
24 févr. 2005 à 17:42
0
Merci
La prochaine fois, je mettrai un copyright sur ma réponse
Messages postés
402
Date d'inscription
jeudi 25 novembre 2004
Dernière intervention
7 juin 2009
24 févr. 2005 à 17:48
0
Merci
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
Messages postés
29
Date d'inscription
jeudi 9 novembre 2000
Dernière intervention
21 avril 2005
24 févr. 2005 à 22:39
0
Merci
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
Messages postés
29
Date d'inscription
jeudi 9 novembre 2000
Dernière intervention
21 avril 2005
25 févr. 2005 à 09:47
0
Merci
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
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Dernière intervention
17 mars 2017
25 févr. 2005 à 10:12
0
Merci
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é
Messages postés
29
Date d'inscription
jeudi 9 novembre 2000
Dernière intervention
21 avril 2005
25 févr. 2005 à 15:19
0
Merci
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.