Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] Mise en page et vitesse

2 réponses
Avatar
HD
Bonjour,

J'ai une macro qui lance de multiples mise en page sur de nombreuses
feuilles Excel (presque 100). Les traitements sur les données de ces
feuilles ne durent pas longtemps sauf que la mise en page est ce qui m'en
fait perdre le plus...

Existe-t-il une astuce pour accélèrer la mise en page des feuilles ? En
sachant que j'ai déja désactivé l' EnableEvents et le ScreenUpdating...

Voici en fait une portion de mon code :

With ActiveSheet.PageSetup
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = True
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With

Merci d'avance pour votre aide
--
@+
HD

2 réponses

Avatar
papou
Bonjour
Tu peux réduire ces lignes en ne conservant que ce que tu appliques
effectivement à ta MEP.
Et, pas sûr mais tu peux également peut-être accélérer ton code en évitant
l'utilisation de With.
Par exemple:
Activesheet.pagesetup.CenterHorizontally = True
Activesheet.pagesetup.FitToPagesWide = 1
Activesheet.pagesetup..FitToPagesTall = 1

Cordialement
Pascal

"HD" a écrit dans le message de
news:e7rfog$2usf$
Bonjour,

J'ai une macro qui lance de multiples mise en page sur de nombreuses
feuilles Excel (presque 100). Les traitements sur les données de ces
feuilles ne durent pas longtemps sauf que la mise en page est ce qui m'en
fait perdre le plus...

Existe-t-il une astuce pour accélèrer la mise en page des feuilles ? En
sachant que j'ai déja désactivé l' EnableEvents et le ScreenUpdating...

Voici en fait une portion de mon code :

With ActiveSheet.PageSetup
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = True
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With

Merci d'avance pour votre aide
--
@+
HD




Avatar
Trirème
Bonjour HD
Tes 100 feuilles sont elles créées par la commande Sheets.Add suivie de
l'écriture des données dans cette nouvelle feuille ?

J'ai découvert récemment grâce à une suggestion d'Ange Ounis qu'on
pouvait procéder ainsi :
Sheets.Add Type:= _
"C:MonUserMonClasseurModèlesLaFeuille.xlt"
' LaFeuille.xlt peut être un classeur de une ou plusieurs feuilles

Il suffit d'enregistrer ton modèle où tu veux avec les mises en page qui
conviennent dans ton cas.

Cordialement
Trirème

Bonjour,

J'ai une macro qui lance de multiples mise en page sur de nombreuses
feuilles Excel (presque 100). Les traitements sur les données de ces
feuilles ne durent pas longtemps sauf que la mise en page est ce qui m'en
fait perdre le plus...

Existe-t-il une astuce pour accélèrer la mise en page des feuilles ? En
sachant que j'ai déja désactivé l' EnableEvents et le ScreenUpdating...

Voici en fait une portion de mon code :

With ActiveSheet.PageSetup
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = True
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With

Merci d'avance pour votre aide
--
@+
HD