problème macro msgbox

methra

XLDnaute Nouveau
Bonjour

Je débute dans les macros et j'ai un petit soucis avec un code.
Je souhaiterais lorsque je lance la macro:
Si la cellule A1 est Fausse alors il me lance la msgbox "souhaitez-vous passer en 2014?"
après avec le choix oui ou non
Si la cellule A1 est vrai alors il me lance la msgbox "souhaitez-vous revenir en 2015?"
également avec le choix oui ou non.

J'ai fait un code
Code:
Sub annee()

Dim vMessage1 As String
Dim vMessage2 As String
Dim vStyle As Integer
Dim vChoix1 As Integer
Dim vChoix2 As Integer

vMessage1 = "souhaitez-vous passer en 2014?"
vMessage2 = "souhaitez-vous revenir en 2015?"
vStyle = vbYesNo
vChoix1 = MsgBox(vMessage1, vStyle)
vChoix2 = MsgBox(vMessage2, vStyle)

If Feuil2.Range("A1") = False Then
If vChoix1 = vbYes Then
Feuil2.Range("A1") = True
Else
Feuil2.Range("A1") = False
End If
Else
If vChoix2 = vbYes Then
Feuil2.Range("A1") = False
Else
Feuil2.Range("A1") = True
End If

End If
End Sub

Le problème c'est qu'il m'affiche les 2 msgbox et non l'un ou l'autre.

J'espère avoir été explicite.
En espérant que quelqu'un pourra m'aider et m'expliquer mon erreur.
 

camarchepas

XLDnaute Barbatruc
Re : problème macro msgbox

Bonjour ,

Peut -être quelque chose comme ça ,

sans le contexte du classeur pas forcement simple de comprendre le besoin ::

Code:
Sub annee()
 
 Dim vMessage1 As String, vMessage2 As String
 Dim vStyle As Integer, vChoix1 As Integer, vChoix2 As Integer
 
 vMessage1 = "souhaitez-vous passer en 2014?"
 vMessage2 = "souhaitez-vous revenir en 2015?"
 vStyle = vbYesNo

 If Feuil2.Range("A1") = False Then
    vChoix1 = MsgBox(vMessage1, vStyle)
    If vChoix1 = vbYes Then
       Feuil2.Range("A1") = True
      Else
       Feuil2.Range("A1") = False
    End If
    Exit Sub
  Else
    If vChoix2 = vbYes Then
       vChoix2 = MsgBox(vMessage2, vStyle)
       Feuil2.Range("A1") = False
      Else
       Feuil2.Range("A1") = True
    End If
 End If
End Sub
 

methra

XLDnaute Nouveau
Re : problème macro msgbox

Oui je vais réexpliquer plus clairement enfin je vais essayer :)

J'ai un tableau avec des données alimenté par des formules:
Si A1 = FALSE alors donnée de 2015 (FALSE étant par défaut)
si A1 = TRUE alors donnée de 2014

Je souhaiterais faire apparaitre une msgbox en fonction de A1
je lance la macro:
Si A1 = FALSE alors j'ai le message suivant:"souhaitez-vous passer en 2014?" avec comme réponse oui ou non
si on répond oui alors A1 = TRUE et on passe sur les données de 2014 si c'est non alors FALSE et on reste sur 2015

Si A1 = TRUE alors j'ai le message suivant:"souhaitez-vous revenir en 2015?"avec comme réponse oui ou non
si on répond oui alors A1 = FALSE et on passe sur les données de 2015 si c'est non alors TRUE et on reste sur 2014

Je souhaiterais avoir en fonction de A1 soit le 1er message ou le 2e.

Le problème c'est lors du lancement de la macro il me fait apparaitre le1er message et ensuite le 2e

Est que vous pouvez m'aider?
En tout cas merci pour les réponses
 

camarchepas

XLDnaute Barbatruc
Re : problème macro msgbox

Comme ceci effectivement

Code:
Sub annee()
  
  Dim vMessage1 As String, vMessage2 As String
  Dim vStyle As Integer, vChoix1 As Integer, vChoix2 As Integer
  
  vMessage1 = "souhaitez-vous passer en 2014?"
  vMessage2 = "souhaitez-vous revenir en 2015?"
  vStyle = vbYesNo
' faire apparaitre une msgbox en fonction de A1
 
'Si A1 = FALSE alors
 If Feuil2.Range("A1") = False Then
    'message "souhaitez-vous passer en 2014?"
     vChoix1 = MsgBox(vMessage1, vStyle)
     If vChoix1 = vbYes Then
        Feuil2.Range("A1").Value = True
       Else
        Feuil2.Range("A1").Value = False
     End If
     Exit Sub
   Else
    'Si A1 = TRUE alors
     'message "souhaitez-vous revenir en 2015?"
      vChoix2 = MsgBox(vMessage2, vStyle)
      If vChoix2 = vbYes Then
        Feuil2.Range("A1").Value = False
       Else
        Feuil2.Range("A1").Value = True
      End If
  End If
 End Sub
 

Statistiques des forums

Discussions
312 099
Messages
2 085 285
Membres
102 850
dernier inscrit
iqi