Worksheet_BeforePrint !

  • Initiateur de la discussion Initiateur de la discussion Jam
  • 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 !

Jam

XLDnaute Accro
Bonjour à tous,

J'ai une petite macro qui effectue quelques vérifications avant l'impression d'une feuille. Pour cela j'utilise la procédure événementielle Workbook_BeforePrint.
Mon (tout) petit problème est que je veux lancer à partir de celle-ci l'impression d'une autre feuille...résultat elle se "relance" une seconde fois. Comme il n'existe pas de procédure événementielle pour Worksheet, bin euh je vois pas trop comment faire pour éviter cela.
Si quelqu'un a une petite idée je suis preneur.
Merci d'avance.

Mon p'tit code (dans ThisWorkbook):
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim x As Range
    Dim sMsg As String
    Dim bFlag As Boolean
    
    For Each x In Range("lst_print_control").Cells
        Debug.Print x.Row, x.Column
        If IsEmpty(x.Value) Then
            sMsg = sMsg & Cells(x.Row, x.Column - 2).Value & vbCrLf
            bFlag = True
        End If
    Next
    If bFlag Then
        MsgBox "Vous devez remplir les informations suivantes avant d'imprimer:" & vbCrLf & sMsg, vbOKOnly + vbCritical, "Erreur"
        Cancel = True
        Exit Sub
    End If
    rep = MsgBox("Voulez-vous imprimer la synthèse ?", vbYesNo + vbExclamation, "AVERTISSEMENT")
        If rep = vbYes Then Feuil2.PrintOut
End Sub
 
Re : Worksheet_BeforePrint !

Bonsoir Jaam

peut être en utilisant une variable "static" de type "boolean", si j'ai bien compris... à tester dans ton projet.

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Static p As Boolean
    Dim x As Range
    Dim sMsg As String
    Dim bFlag As Boolean
    
    If p = True Then Exit Sub
    p = True
    
    For Each x In Range("lst_print_control").Cells
        Debug.Print x.Row, x.Column
        If IsEmpty(x.Value) Then
            sMsg = sMsg & Cells(x.Row, x.Column - 2).Value & vbCrLf
            bFlag = True
        End If
    Next
    If bFlag Then
        MsgBox "Vous devez remplir les informations suivantes avant d'imprimer:" & vbCrLf & sMsg, vbOKOnly + vbCritical, "Erreur"
        Cancel = True
        p = False
        Exit Sub
    End If
    rep = MsgBox("Voulez-vous imprimer la synthèse ?", vbYesNo + vbExclamation, "AVERTISSEMENT")
        If rep = vbYes Then Feuil2.PrintOut

    p = False

End Sub

bonne soirée
@+
 
Re : Worksheet_BeforePrint !

Salut Pierrot,

Aïe, Aïe, Aïe, ça le fait pas du tout 🙁
Pour une raison que j'ignore j'ai un mode debugage qui se met en route et ça n'a pas l'air de fonctionner. Dommage, l'idée me paraissait bonne.

J'vais quand même investiguer cette idée pour voir si en tournant autour je ne trouverai pas mon bonheur.

Merci.
 
Re : Worksheet_BeforePrint !

Salut Pierrot,

Y'a pas de ligne en erreur 🙁
J'ai fait plusieurs tests en cliquant sur "aperçu avant impression" qui lance la macro et Excel "plante" avec une fenêtre de degugage (boutons: Continuer, pas à pas, etc...) qui me fait penser aux vieilles fenêtre de débugage des macros Excel 4 dans la fenêtre d'Excel et pas dans l'IDE. Et là plus rien, obliger de "tuer" excel.
Bref, pas beaucoup d'idées sur la raison du plantage. Je vais essayer, comme je te le disais, de suivre l'idée mais peut-être en récupérant une info stockée dans une feuille cachée. Plus simple et peut-être tout aussi efficace.

Merci pour ton aide.
 
- 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

Discussions similaires

Réponses
4
Affichages
281
Retour