Lenteur exécution VBA Excel
Résolu
Argentomaouss
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
Argentomaouss Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
Argentomaouss Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Soit un tableau dont le nombre de ligne est variable.
J'ai élaboré une macro permettant de mettre en forme les données qu'il contient, de définir la zone d'impression automatiquement et de mettre en forme l'impression (passer de portrait à paysage).
C'est à ce moment de l'exécution de la macro que la lenteur se produit. A mon avis, c'est parce que la mise en forme de l'impression se fait pour tout le fichier excel et pas seulement pour le tableau que j'ai déterminé avant.
Voir ci-dessous l'extrait de ma macro, avec les lignes qui, selon moi, coincent en gras ; par quoi dois-je les remplacer ? Merci d'avance
ActiveSheet.PageSetup.PrintArea = Range("A1", ActiveSheet.Range("I65536").End(xlUp)).Address
With ActiveSheet.PageSetup
.PrintTitleRows = "$5:$5"
.PrintTitleColumns = ""
End With
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.196850393700787)
.RightMargin = Application.InchesToPoints(0.196850393700787)
.TopMargin = Application.InchesToPoints(0.196850393700787)
.BottomMargin = Application.InchesToPoints(0.196850393700787)
.HeaderMargin = Application.InchesToPoints(0.511811023622047)
.FooterMargin = Application.InchesToPoints(0.511811023622047)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = True
.Zoom = 100
End With
Range("A5").Select
Soit un tableau dont le nombre de ligne est variable.
J'ai élaboré une macro permettant de mettre en forme les données qu'il contient, de définir la zone d'impression automatiquement et de mettre en forme l'impression (passer de portrait à paysage).
C'est à ce moment de l'exécution de la macro que la lenteur se produit. A mon avis, c'est parce que la mise en forme de l'impression se fait pour tout le fichier excel et pas seulement pour le tableau que j'ai déterminé avant.
Voir ci-dessous l'extrait de ma macro, avec les lignes qui, selon moi, coincent en gras ; par quoi dois-je les remplacer ? Merci d'avance
ActiveSheet.PageSetup.PrintArea = Range("A1", ActiveSheet.Range("I65536").End(xlUp)).Address
With ActiveSheet.PageSetup
.PrintTitleRows = "$5:$5"
.PrintTitleColumns = ""
End With
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.196850393700787)
.RightMargin = Application.InchesToPoints(0.196850393700787)
.TopMargin = Application.InchesToPoints(0.196850393700787)
.BottomMargin = Application.InchesToPoints(0.196850393700787)
.HeaderMargin = Application.InchesToPoints(0.511811023622047)
.FooterMargin = Application.InchesToPoints(0.511811023622047)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = True
.Zoom = 100
End With
Range("A5").Select
A voir également:
- Lenteur exécution VBA Excel
- Lenteur pc - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
2 réponses
Bonjour,
Pas de ligne en gras dans ton post...
Et ta macro s'adresse bien & activesheet et non tout le classeur.
Tu peux te poser la question de savoir si toutes les lignes sont vraiment nécessaires.
Par exemple si .LeftHeader n'a jamais été défini inutile de le mettre.
Pour tester met en commentaires les lignes suivantes :
.PrintHeadings = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
Et puis commence ta macro par Application.ScreenUpdating = False, rétabli à la fin par Application.ScreenUpdating = True.
Sur cette partie ça ne jouera pas beaucoup mais sur l'ensemble ça peut
eric
Pas de ligne en gras dans ton post...
Et ta macro s'adresse bien & activesheet et non tout le classeur.
Tu peux te poser la question de savoir si toutes les lignes sont vraiment nécessaires.
Par exemple si .LeftHeader n'a jamais été défini inutile de le mettre.
Pour tester met en commentaires les lignes suivantes :
.PrintHeadings = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
Et puis commence ta macro par Application.ScreenUpdating = False, rétabli à la fin par Application.ScreenUpdating = True.
Sur cette partie ça ne jouera pas beaucoup mais sur l'ensemble ça peut
eric
Bonjour,
Effectivement en supprimant les lignes qui ne sont pas nécessaires, cela va beaucoup mieux "à la louche" 50% de gain de temps).
"Application ScreenUpdating" False au début puis True à la fin ne semble pas faire gagner énormément de temps, mais je le garde quand même.
Merci beaucoup en tous cas
Effectivement en supprimant les lignes qui ne sont pas nécessaires, cela va beaucoup mieux "à la louche" 50% de gain de temps).
"Application ScreenUpdating" False au début puis True à la fin ne semble pas faire gagner énormément de temps, mais je le garde quand même.
Merci beaucoup en tous cas