Petit problème avec BeforePrint

Le
ThierryP
Bonsoir le forum,

Tout est dans le titre !! En VBA, je paramètre l'impression d'une feuille=
(en-têtes, pieds de page, etc etc) par une macro dans un module st=
andard.

Si je lance la macro manuellement, tout se passe bien ,je fais un aperçu =
que je peux refermer sans problème.

Si je lance la macro par un Call ma_macro dans le BeforePrint, tout va bien=
jusqu'au moment de refermer l'aperçu. L'écran est grisé, les bout=
ons de l'aperçu ne répondent plus : seule option (heureusement, il y en=
a une !!), je peux cliquer sur la croix de fermeture d'Excel, qui me deman=
de si je veux sauvegarder (ouf !!)

Une petite explication à ce phénomène bizarre autant qu'étrange (po=
ur moi en tous cas !!)

D'avance merci

ThierryP
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26335714
Bonjour,

Sans voir la macro... c'est hasardeux!

Tu as essayé quelque chose comme ceci :


'----------------------------------------
Private Sub Workbook_BeforePrint(Cancel As Boolean)

Application.EnableEvents = False
Call YourMacro
Application.EnableEvents = True
Cancel = True

End Sub
'----------------------------------------
ThierryP
Le #26335754
Re-bonjour Denis,

J'ai appliqué les solutions proposées.... sans plus de résultat !

Je suis sous XP SP3, Excel 2002 SP3, rien de particulier (pour autant que j e sache !!). Il me semble que c'est un problème que j'avais déjà il y de ça for longtemps.... donc bien sûr, j'ai oublié la solution (si i l y en avait une...).
Pour info, la macro complète :
----------------------------------------
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.EnableEvents = False
Call Mise_en_Page
Application.EnableEvents = True
Cancel = True
End Sub
---------------------------------------
Sub Mise_en_Page()
Application.ScreenUpdating = False
Zone_Utile = Range("A10:AW" & Range("I65000").End(xlUp).Row).Address
With ActiveSheet.PageSetup
.PrintArea = Zone_Utile
.PrintTitleRows = Range("$10:$10").Address
.LeftHeader = Range("Réf_Doc")
.CenterHeader = Range("Nom_Doc")
.RightHeaderPicture.Filename = _
"I:Modèles Documents CommunsLogos Bauerlogo BCF couleur.jpg"
.LeftFooter = "Date d'édition : &D"
.CenterFooter = ""
.RightFooter = "Page &P de &N"
.LeftMargin = Application.CentimetersToPoints(0)
.RightMargin = Application.CentimetersToPoints(0)
.TopMargin = Application.CentimetersToPoints(2.5)
.BottomMargin = Application.CentimetersToPoints(1)
.HeaderMargin = Application.CentimetersToPoints(0)
.FooterMargin = Application.CentimetersToPoints(0)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = True
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
.PrintErrors = xlPrintErrorsDisplayed
End With
Application.EnableEvents = False
ActiveSheet.PrintPreview
Application.EnableEvents = True
End Sub
-----------------------------------------------

Et j'ai refait le test : si je lance manuellement la macro, tout va bien, s i je passe par le bouton "aperçu", tout va mal, je n'ai plus le focus sur les boutons de l'aperçu.

Merci d'avance

ThierryP

Le lundi 26 janvier 2015 18:14:26 UTC+1, MichD a écrit :
Bonjour,

Sans voir la macro... c'est hasardeux!

Tu as essayé quelque chose comme ceci :


'----------------------------------------
Private Sub Workbook_BeforePrint(Cancel As Boolean)

Application.EnableEvents = False
Call YourMacro
Application.EnableEvents = True
Cancel = True

End Sub
'----------------------------------------
ThierryP
Le #26335757
Finalement, je m'en suis tiré en ajoutant un bouton sur la feuille, qui a ppelle directement ma macro, et j'ai inhibé les boutons aperçu et impre ssion de Excel... Je ne comprends pas ce bug, mais mon fichier fonctionne q uand même !!

Merci pour ton temps Denis

ThierryP

Le mardi 27 janvier 2015 08:12:17 UTC+1, ThierryP a écrit :
Re-bonjour Denis,

J'ai appliqué les solutions proposées.... sans plus de résultat !

Je suis sous XP SP3, Excel 2002 SP3, rien de particulier (pour autant que je sache !!). Il me semble que c'est un problème que j'avais déjà il y de ça for longtemps.... donc bien sûr, j'ai oublié la solution (si il y en avait une...).
Pour info, la macro complète :
----------------------------------------
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.EnableEvents = False
Call Mise_en_Page
Application.EnableEvents = True
Cancel = True
End Sub
---------------------------------------
Sub Mise_en_Page()
Application.ScreenUpdating = False
Zone_Utile = Range("A10:AW" & Range("I65000").End(xlUp).Row).Address
With ActiveSheet.PageSetup
.PrintArea = Zone_Utile
.PrintTitleRows = Range("$10:$10").Address
.LeftHeader = Range("Réf_Doc")
.CenterHeader = Range("Nom_Doc")
.RightHeaderPicture.Filename = _
"I:Modèles Documents CommunsLogos Bauerlogo BCF couleur.jpg"
.LeftFooter = "Date d'édition : &D"
.CenterFooter = ""
.RightFooter = "Page &P de &N"
.LeftMargin = Application.CentimetersToPoints(0)
.RightMargin = Application.CentimetersToPoints(0)
.TopMargin = Application.CentimetersToPoints(2.5)
.BottomMargin = Application.CentimetersToPoints(1)
.HeaderMargin = Application.CentimetersToPoints(0)
.FooterMargin = Application.CentimetersToPoints(0)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = True
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
.PrintErrors = xlPrintErrorsDisplayed
End With
Application.EnableEvents = False
ActiveSheet.PrintPreview
Application.EnableEvents = True
End Sub
-----------------------------------------------

Et j'ai refait le test : si je lance manuellement la macro, tout va bien, si je passe par le bouton "aperçu", tout va mal, je n'ai plus le focus s ur les boutons de l'aperçu.

Merci d'avance

ThierryP

Le lundi 26 janvier 2015 18:14:26 UTC+1, MichD a écrit :
> Bonjour,
>
> Sans voir la macro... c'est hasardeux!
>
> Tu as essayé quelque chose comme ceci :
>
>
> '----------------------------------------
> Private Sub Workbook_BeforePrint(Cancel As Boolean)
>
> Application.EnableEvents = False
> Call YourMacro
> Application.EnableEvents = True
> Cancel = True
>
> End Sub
> '----------------------------------------
MichD
Le #26335793
Bravo si tu as trouvé une solution qui te convient!

Évidemment, je n'ai plus cette version d'installer pour effectuer des tests!
Cela fonctionne très bien sous Excel 2013.
Publicité
Poster une réponse
Anonyme