Monsieur Excel
Pour tout savoir faire sur Excel !

17 mai 2016

La volatilité dans Excel

Dans le dernier article, nous avons évoqué le problème de la volatilité dans Excel en disant que, pour chaque cellule utilisant une fonction volatile, cette cellule, ainsi que toutes les cellules qui leur son dépendantes directement ou indirectement, sont calculées chaque fois que l’on modifie le contenu d’une cellule quelconque d’un classeur ouvert quelconque.

En fait, la situation réelle est pire encore que cela car ce n’est pas seulement la modification d’une cellule qui peut entraîner tous ces calculs. D’autres événements peuvent aussi provoquer cette vague de calculs :
  • insertion ou suppression de ligne(s) ou de colonne(s) ;
  • certaines utilisations du filtre automatique ;
  • double clic sur un séparateur de ligne ou de colonne ;
  • ajout, édition ou suppression d’un nom ;
  • modification du nom d’un onglet ;
  • déplacement d’un onglet ;
  • masquage ou démasquage de lignes (pas de colonnes !).
Cela peut entraîner des temps de calcul énormes, allant jusqu’à rendre le modèle – dans les pires cas – pratiquement inutilisable.

Le cas de maintenant() ou aujourdhui()

De nombreux utilisateurs ont recours à cette fonction pour vérifier comment une date saisie se situe par rapport à la date du jour. On pourrait éviter tout cela avec par exemple une macro qui, à l’ouverture du classeur, mette la date du jour dans une cellule donnée.

Le cas de indirect() ou decaler()

De la même façon, une partie des objectifs que l’on cherche à atteindre à l’aide des fonctions indirect() ou decaler() peut être atteinte à l’aide des fonctions index() et choisir().

Liste des fonctions volatiles 

Voici la liste des fonctions volatiles :
  •     maintenant()
  •     aujourdhui()
  •     alea() et alea.entre.bornes()
  •     decaler()
  •     indirect()
  •     info() (selon ses arguments)
  •    cellule() (selon ses arguments)
Je me suis inspiré pour cet article de l’excellente publication de Chandoo sur ce sujet :