Insérer MsgBox YesNoCancel dans une macro
Je souhaite que vous m'apportiez vos savoirs sur un blocage au niveau de l'insertion d'une MsgBox dans ma macro
Je voulais si la réponse est oui alors les valeurs seront copies
Mais sinon la cellule de saisie D1 sera effacée et sortie de la macro
Est si Annuler sortir de la MsgBox sans rien faire (la valeur sur D1 ne va pas être effacée)
Mais si une valeur n'est pas présente dans la base de données, la macro ne va pas intervenir
Avant d'insert la MsgBox ma macro marche parfaitement
Mon fichier ci-joint
d'avance, merci pour votre aide
Bonjour
réponse = MsgBox("Exemple Oui Non Annuler", vbExclamation + vbYesNoCancel)
If réponse = 6 Then
'cas où on a cliqué sur "Oui" dans la boite de dialogue
ElseIf réponse = 7 Then
'cas où on a cliqué sur "Non" dans la boite de dialogue
ElseIf réponse = 2 Then
'cas où on a cliqué sur "Annuler" ou si on a refermé sans cliquer
'sur aucun bouton dans la boite de dialogue
End IfA toi d'écrire la macro correspondant à chacun des cas.
OK ?
Bye !
Bonsoir gmb,
Merci pour la macro :) mais j’ai une question
Votre macro je doit la mettre après mon code ou ?
Sub Test_vr()
Dim ws_1 As Worksheet
Dim ws_2 As Worksheet
Dim Valeur_Test As String
Dim DerniereLigne As Integer
Dim Lig
Dim réponse As Integer
réponse = MsgBox("Exemple Oui Non Annuler", vbExclamation + vbYesNoCancel)
If réponse = 6 Then
'cas où on a cliqué sur "Oui" dans la boite de dialogue
'Il faut donc écrire ici ce que doit faire la macro si on a cliqué sur "Oui" :
'...
'...
'...
ElseIf réponse = 7 Then
'cas où on a cliqué sur "Non" dans la boite de dialogue
'Il faut donc écrire ici ce que doit faire la macro si on a cliqué sur "Non" :
'...
'...
'...
ElseIf réponse = 2 Then
'cas où on a cliqué sur "Annuler" ou si on a refermé sans cliquer
'sur aucun bouton dans la boite de dialogue
'Il faut donc écrire ici ce que doit faire la macro si on a cliqué sur "Annuler" :
'...
'...
'...
End If
'Set ws_1 = Worksheets(1)
'Set ws_2 = Worksheets(2)
'Valeur_Test = ws_1.Cells(1, 4).Value
'DerniereLigne = ws_2.Cells(65536, 4).End(xlUp).Row
'Set Rech = ws_2.Columns(4).Find(Valeur_Test)
'If Not Rech Is Nothing Then
Lig = Rech.Row
'End If
'If réponse = vbYes Then
'ws_2.Range(ws_2.Cells(Lig, 1), ws_2.Cells(Lig, 1)).Copy ws_1.Cells(15, 2)
'ws_2.Range(ws_2.Cells(Lig, 2), ws_2.Cells(Lig, 2)).Copy ws_1.Cells(15, 4)
'ws_2.Range(ws_2.Cells(Lig, 3), ws_2.Cells(Lig, 3)).Copy ws_1.Cells(18, 3)
'ws_2.Range(ws_2.Cells(Lig, 5), ws_2.Cells(Lig, 5)).Copy ws_1.Cells(18, 5)
'ElseIf réponse = vbNo Then
'ws_1.Cells(1, 4).ClearContents
'Else: Exit Sub
'End If
End Subbonjour gmb,
Ca marche pas votre solution, car au début ma macro se déclenche une fois une valeur double est saisie
Cependant je voulais ajouter le msgbox s’affiche pour les trois boutant
Oui = extraire
Non = effacer la cellule D1 est quitter la sub
Annuler = exit sub
Pour votre proposition même si je le mets sur private sub worksheet_change ca va s’exécuter a chaque changent de valeur sur la cellule même si la valeur n’ai pas doublon ainsi quand je fait "non" D1 est effacé mais le msgbox reste affiché
je vous joint mon fichier
Merci
Salut,
Je verrais plutôt un code minimaliste comme ceci, tu dois modifier les deux procédures.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$1" And Target.Value <> "" Then
Call Test_vr(Target)
End If
End Sub' // Test_vr By Jean-Paul (Valtrase) le : 10/03/2022
' // Procédure de test select case
Sub Test_vr(ByRef CellSearch As Range)
Dim ws_2 As Worksheet
Dim DerniereLigne As Integer
Dim Lig
Dim Rech As Range
Set ws_2 = Worksheets(2)
DerniereLigne = ws_2.Cells(65536, 4).End(xlUp).Row
Set Rech = ws_2.Columns(4).Find(CellSearch)
Application.EnableEvents = False
If Not Rech Is Nothing Then
Select Case MsgBox("Le texte recherché à été trouvé. Sélectionnez ce que vous voulez faire" & vbCrLf _
& "" & vbCrLf _
& "Cliquez sur OUI pour extraire la cellule." & vbCrLf _
& "Cliquez sur NON pour effacer la recherche et quitter la procédure." & vbCrLf _
& "Cliquez sur ANNULER pour quitter la procédure." & vbCrLf _
& "", vbYesNoCancel Or vbInformation Or vbDefaultButton3, Application.Name)
Case vbYes
Lig = Rech.Row
ws_2.Range(ws_2.Cells(Lig, 1), ws_2.Cells(Lig, 1)).Copy Worksheets(CellSearch.Parent.Name).Cells(15, 2)
ws_2.Range(ws_2.Cells(Lig, 2), ws_2.Cells(Lig, 2)).Copy Worksheets(CellSearch.Parent.Name).Cells(15, 4)
ws_2.Range(ws_2.Cells(Lig, 3), ws_2.Cells(Lig, 3)).Copy Worksheets(CellSearch.Parent.Name).Cells(18, 3)
ws_2.Range(ws_2.Cells(Lig, 5), ws_2.Cells(Lig, 5)).Copy Worksheets(CellSearch.Parent.Name).Cells(18, 5)
Case vbNo
CellSearch.Value = vbNullString
Case vbCancel
MsgBox "L'action à été annulée par l'utilisateur"
Case Else
End Select
Else
MsgBox "La valeur recherchée est introuvable dans le tableau"
End If
Application.EnableEvents = True
End SubPour fini, je ne saurais trop te conseiller d'utiliser un tableau structuré en feuille2
Bonjour Jean-Paul,
c'est magique ce que tu viens de me transmettre, et je retiens votre conseil pour le tableau
je te remercie infiniment
gmb merci beaucoup
c'est parfait