Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Msgbox différent selon le contenu d'une cellule

pat66

XLDnaute Impliqué
Bonjour le forum,

Je souhaiterai que le msgbox soit différent selon le contenu d'une cellule ce qui n'est pas le cas avec ma macro actuelle

Macro actuelle :

Sub osp()
Dim AnswerYes As String
Dim AnswerNo As String
AnswerYes = MsgBox("Souhaitez vous activer cette option ?", vbQuestion + vbYesNo, "Information")
If AnswerYes = vbYes Then
conditions 1 ........
else
conditions 2 .........
end if
end sub

Je souhaiterai un message différent selon le contenu de Y151, exemple :
Si cellule Y151 = "Oui"
MsgBox("Souhaitez vous désactiver cette option ?", vbQuestion + vbYesNo, "Information")
si réponse No = cancel = true
si réponse Yes
conditions 1 ...................

Si cellule Y151 = "Non"
MsgBox("Souhaitez vous activer cette option ?", vbQuestion + vbYesNo, "Information")
si réponse No = cancel = true
si réponse Yes
conditions 2 ...................

j'espère être clair
un grand merci et bon we

pat66
 
Dernière édition:
Solution
Bonjour @pat66 et @Staple1600

Je propose ceci

VB:
Sub osp()
Dim Reponse As Byte
Select Case Range("Y151")
Case "Oui"
    Reponse = MsgBox("Souhaitez vous désactiver cette option ?", 36, "Information")
    If Reponse = 6 Then         'L'utilisateur a répondu Oui
        'Condition Oui
    Else                        'L'utilisateur a répondu Non
        'Condition Non
    End If
Case "Non"
    Reponse = MsgBox("Souhaitez vous activer cette option ?", 36, "Information")
    If Reponse = 6 Then         'L'utilisateur a répondu Oui
        'Condition Oui
    Else                        'L'utilisateur a répondu Non
        'Condition Non
    End If
End Select
End Sub

Merci de ton retour
*Edit : Ajout du fichier

@Phil69970

Staple1600

XLDnaute Barbatruc
Bonjour

Un exemple basique
(à mettre dans le code de la feuille)
Et pour tester saisir en A1 oui ou non
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
MsgBox "Voulez-vous " & IIf(Target = "oui", "activer", "désactiver") & " cette option ?", vbQuestion
End If
End Sub
 

Staple1600

XLDnaute Barbatruc
Re,

@pat66
J'ai relu ton 1er message

j'ai corrigé puisque mon premier message faisait l'inverse du problème décrit.
(cette version est un peu plus étoffée)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
Dim a
Select Case Target
Case "oui"
S_tr = "Voulez-vous désactiver cette option"
a = 32
Case "non"
S_tr = "Voulez-vous activer cette option"
a = 32
Case Else
S_tr = "Attention, valeur incorrecte!"
a = 16
End Select
MsgBox S_tr, a
End If
End Sub
 

pat66

XLDnaute Impliqué
bonjour Staple1600,

ton exemple est intéressant et je le garde précieusement, mais je dois passer par une macro (clic bouton) pour tester Y151, car la saisie de "Oui" ou de "Non" fait parti des conditions

MsgBox("Souhaitez vous désactiver cette option ?", vbQuestion + vbYesNo, "Information")
si réponse No = cancel = true
si réponse Yes
conditions 1 ............
Worksheets("Feuil1").Range("Y151").Value = "non"

Si cellule Y151 = "Non"
MsgBox("Souhaitez vous activer cette option ?", vbQuestion + vbYesNo, "Information")
si réponse No = cancel = true
si réponse Yes
conditions 2 ..............
Worksheets("Feuil1").Range("Y151").Value = "Oui"

merci
 

pat66

XLDnaute Impliqué
re,

non pas du tout car je pense je qu'en modifiant
Private Sub Worksheet_Change(ByVal Target As Range) par un Sub, cela ne suffira pas

