Fonction VBA Calculate – Maintenant, Classeur, Feuille de Calcul ou Plage

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on décembre 23, 2021

Ce tutoriel vous apprendra toutes les différentes options de calcul en VBA.

Par défaut, Excel calcule tous les classeurs ouverts chaque fois qu’une modification est apportée au classeur. Pour ce faire, il suit un arbre de calcul dans lequel, si la cellule A1 est modifiée, il met à jour toutes les cellules qui dépendent de la cellule A1, et ainsi de suite. Toutefois, cela peut entraîner une exécution extrêmement lente de votre code VBA, car chaque fois qu’une cellule est modifiée, Excel doit effectuer un nouveau calcul.

Pour augmenter la vitesse de votre code VBA, vous voudrez souvent désactiver les calculs automatiques au début de vos procédures :

Application.Calculation = xlManual

et les réactiver à la fin :

Application.Calculation = xlAutomatic

Cependant, que faire si vous voulez calculer tout (ou une partie) de vos classeurs au sein de votre procédure ? La suite de ce tutoriel vous apprendra comment faire.

Calculer Maintenant

Vous pouvez utiliser la commande Calculate pour tout recalculer (dans tous les classeurs ouverts) :

Calculate

C’est généralement la meilleure méthode à utiliser. Cependant, vous pouvez également effectuer des calculs plus précis pour gagner en rapidité.

Calculer Uniquement la Feuille

Vous pouvez également demander à VBA de calculer uniquement une feuille spécifique.

Ce code recalculera la feuille active :

ActiveSheet.Calculate

Ce code recalculera la feuille 1 :

Sheets("Feuil1").Calculate

Calculer une Plage

Si vous avez besoin d’un calcul plus précis, vous pouvez demander à VBA de calculer uniquement une plage de cellules:

Sheets("Feuil1").Range("a1:a10").Calculate

Calculer une Formule Individuelle

Ce code calcule uniquement une formule individuelle de cellule:

Range("a1").Calculate

Calculer le Classeur

Il n’existe pas d’option VBA permettant de calculer uniquement un classeur entier. Si vous devez calculer un classeur entier, la meilleure option est d’utiliser la commande Calculate :

Calculer

Cette commande calculera tous les classeurs ouverts. Si vous êtes vraiment préoccupé par la vitesse et que vous voulez calculer un classeur entier, vous pouvez être plus sélectif quant aux classeurs ouverts en même temps.

Calculer le Classeur – Méthodes qui ne Fonctionnent pas

Il existe quelques méthodes que vous pourriez être tenté d’utiliser pour forcer VBA à calculer uniquement un classeur, mais aucune d’entre elles ne fonctionnera correctement.

Ce code va parcourir en boucle chaque feuille de calcul du classeur et recalculer les feuilles une par une :

Sub Recalculer_Classeur()
    Dim fc As Worksheet
    
    For Each fc In Worksheets
        fc.Calculate
    Next fc
End Sub

Ce code fonctionnera parfaitement si toutes vos feuilles de travail sont « indépendantes », c’est-à-dire si aucune d’entre elles ne contient de calculs faisant référence à d’autres feuilles.

Cependant, si vos feuilles de calcul font référence à d’autres feuilles, vos calculs risquent de ne pas être mis à jour correctement. Par exemple, si vous calculez la feuille 1 avant la feuille 2, mais que les formules de la feuille 1 reposent sur des calculs effectués dans la feuille 2, vos formules ne contiendront pas les valeurs les plus récentes.

Vous pouvez également essayer de sélectionner toutes les feuilles en même temps et de calculer la feuille active:

ThisWorkbook.Sheets.Select
ActiveSheet.Calculate

Cependant, cela posera le même problème.

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! vba save as


Learn More!
vba-free-addin

Module Complémentaire d'Exemples de Code VBA

Accédez facilement à tous les exemples disponibles sur le site.

Naviguez simplement dans le menu, cliquez, et le code sera inséré directement dans votre module. Module complémentaire .xlam.

(Aucune installation requise!)

Téléchargement gratuit

Retour aux exemples de code VBA