Microsoft 365 Activer désactiver Workbook_BeforePrint(Cancel As Boolean)

  • Initiateur de la discussion Initiateur de la discussion pat66
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pat66

XLDnaute Impliqué
Bonsoir le forum,

est t'il possible de désactiver et réactiver cet évènement juste le temps d'exécution d'une macro qui imprime en pdf :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
MsgBox "Pour imprimer cette étude, veuillez vous adresser au back office, pour sauvegarder une copie voir les boutons à cet effet, merci", vbCritical + vbInformation
Cancel = True
End Sub

merci beaucoup pour votre aide

bonne soirée
 
Dernière édition:
Solution
Re,

J'ai essayé, il vaut mieux utiliser True/False pour NoPrint . Utilisez True/False au lieu de 1/0 pour NoPrint :
VB:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If NoPrint = True Then Exit Sub
MsgBox "Pour imprimer cette étude, veuillez vous adresser au back office, pour sauvegarder une copie voir les boutons à cet effet, merci", vbCritical + vbInformation
Cancel = True
End Sub

et en début de macro qui permet imprimer en pdf

Public NoPrint as boolean
Private Sub Print_PDF() 'pensez à afficher les onglets avant d'utiliser la macro
NoPrint =True
Application.ScreenUpdating = False
---------
---------
et en fin de macro
Application.EnableEvents = True
Application.DisplayAlerts = True
NoPrint = False
End Sub

Bizarrement 0/1...
Bonsoir Pat,
Une solution parmi d'autres :
1- Vous déclarez une variable public par exemple NoPrint as boolean
2- Dans Workbook_BeforePrint, vous comencez par :
If NoPrint=1 then exit sub.
3- Dans votre macros, vous commencez par NoPrint=1 et vous terminez par NoPrint=0.
De cette façon, pendant cette macro la macro Workbook_BeforePrint sera inhibée.
 
Bonjour Sylvanu,

toujours pareil before print empêche d'imprimer en pdf, peut être ais je mal compris ?

j'ai ajouté dans thisworkbook :
Public NoPrint As Boolean

dans Private Sub Workbook_BeforePrint(Cancel As Boolean)
If NoPrint = 1 Then Exit Sub
MsgBox "Pour imprimer cette étude, veuillez vous adresser au back office, pour sauvegarder une copie voir les boutons à cet effet, merci", vbCritical + vbInformation
Cancel = True
End Sub

et en début de macro qui permet imprimer en pdf
Private Sub Print_PDF() 'pensez à afficher les onglets avant d'utiliser la macro
'Dim Mdp As String
'Mdp = Application.InputBox("Veuillez introduire le mot de passe")
'If Mdp <> "conf2024" Then MsgBox "Accès refusé !": Exit Sub
NoPrint = 1
Application.ScreenUpdating = False
---------
---------
et en fin de macro
Application.EnableEvents = True
Application.DisplayAlerts = True
NoPrint = 0
End Sub

merci pour votre aide
 
re,

Il m'affiche le message qu'il y a dans BeforePrint (voir ci dessus)
MsgBox "Pour imprimer cette étude, veuillez vous adresser au back office, pour sauvegarder une copie voir les boutons à cet effet, merci", vbCritical + vbInformation

et dans le vba la ligne suivante est surlignée
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & NFichier, IgnorePrintAreas:=False, OpenAfterPublish:=True

donc impossible d'imprimer en pdf

merci
 
Re,

J'ai essayé, il vaut mieux utiliser True/False pour NoPrint . Utilisez True/False au lieu de 1/0 pour NoPrint :
VB:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If NoPrint = True Then Exit Sub
MsgBox "Pour imprimer cette étude, veuillez vous adresser au back office, pour sauvegarder une copie voir les boutons à cet effet, merci", vbCritical + vbInformation
Cancel = True
End Sub

et en début de macro qui permet imprimer en pdf

Public NoPrint as boolean
Private Sub Print_PDF() 'pensez à afficher les onglets avant d'utiliser la macro
NoPrint =True
Application.ScreenUpdating = False
---------
---------
et en fin de macro
Application.EnableEvents = True
Application.DisplayAlerts = True
NoPrint = False
End Sub

Bizarrement 0/1 sont utilisables pour un booléen ( dixit MS ) mais dans mon exemple seuls True/False marchent. Pas bien compris.
 
Dernière édition:
bonjour,
je n'ai pas compris la logique !

pour moi noprint voudrait dire ne pas imprimer hors le code dit le contraire ?????
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)

    Cancel = NoPrint

    If NoPrint Then
        MsgBox "Pour imprimer cette étude, veuillez vous adresser au back office.", _
               vbCritical, "Impression interdite"
    End If

End Sub
 
Bonjour dysorthographie,
VB:
If NoPrint = True Then Exit Sub
Si NoPrint est vrai, on n'imprime pas. ça me semble lgique.
Mais c'est purement arbitraire.
et cancel =true on imprim pas ça me semble ilogique d'avoir à la fois noprint et cancel=true car de toutes façons on imprimera pas.

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Cancel = NoPrint 'NoPrint est boolean 
    If NoPrint Then 'pas besoin de vérifier si true noprint est boolean 
        MsgBox "Pour imprimer cette étude, veuillez vous adresser au back office.", _
               vbCritical, "Impression interdite"
    End If
End Sub
 
Dernière édition:
Bonjour à toutes et à tous,
Bonjour @sylvanu
Il me semble qu'en VBA True vaut -1 et non pas 1 comme dans Excel.
Je n'ai pas essayé, je suis sur mon téléphone ...
À bientôt
il est toujours préférable a le comparer à 0

les ordinateur sont en. logique négative. on considère le +5volt comme non significatif car un entré libre a par défaut cette tention.

la mise a la masse est un Action réfléchi donc négative par rapport aux+5 volts d'où le -1 pour un true.

notez qu toutes valeur numérique différente de 0 est un true
Code:
dim NoPrint as boolean
Noprint=1234567890
if NoPrint then msgbox ""
If 1932 Then MsgBox True Else MsgBox False
If InStr("toto", "o") Then MsgBox True Else MsgBox False  'alors Not InStr("toto", "o")  reste vrai
If Not CBool(InStr("toto", "o")) Then MsgBox True Else MsgBox False
If InStr("toto", "a") Then MsgBox True Else MsgBox False
If Not InStr("toto", "a") Then MsgBox True Else MsgBox False 'Seule not 0 peux devenir true c'est pour cela qu'on ne test que <>0 ou =O
on peux ensuite continuer avec le opérateurs
false +-1 c'est false OR -1 False OR True
False * -1 c'est False AND -1 False AND True
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour