Pourquoi c'est si long ?!
Moto84
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
Moto84 Messages postés 26 Date d'inscription Statut Membre Dernière intervention -
Moto84 Messages postés 26 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai créé des macros sur un fichier excel 2010 mais elles sont très longues à réagir, parfois jusqu'à 10 secondes. Il me semble que je ne peux pas faire plus court pourtant... J'ai fouillé sur les forums pour voir comment optimiser un code vba mais par exemple, on propose de supprimer des "select" mais si je fais cela, la macro ne fonctionne plus du tout. Est-ce que quelqu'un pourrait me dire ce qui coince sur ces macros et comment les accélérer svp ? Merci
1ère macro
2è macro
J'ai créé des macros sur un fichier excel 2010 mais elles sont très longues à réagir, parfois jusqu'à 10 secondes. Il me semble que je ne peux pas faire plus court pourtant... J'ai fouillé sur les forums pour voir comment optimiser un code vba mais par exemple, on propose de supprimer des "select" mais si je fais cela, la macro ne fonctionne plus du tout. Est-ce que quelqu'un pourrait me dire ce qui coince sur ces macros et comment les accélérer svp ? Merci
1ère macro
Sub PlazzaSPAThomas() ' ' PlazzaSPAThomas Macro ' Application.ScreenUpdating = False Sheets("RE").Select ActiveWindow.ScrollRow = 1 ActiveSheet.PivotTables("TCD_RE").PivotFields("Equipe").ClearAllFilters ActiveSheet.PivotTables("TCD_RE").PivotFields("Equipe").CurrentPage = _ "Thomas Pascale" Call MiseEnForme Application.ScreenUpdating = True End Sub
2è macro
Sub MiseEnForme() ' ' Mets les colonnes et les lignes à la bonne dimension ' Application.ScreenUpdating = False Columns("A:A").ColumnWidth = 36 With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Columns("B:B").ColumnWidth = 28 With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Columns("C:C").EntireColumn.AutoFit With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Columns("D:D").ColumnWidth = 45 With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Rows("2:1500").RowHeight = 25 Columns("C:E").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext End With Selection.Font.Bold = True Rows("2:5").EntireRow.Hidden = True Rows("6:6").RowHeight = 43 Rows("6:6").Select With Selection .HorizontalAlignment = xlLeft .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Selection.Font .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With ActiveWindow.DisplayGridlines = False Application.ScreenUpdating = True End Sub
4 réponses
Bonjour,
La procedure MiseEnForme est tres rapide, bien quelle pourrait etre plus courte en groupant les colonnes car il y a pas beaucoup de difference
La procedure MiseEnForme est tres rapide, bien quelle pourrait etre plus courte en groupant les colonnes car il y a pas beaucoup de difference
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, c'est long, 10 secondes. as-tu exécuté en pas à pas pour déterminer quelle instruction prend du temps?
tu peux supprimer les Select, en faisant ainsi, par exemple:
au lieu de:
tu peux faire:
que fais-tu en ligne 81? ne viens-tu pas de faire ce travail en ligne 70?
tu peux supprimer les Select, en faisant ainsi, par exemple:
au lieu de:
Rows("6:6").Select With Selection
tu peux faire:
With Rows("6:6")
que fais-tu en ligne 81? ne viens-tu pas de faire ce travail en ligne 70?
Bonjour,
J'avais vu des astuces de ce style sur des forums mais si je fais cela, la macro "plante". Peux-être parce que je suis en Excel 2010...
Dans le pas à pas, il n'y a rien de particulier. J'essaierai de faire tourner cette macro chez moi, sur mon pc perso et non pro pour voir. Merci pour ta réponse en tout cas ;-)
J'avais vu des astuces de ce style sur des forums mais si je fais cela, la macro "plante". Peux-être parce que je suis en Excel 2010...
Dans le pas à pas, il n'y a rien de particulier. J'essaierai de faire tourner cette macro chez moi, sur mon pc perso et non pro pour voir. Merci pour ta réponse en tout cas ;-)
Bonjour,
Excusez-moi, je ne suis qu'un "bidouilleur" d'Excel et je tatonne un peu. D'abord, quand je dis que la macro se "plante", c'est que rien ne se passe après avoir fait certaines modifs comme enlever des .select par exemple. Ensuite, j'ai fait tourner ligne par ligne et c'est très rapide jusqu'à (par ex)
ActiveSheet.PivotTables("TCD_RE").PivotFields("Equipe").ClearAllFilters
ActiveSheet.PivotTables("TCD_RE").PivotFields("Equipe").CurrentPage = _
"Thomas Pascale"
donc la mise à jour du TCD.
Si vous encore un peu de temps pour m'aider, je vous joins le fichier complet dans ce lien.
https://www.cjoint.com/c/JHghy7SNAN4
J'ai lu les conditions, et le fichier comporte des noms mais rien de confidentiel comme les revenus ou la santé.
Et si vous n'avez pas de temps, c'est pas grave, je chercherai une autre solution sans TCD.
Merci déjà pour vos interventions.
Excusez-moi, je ne suis qu'un "bidouilleur" d'Excel et je tatonne un peu. D'abord, quand je dis que la macro se "plante", c'est que rien ne se passe après avoir fait certaines modifs comme enlever des .select par exemple. Ensuite, j'ai fait tourner ligne par ligne et c'est très rapide jusqu'à (par ex)
ActiveSheet.PivotTables("TCD_RE").PivotFields("Equipe").ClearAllFilters
ActiveSheet.PivotTables("TCD_RE").PivotFields("Equipe").CurrentPage = _
"Thomas Pascale"
donc la mise à jour du TCD.
Si vous encore un peu de temps pour m'aider, je vous joins le fichier complet dans ce lien.
https://www.cjoint.com/c/JHghy7SNAN4
J'ai lu les conditions, et le fichier comporte des noms mais rien de confidentiel comme les revenus ou la santé.
Et si vous n'avez pas de temps, c'est pas grave, je chercherai une autre solution sans TCD.
Merci déjà pour vos interventions.
Ok je vais essayer de faire des trucs plus uniformes pour essayer de gagner du temps sur le déroulement.
Merci ;-)