[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 :
Application.Calculation = xlCalculationManual
Pensez à le remettre à automatique juste avant la fin de la macro :
Application.Calculation = xlCalculationAutomatic
On peut demander le calcul de tout le classeur :
Application.Calculate
Une seule Feuille :
ActiveSheet.Calculate
Ou même une plage de cellules :
Range("F2:F8").Calculate
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 :
Application.ScreenUpdating = False
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 :
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True

Nicolas Housset

Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.