Calculer VBA - Maintenant, classeur, feuille de calcul ou plage

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

Par défaut, Excel calcule tous les classeurs ouverts à chaque modification de classeur. Pour ce faire, il suit un arbre de calcul où, si la cellule A1 est modifiée, il met à jour toutes les cellules qui reposent sur la cellule A1 et ainsi de suite. Cependant, cela peut entraîner l'exécution de votre code VBA extrêmement lentement, car chaque fois qu'une cellule change, Excel doit recalculer.

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

1 Application.Calcul = xlManuel

et réactivez-le à la fin :

1 Application.Calcul = xlAutomatique

Cependant, que se passe-t-il si vous souhaitez calculer tout (ou une partie) de vos classeurs dans le cadre de votre procédure ? Le reste de ce tutoriel vous apprendra quoi faire.

Calculer maintenant

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

1 Calculer

C'est généralement la meilleure méthode à utiliser. Cependant, vous pouvez également effectuer des calculs plus précis pour une vitesse améliorée.

Calculer la feuille uniquement

Vous pouvez également dire à VBA de ne calculer qu'une feuille spécifique.

Ce code recalculera la feuille active :

1 ActiveSheet.Calculer

Ce code recalculera Sheet1 :

1 Feuilles("Feuille1").Calculer

Calculer la plage

Si vous avez besoin d'un calcul plus précis, vous pouvez indiquer à VBA de ne calculer qu'une plage de cellules :

1 Feuilles("Feuille1").Plage("a1:a10").Calculer

Calculer la formule individuelle

Ce code calculera uniquement une formule de cellule individuelle :

1 Plage("a1").Calculer

Calculer le classeur

Il n'y a pas d'option VBA pour calculer uniquement un classeur entier. Si vous devez calculer un classeur entier, la meilleure option consiste à utiliser la commande Calculer :

1 Calculer

Cela calculera tous les classeurs ouverts. Si vous êtes vraiment préoccupé par la vitesse et que vous souhaitez calculer un classeur entier, vous pourrez peut-être être plus sélectif quant aux classeurs ouverts en même temps.

Calculer le classeur - Méthodes qui ne fonctionnent pas

Il existe plusieurs 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 parcourra chaque feuille de calcul du classeur et recalculera les feuilles une par une :

1234567 Sub Recalculate_Workbook()Dim ws As Feuille de calculPour chaque ws dans les feuilles de calculws.CalculerWS suivantFin du sous-marin

Ce code fonctionnera correctement si toutes vos feuilles de calcul sont « autonomes », ce qui signifie qu'aucune de vos feuilles 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 Sheet1 avant Sheet2, mais que les formules de Sheet1 reposent sur des calculs effectués dans Sheet2 alors vos formules ne contiendront pas les valeurs les plus récentes.

Vous pouvez également essayer de sélectionner toutes les feuilles à la fois et de calculer la feuille active :

12 Ce classeur.Feuilles.SélectionnerActiveSheet.Calculer

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

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

wave wave wave wave wave