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   -
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

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

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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
0
Moto84
 
Bonjour,
Ok je vais essayer de faire des trucs plus uniformes pour essayer de gagner du temps sur le déroulement.
Merci ;-)
0
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:
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?
0
Moto84
 
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 ;-)
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
elle plante avec quel message d'erreur, sur quelle ligne?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Salut, ca roule?

Comprends pas ces 10s, car la mise en forme prend max 0.02 s avec son code!
Peux pas tester le TCD sans son fichier, bizarre...
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention  
 
@f894009 tout va!
le code est bizarre, mais, à part le TCD, rien qui pourrait durer si longtemps, en effet.
sauf si nous n'avons pas étés informés de tout, ce qui m'étonnerait pas, étant donné le flou des réponses..
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
que fais-tu en ligne 81? ne viens-tu pas de faire ce travail en ligne 70?
0
Moto84 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0