Désactiver (ou activer) les calculs automatiques - Exemples de code VBA

Chaque fois que vous mettez à jour une valeur de cellule, Excel passe par un processus pour recalculer le classeur. Lorsque vous travaillez directement dans Excel, vous voulez que cela se produise 99,9% du temps (l'exception étant si vous travaillez avec un classeur extrêmement volumineux). Cependant, cela peut vraiment ralentir votre code VBA. C'est une bonne pratique de définir vos calculs sur manuel au début des macros et de restaurer les calculs à la fin des macros. Si vous devez recalculer le classeur, vous pouvez demander manuellement à Excel de calculer.

Désactiver les calculs automatiques

Vous pouvez désactiver le calcul automatique avec une macro en la définissant sur xlmanual. Utilisez le morceau de code VBA suivant :

1 Application.Calcul = xlManuel

Réactiver les calculs automatiques

Pour réactiver le calcul automatique avec le paramètre xlAutomatic :

1 Application.Calcul = xlAutomatique

Je recommande de désactiver les calculs automatiques au tout début de votre procédure et de réactiver les calculs automatiques à la fin. Il ressemblera à ceci:

Désactiver l'exemple de macro de calculs automatiques

12345678 Sub Auto_Calcs_Example()Application.Calcul = xlManuel'Faire quelque choseApplication.Calcul = xlAutomatiqueFin du sous-marin

Calcul manuel

Lorsque les calculs automatiques sont désactivés, vous pouvez utiliser le Calculer commande pour forcer Excel à recalculer :

1 Calculer

Vous pouvez également demander à Excel de recalculer uniquement une feuille de calcul individuelle :

1 Feuilles de calcul("feuille1").Calculer

Vous pouvez également dire à VBA de ne recalculer qu'une plage (cliquez pour lire notre article sur les méthodes de calcul VBA)

Voici à quoi cela pourrait ressembler dans une macro :

12345678910111213 Sub Auto_Calcs_Example_Manual_Calc()Application.Calcul = xlManuel'Faire quelque chose'RecalculerCalculer'Faire plus de chosesApplication.Calcul = xlAutomatiqueFin du sous-marin

Paramètres VBA - Code d'accélération

Si votre objectif est d'accélérer votre code, vous devriez également envisager d'ajuster ces autres paramètres :

La désactivation de la mise à jour d'écran peut faire une énorme différence en termes de vitesse :

1 Application.ScreenUpdating = Faux

La désactivation de la barre d'état fera également une petite différence :

1 Application.DisplayStatusBar = Faux

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 !) :

1 Application.EnableEvents = False

Enfin, votre code VBA peut être ralenti lorsqu'Excel essaie de recalculer les sauts de page (Remarque : toutes les procédures ne seront pas impactées). Pour désactiver DisplayPageBreaks, utilisez cette ligne de code :

1 ActiveSheet.DisplayPageBreaks = False

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave