Mise en page par macro

olic95

XLDnaute Junior
Bonjour le forum,

Encore et toujours pour ma macro de gestion des clients, j'effectue une mise en page des quittances lorsque je les génère.

Le code de cette mise en page est issu d'un apprentissage dans Excel (Outils / Macro / Nouvelle macro). J'ai retiré tout ce dont je n'avais pas besoin pour ne garder que l'orientation, les marges et 2 ou 3 bricoles.

Le problème est liè à la lenteur. La mise en page prend un temps important par rapport au reste de la macro. On va dire qu'il y a un rapport de 1 à 10 entre la génération de la quittance et sa mise en page.

Si quelqu'un a une solution pour que ce soit plus rapide, je suis preneur !

Merci.

Olivier.

PS : Inutile de me proposer d'acheter un core duo de dernière génération :eek:
 

RICO1972

XLDnaute Occasionnel
Re : Mise en page par macro

Salut Nath et Olic,
pas plus de solution mais pour contourner le pb de la MEF, pourquoi tu ne crées pas une matrice de quittance avec tes formats pré établis ...
Ensuite tu ne fais que renseigner les champs avec ta BD, tu devrais surement gagner tu temps...
@+
RICO
 

olic95

XLDnaute Junior
Re : Mise en page par macro

Salut Nat, Rico, le forum,

C'est ce que j'ai fait. J'ai une matrice que je copie/colle (autant de fois qu'il y a de clients) dans un nouveau fichier chaque mois. Mais le copie/colle ne reprend pas la mise en page et mes quittances font alors 5 ou 6 pages. D'où nécessité de la faire !

Bon ben je vais patienter alors !

Merci.

Olivier.
 

Moa

XLDnaute Occasionnel
Re : Mise en page par macro

Salut Olic95 !

Plusieurs choses.

J'utilise plusieurs macros de mise en page (Orientation, Pied de page, Marges, Format cellules, Format polices...) et je n'ai aucun problème de temps d'exécution.

A mon avis le problème vient de ta macro elle-même et non pas du fait que ce soit de la MEP.

Utilises-tu des "Select" ou "Activate" dans ta macro ?

Ces commandes ralentissent les macros en particulier la commande "Select".

Affiche nous ta macro, on verra.

@ +++

ChrisOne
 

yojema

XLDnaute Occasionnel
Re : Mise en page par macro

Salut

est ce que en début de macro et en fin de macro tu

a mis cela :
Application.ScreenUpdating = False
et
Application.ScreenUpdating = True

Ca evite l affichage a l ecran de ce que fait la macro

ce qui l acceler un peu

a+
 

olic95

XLDnaute Junior
Re : Mise en page par macro

Bonjour Moa, yojema, le forum,

Moa :

For I = 1 to Sheets.Count

Sheets(I).Select

Range("A1:G41").Select

ActiveSheet.PageSetup.PrintArea = "$A$1:$G$41"

Range("A1").Select

With ActiveSheet.PageSetup
.LeftMargin = Application.InchesToPoints(0.393700787401575)
.RightMargin = Application.InchesToPoints(0.393700787401575)
.TopMargin = Application.InchesToPoints(0.393700787401575)
.BottomMargin = Application.InchesToPoints(0.393700787401575)
.HeaderMargin = Application.InchesToPoints(0.511811023622047)
.FooterMargin = Application.InchesToPoints(0.511811023622047)
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlPortrait
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.FitToPagesWide = 1
.FitToPagesTall = 1
End With

Next I

Si le Range("A1").Select gène, je veux bien l'enlever... mais j'en doute !

yojema :

Non, point de tout cela dans mes macros. J'essaie et te tiens au courant.

Merci à vous.

Olivier.
 

Pierrot93

XLDnaute Barbatruc
Re : Mise en page par macro

Bonjour Olivier, Rico Moa, Yojema

Peut être comme ci dessous, doit gagner en rapidité :

Code:
Sub test()
Dim i As Worksheet

For Each i In Worksheets
    With i.PageSetup
        .PrintArea = "$A$1:$G$41"
        .LeftMargin = Application.InchesToPoints(0.393700787401575)
        .RightMargin = Application.InchesToPoints(0.393700787401575)
        .TopMargin = Application.InchesToPoints(0.393700787401575)
        .BottomMargin = Application.InchesToPoints(0.393700787401575)
        .HeaderMargin = Application.InchesToPoints(0.511811023622047)
        .FooterMargin = Application.InchesToPoints(0.511811023622047)
        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlPortrait
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
Next i
End Sub

bonne journée
@+
 

olic95

XLDnaute Junior
Re : Mise en page par macro

Bonjour Pierrot, le forum,

Non, pas de temps gagné Pierrot. Ou alors pinuts, rien de significatif.
J'avais déjà testé ce genre de solution.

yojema, ta proposition ne change quasiment rien non plus. 1 seconde par tranche de 20 quittances.

Merci pour toutes ces réponses, je crois que je vais rester comme ça et attendre. Il ne semble pas y avoir de solution efficace dans ce cas de figure.

A+

Olivier.
 

Discussions similaires

M
Réponses
9
Affichages
513
Maikales
M
Réponses
10
Affichages
421

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 957
Membres
103 990
dernier inscrit
lamiadebz