Excel vous permet de contrôler le moment où il recalcule une feuille de calcul. Normalement, Excel recalcule chaque fois que vous modifiez quelque chose dans une cellule. Si vous travaillez avec de très grandes feuilles de calcul contenant de nombreuses formules, vous souhaiterez peut-être désactiver la fonction de recalcul automatique. Vous pouvez désactiver le recalcul automatique à l’aide des commandes de l’onglet Calcul de la boîte de dialogue Options.

Vos macros peuvent également forcer Excel à recalculer votre feuille de calcul. Si le recalcul automatique est activé, toute modification apportée par votre macro dans une feuille de calcul forcera Excel à recalculer. Si le recalcul automatique est désactivé, vous pouvez utiliser la méthode Calculate pour recalculer une feuille de calcul:

ActiveSheet.Calculate

Bien sûr, si le recalcul prend un certain temps, vous voudrez peut-être vérifier si un recalcul est nécessaire avant d’en forcer un. Il semble qu’il n’y a pas d’indicateur que vous pouvez vérifier directement pour voir si un recalcul est nécessaire. La chose la plus proche est de vérifier la propriété Saved de l’objet Workbook. Cette propriété agit essentiellement comme un «indicateur sale» pour l’ensemble du classeur. S’il y a des modifications non enregistrées dans un classeur, la propriété Saved a la valeur False; si tout est sauvé, alors c’est vrai.

Comment cela vous aide-t-il à déterminer si un recalcul est nécessaire?

N’oubliez pas que le calcul n’est nécessaire que lorsqu’il y a des modifications dans une feuille de calcul. La modification de quoi que ce soit dans une feuille de calcul définira également la propriété Saved du classeur sur False. Ainsi, vous pouvez vérifier la propriété Saved avant de faire le recalcul, comme indiqué ici:

If Not ActiveWorkbook.Saved Then     ActiveSheet.Calculate End If

Il n’y a qu’un seul problème avec cette approche, bien sûr: la propriété Saved n’est définie sur True que si le classeur est réellement enregistré. Cela signifie que vous pouvez recalculer plusieurs fois sans vraiment avoir besoin de le faire, à moins que vous n’associez l’enregistrement et le recalcul, comme indiqué ici:

If Not ActiveWorkbook.Saved Then     ActiveSheet.Calculate     ActiveWorkbook.Save End If

La sagesse d’aborder ce problème de cette manière dépend de la nature de votre situation particulière. S’il faut plus de temps pour enregistrer le classeur que pour simplement recalculer, cette approche ne fonctionnera pas. Si, cependant, le recalcul prend plus de temps (ce qui est très possible avec certains types d’opérations), alors cette approche peut bien fonctionner.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (2323) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Determining_if_Calculation_is_N Nécessaire [Déterminer si un calcul est nécessaire].