problème liste déroulante

  • Initiateur de la discussion Initiateur de la discussion stid59
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

stid59

XLDnaute Nouveau
Bonjour,

J'effectue un satge sous Excel et j'ai un petit soucis : j'aimerai que lorsque l'utilisateur double clic dans une cellule, un formulaire s'ouvre. Ensuite, il sélectionne une valeur dans une liste déroulante puis clic sur un bouton OK. Une fenetre s'ouvre lui demandant de confirmer son choix. S'il confirme, j'aimerai que la valeur sélectionnée dans la liste soit copiée/collée dans la cellule où l'utilisateur a double cliqué.

Voici le code VB que j'ai créé :


Option Explicit
Public cible As String

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean)

cible = Target.Address
UserForm1.Show
cancel = True

End Sub
Private Sub BoutonOK_Click()

If MsgBox("Voulez-vous appliquer le motif " & ListBox1.Value & "?", vbYesNo) = vbYes Then
ActiveSheet.Range(cible).Value = ListBox1.Value
End If
SendKeys "{ENTER}"
SendKeys "{UP}"
Unload UserForm1

End Sub

Private Sub UserForm_Initialize()

'remplissage de la zone de liste
With ListBox1
.AddItem "ALM"
.AddItem "ASA"
.AddItem "ASAI"
.AddItem "ATA"
.AddItem "ATM"
.AddItem "CA"
.AddItem "CFS"
.AddItem "CGM"
.AddItem "FORM"
.AddItem "GREV"
.AddItem "JAS"
.AddItem "MAT"
.AddItem "QS"
End With

'sélectionner le premier élément de la liste
ListBox1.ListIndex = 0

End Sub



Le problème est que lorsque je sélectionne une valeur, clic sur ok puis sur oui, aucune valeur ne se met dans la cellule où j'ai double cliqué. Comment faire pour que la valeur apparaisse ?

Merci d'avance.
 
Re : problème liste déroulante

non ça ne fonctionne pas :s

Voici le code complet :

Option Explicit
Public cible As String

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean)

cible = Target.Address
UserForm1.Show
cancel = True

End Sub
Private Sub BoutonOK_Click()

If MsgBox("Voulez-vous appliquer le motif " & ListBox1.Value & "?", vbYesNo) = vbYes Then
ActiveSheet.Range(cible).Value = ListBox1.Value
End If
SendKeys "{ENTER}"
SendKeys "{UP}"
Unload UserForm1

End Sub

Private Sub UserForm_Initialize()

'remplissage de la zone de liste
With ListBox1
.AddItem "ALM"
.AddItem "ASA"
.AddItem "ASAI"
.AddItem "ATA"
.AddItem "ATM"
.AddItem "CA"
.AddItem "CFS"
.AddItem "CGM"
.AddItem "FORM"
.AddItem "GREV"
.AddItem "JAS"
.AddItem "MAT"
.AddItem "QS"
End With

'sélectionner le premier élément de la liste
ListBox1.ListIndex = 0

End Sub




En l'exécutant aucune valeur n'apparait dans la cellule ou j'ai double cliqué et je n'arrive pas à savoir pourquoi
 
Re : problème liste déroulante

Hello,

Perso j'ai fais comme ceci en supposant que "cible" c'est A1.

Dans la feuille
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean)

If Not Application.Intersect(Target, [A1]) Is Nothing Then
UserForm1.Show
cancel = True
End If

End Sub
et dans l'USF petit bout modifié
Code:
If MsgBox("Voulez-vous appliquer le motif " & ListBox1.Value & "?", vbYesNo) = vbYes Then
ActiveSheet.Range("A1").Value = ListBox1.Value
End If
Peut-être que...

Cdt, Hulk.
 
Re : problème liste déroulante

Re,

Au fait j'ai trouvé pourquoi.. il fallait mettre cible entre guillemets !
Code:
Private Sub BoutonOK_Click()

If MsgBox("Voulez-vous appliquer le motif " & ListBox1.Value & "?", vbYesNo) = vbYes Then
ActiveSheet.Range("cible").Value = ListBox1.Value
End If
SendKeys "{ENTER}"
SendKeys "{UP}"
Unload UserForm1

End Sub
et
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean)

If Not Application.Intersect(Target, Range("cible")) Is Nothing Then
UserForm1.Show
cancel = True
End If

End Sub
Cdt, Hulk.
 
Dernière édition:
Re : problème liste déroulante

Re,

Au fait je viens de me rendre compte de ce que tu veux réellement que maintenant 😱

Jordan avait raison !

Comme ceci ça joue donc
Code:
Public cible As String
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean)

cible = Target.Address
UserForm1.Show
cancel = True

End Sub
et
Code:
If MsgBox("Voulez-vous appliquer le motif " & ListBox1.Value & "?", vbYesNo) = vbYes Then
ActiveCell = ListBox1.Value
End If
Je crois que cette fois c'est bon 😀

Cdt, Hulk.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
299
Réponses
4
Affichages
254
Retour