Petit problème avec BeforePrint

4 réponses
Avatar
ThierryP
Bonsoir le forum,

Tout est dans le titre !! En VBA, je param=E8tre l'impression d'une feuille=
(en-t=EAtes, 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=E7u =
que je peux refermer sans probl=E8me.

Si je lance la macro par un Call ma_macro dans le BeforePrint, tout va bien=
jusqu'au moment de refermer l'aper=E7u.... L'=E9cran est gris=E9, les bout=
ons de l'aper=E7u ne r=E9pondent 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 =E0 ce ph=E9nom=E8ne bizarre autant qu'=E9trange (po=
ur moi en tous cas !!)

D'avance merci

ThierryP

4 réponses

Avatar
MichD
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
'----------------------------------------
Avatar
ThierryP
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
'----------------------------------------
Avatar
ThierryP
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
> '----------------------------------------
Avatar
MichD
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.