Pourquoi c'est si long ?!
Moto84
Messages postés
29
Statut
Membre
-
Moto84 Messages postés 29 Statut Membre -
Moto84 Messages postés 29 Statut Membre -
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
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 ;-)