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

XL 2016 Message box avant impression

zouph57

XLDnaute Nouveau
Bonjour,

Je m'excuse de vous déranger, je suis novice en langage VBA et je souhaite lancer une boîte de dialogue lorsque j'appuie sur le bouton "imprimer" dans excel d'une feuille donnée de mon classeur.
J'utilise le code suivant mais je ne comprends pas pourquoi quand je clique sur "oui" dans ma boîte de dialogue, l'impression se lance 2 fois.

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Reponse
Reponse = MsgBox("Utilisez-vous une feuille 4 étiquettes ?", vbYesNo + vbQuestion, "Attention")
If Reponse = vbYes Then
Application.EnableEvents = False
Sheets("Blinatumomab_perf_sup_45kg").PrintOut
Application.EnableEvents = True
Else
Cancel = True
End If
End Sub

Pouvez-vous m'aider ?

Merci par avance,

Bonne journée
 

sousou

XLDnaute Barbatruc
Bonjour
Before print: Avant impression!
Si tu répond oui tu demandes une impression, il s'en suivra une autre impression demandée avant le before.
Tu dois simplement interdire cette imp à la réponse non
Essaie comme-ceci


Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Reponse
Reponse = MsgBox("Utilisez-vous une feuille 4 étiquettes ?", vbYesNo + vbQuestion, "Attention")
If Reponse = vbNo Then Cancel = True


End Sub
 

zouph57

XLDnaute Nouveau
Merci beaucoup. En effet, ça fonctionne mais comme je suis dans thisWorkbook, la boîte de dialogue apparaît quand je clique sur impression peu importe la feuille sur laquelle je me trouve. Je souhaite que la boîte de dialogue n'apparaissent que quand je suis sur une feuille spécifique de mon classeur. Est-ce possible en étant dans thisWorkbook ?

Encore merci de ta réactivité
 

sousou

XLDnaute Barbatruc
tu pourrais modifier comme ceci.
Tester la feuille concernée ici feuille "toto"
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Reponse
If ActiveSheet.Name <> "toto" Then Exit Sub
Reponse = MsgBox("Utilisez-vous une feuille 4 étiquettes ?", vbYesNo + vbQuestion, "Attention")
If Reponse = vbNo Then Cancel = True


End Sub
 

Discussions similaires

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