Msgbox vbYesNoCancel

Résolu
maxmen67 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   -  
maxmen67 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je viens de réaliser un petit code qui permet l'impression d'un formulaire excel par simple clic sur un bouton.

Lorsque la macro est exécutée, un msgbox ( avec 3 choix: oui, non, annuler ) s'ouvre et permet de choisir si on veut imprimer 1 ou 2 pages du formulaire.

Jusque là tout fonctionne...

Le problème est lorsqu'on clic sur annuler, la macro est censée s'arrêter "Exit sub", mais contre toute attente, une page est quand même imprimée...

Voir code ci-dessous:



Sub impr()

' imprimer Macro

If MsgBox("Imprimer la page photos ?", vbYesNoCancel, "Impression") = vbYes Then
    
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate:=True, IgnorePrintAreas:=False


Else
If vbNo Then
  
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate:=True, IgnorePrintAreas:=False


If vbCancel Then
Exit Sub

End If
End If
End If
End Sub


Aurais-je omis une erreur de syntaxe ?

Merci d'avance!

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Oui...
Essayes ceci :

Sub impr()
Dim imprimer
' imprimer Macro
    imprimer = MsgBox("Imprimer la page photos ?", vbYesNoCancel, "Impression")
    If imprimer = vbYes Then
      ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate:=True, IgnorePrintAreas:=False
    ElseIf imprimer = vbNo Then
      ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate:=True, IgnorePrintAreas:=False
    ElseIf imprimer = vbCancel Then
      Exit Sub
    End If

End Sub

3
maxmen67 Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   1
 
Parfait!

Je n'aurais pas pensé qu'identifier la variable "imprimer" aurait pu changer la donne.

ça m'aidera pour les prochains codes.

Merci.
0