VBA – Désactiver (ou Activer) les Calculs Automatiques
In this Article
Chaque fois que vous mettez à jour la valeur d’une cellule, Excel passe par un processus de recalcul du classeur. Lorsque vous travaillez directement dans Excel, vous souhaitez que cela se produise 99,9 % du temps (sauf si vous travaillez avec un classeur extrêmement volumineux). Cependant, cela peut considérablement ralentir votre code VBA. Une bonne pratique consiste à définir l’option de calcul en mode manuel au début des macros et à restaurer les calculs automatiques à la fin des macros. Si vous devez recalculer le classeur, vous pouvez demander manuellement à Excel d’effectuer le calcul
Désactiver les Calculs Automatiques
Vous pouvez désactiver le calcul automatique avec une macro en attribuant la valeur xlManual à l’option Calculation de l’objet Application. Utilisez le code VBA suivant :
Application.Calculation = xlManual
Réactiver les Calculs Automatiques
Pour réactiver le calcul automatique avec le paramètre xlAutomatic :
Application.Calculation = xlAutomatic
Je recommande de désactiver les calculs automatiques au tout début de votre procédure et de les réactiver à la fin. Votre code ressemblera à ceci :
Exemple de Macro Désactivant les Calculs Automatiques
Sub Exemple_Calculs_Auto()
Application.Calculation = xlManual
'Votre Code
Application.Calculation = xlAutomatic
End Sub
Calcul Manuel
Lorsque les calculs automatiques sont désactivés, vous pouvez utiliser la commande Calculate pour forcer Excel à recalculer:
Calculate
Vous pouvez également demander à Excel de recalculer uniquement une feuille de calcul individuelle :
Worksheets("Feuil1").Calculate
Vous pouvez également demander à VBA de recalculer uniquement une plage (cliquez pour lire notre article sur les méthodes de calcul VBA)
Voici comment cela pourrait se présenter dans une macro :
Sub Exemple_Calcul_Auto_Recalcul_Manuel()
Application.Calculation = xlManual
'Votre Code
'Recalcul du classeur
Calculate
'Suite de votre code
Application.Calculation = xlAutomatic
End Sub
Paramètres VBA – Accélération du Code
Si votre objectif est d’accélérer votre code, vous devriez également envisager d’ajuster ces autres paramètres :
La désactivation de l’option Screenupdating peut faire une énorme différence en termes de vitesse :
Application.ScreenUpdating = False
Désactiver la barre d’état peut également faire une petite différence :
Application.DisplayStatusBar = False
Si votre classeur contient des événements, vous devez également désactiver les événements au début de vos procédures (pour accélérer le code et éviter les boucles sans fin!) :
Application.EnableEvents = False
Enfin, votre code VBA peut être ralenti lorsqu’Excel essaie de recalculer les sauts de page (Note : Ce ne sont pas toutes procédures qui seront impactées). Pour désactiver DisplayPageBreaks, utilisez cette ligne de code :
ActiveSheet.DisplayPageBreaks = False
La Programmation VBA Simplifiée
Ne cherchez plus de code VBA en ligne. Découvrez AutoMacro – un générateur de code VBA qui permet aux débutants de programmer leurs propres procédures avec un minimum de connaissances en programmation et avec de nombreuses fonctionnalités permettant à tous les utilisateurs de gagner du temps!
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!Learn More!