De plus je ne sais pas comment faire dans ta macro pour saisir "Oui" ou "Non" dans Y151 (ou A1 dans ton exemple, alors je veux bien un coup de main si tu veux bien

merci
 

Staple1600

XLDnaute Barbatruc
Re

Voici la transformation
Code:
Sub Macro_pour_Bouton()
Dim a, Cellule As Range
Set Cellule = Range("Y151")
Select Case Cellule
Case "oui"
S_tr = "Voulez-vous désactiver cette option"
a = 32
Case "non"
S_tr = "Voulez-vous activer cette option"
a = 32
Case Else
S_tr = "Attention, valeur incorrecte!"
a = 16
End Select
MsgBox S_tr, a
End Sub
Sub tester()
[Y151] = InputBox("Saisir oui ou non ou n'importe quelle valeur", "Macro de test", "oui")
Call Macro_pour_Bouton
End Sub
La macro tester comme son nom l'indique ne sert qu'à tester la 1ere macro (*)
=> faire trois test
Dans l'inputbox qui s'affiche
• saisir: oui
• saisir: non
• saisir: autre chose que oui ou non


(*) que tu pourrais affecter à un bouton.
 

Phil69970

XLDnaute Barbatruc
Bonjour @pat66 et @Staple1600

Je propose ceci

VB:
Sub osp()
Dim Reponse As Byte
Select Case Range("Y151")
Case "Oui"
    Reponse = MsgBox("Souhaitez vous désactiver cette option ?", 36, "Information")
    If Reponse = 6 Then         'L'utilisateur a répondu Oui
        'Condition Oui
    Else                        'L'utilisateur a répondu Non
        'Condition Non
    End If
Case "Non"
    Reponse = MsgBox("Souhaitez vous activer cette option ?", 36, "Information")
    If Reponse = 6 Then         'L'utilisateur a répondu Oui
        'Condition Oui
    Else                        'L'utilisateur a répondu Non
        'Condition Non
    End If
End Select
End Sub

Merci de ton retour
*Edit : Ajout du fichier

@Phil69970
 

Pièces jointes

  • Oui non avec message V1.xlsm
    14.9 KB · Affichages: 3
Dernière édition:

pat66

XLDnaute Impliqué
re,

bonjour Phil69970

merci pour votre aide, là je dois m'absenter mais je teste vos propositions dès que possible (demain matin maxi) et reviens vers vous pour vous dire quelle est la meilleure solution à mon problème, bien sur je prends en compte de l'avis bienveillant de Staple1600

PS: Phil69970, j'ai cliquer sur ta pièce jointe, mais "La page demandée est introuvable".

un grand merci à tous les 2
 

pat66

XLDnaute Impliqué
re,

je suis trop impatient de tester vos propositions alors j'ai pris quelques minutes de plus
Phil69970, dans ta proposition le sub teste et exécute la macro selon "oui" ou "non", mais doit aussi écrire "oui" ou "non" dans Y151, voir mon post #4

Alors j'ai testé ta proposition en la modifiant dans ce sens, et cela correspond à mes attentes, si tu vois une incohérence, je te remercie de m'en faire part

Code:
Sub osp()
Dim Reponse As Byte
Select Case Range("Y151")
Case "Oui"
    Reponse = MsgBox("Souhaitez vous désactiver cette option ?", 36, "Information")
    If Reponse = 6 Then         'L'utilisateur a répondu Oui
       Worksheets("Feuil1").Range("Y151").Value = "Non"
    Else                        'L'utilisateur a répondu Non
       cancel = True
    End If
Case "Non"
    Reponse = MsgBox("Souhaitez vous activer cette option ?", 36, "Information")
    If Reponse = 6 Then         'L'utilisateur a répondu Oui
  Worksheets("Feuil1").Range("Y151").Value = "Oui"
    Else                        'L'utilisateur a répondu Non
cancel = True
    End If
End Select
End Sub

un grand merci
 

Phil69970

XLDnaute Barbatruc
@pat66

Perso je ne voyais pas ta demande dans ce sens .....
Et toujours perso faire un msgbox pour demander à l'utilisateur si il veut mettre oui ou non dans la cellule Y151 me semble bizarroïde alors qu'une semble validation des données avec un choix oui/non comme sur mon fichier fait le job directement mais si cela te va moi aussi et pourquoi faire simple si on peut faire compliquer



@Phil69970
 

pat66

XLDnaute Impliqué
re,

je comprends parfaitement, mais pour diverses raisons et notamment de conception, les macros doivent être exécutées par des clics sur des formes uniquement, je dois passer par là....

en tout cas, je te remercie pour ton aide et un grand merci aussi à Staple1600

bon we à tous

pat66
 

Staple1600

XLDnaute Barbatruc
Re,

pat66 à dit:
mais pour diverses raisons et notamment de conception, les macros doivent être exécutées par des clics sur des formes uniquement, je dois passer par là....
Dans ce cas, joindre un fichier exemple qui respecte cette conception (mais sans données confidentielles) serait un plus pour faire des tests.

PS: Il n'est jamais interdit de revoir la conception d'un classeur.
Notamment si comme moi, on a tatoué sur l'épaule gauche ce principe K.I.S.S
A ne pas confondre avec ce KISS
 

Discussions similaires

Réponses
7
Affichages
551
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…