[VBA Excel] Quelques conseils d’optimisation de votre code
Vous commencez à écrire des applications "sérieuse" et le temps d'exécution devient un critère important ?
Dans ce cas, il est temps d'optimiser votre code. En effet, une macro peut demander plusieurs heures pour s'éxecuter et, ne pas effectuer les calculs excel de façon systématique permet de gagner des précieuses minutes...
Vous exécutez une macro qui effectue automatiquement des modifications dans des cellules, vous constatez des lenteurs ? c'est parce que votre classeur contient de nombreuses formules, et à chaque changement quelconque d'une cellule, Excel recalcule tout.
Il est sage de mettre avant toute macro l'instruction de blocage du recalcul automatique :
Pensez à le remettre à automatique juste avant la fin de la macro :
On peut demander le calcul de tout le classeur :
Une seule Feuille :
Ou même une plage de cellules :
Pour des questions de vitesse d'exécution, il est conseillé de désactiver le rafraîchissement de l'écran avant la macro, et réactiver après :
Vous l'avez remarqué mais il arrive que la macro s'interrompe pour vous demander une confirmation ( si vous fermez le classeur courant, Excel va vous demander si vous voulez l'enregistrer) . Pour ne pas être ralenti par ces confirmation, utilisons DisplayAlerts qui va choisir à notre place l'option par défaut :
1 |
Application.Calculation = xlCalculationManual |
1 |
Application.Calculation = xlCalculationAutomatic |
1 |
Application.Calculate |
1 |
ActiveSheet.Calculate |
1 |
Range("F2:F8").Calculate |
1 |
Application.ScreenUpdating = False |
1 2 3 |
Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True |