Monsieur Excel
Pour tout savoir faire sur Excel !

20 mai 2018

Légumes et fruits (b)

Dans le dernier article, nous avions terminé en laissant un problème irrésolu. Comment faire pour que le modèle que nous avons construit continue à fonctionner de façon parfaite même après l’insertion d’une ligne à l’intérieur du bloc ?

La solution consiste à remplacer la formule de la cellule E2 par =somme(decaler(E2;-1;0);D2).

La fonction decaler() est très utile pour résoudre des problèmes tels que celui-là et rendre les modèles bien plus stables.

Transformation en table

Une autre solution consiste à transformer le bloc A1:B6 en table ; à condition bien entendu d’avoir au préalable donné un titre, par exemple Produit à la cellule A1. En effet, dans une table, chaque colonne doit posséder un titre.

Une fois la table construire, redéfinissons la colonne E en entrant une nouvelle formule en E2. Mettons-nous en E2. Nous souhaitons par exemple y entrer une formule effectuant la somme de D$2 à D2. Le problème est que, dès que l’on clique en D2 pour créer cette formule, c’est [@Total] qui apparaît. Il s’agit de la référence structurée propre aux tables introduites avec Excel 2007 !

Comment faire pour obtenir l’équivalent de D$2 ? La solution n’est en fait pas si compliquée que cela : il suffit d’utiliser à cet effet la fonction index(). La bonne formule pour E2 est donc :
=somme(index([Total];1):[@Total])

Dès que nous avons entré cette formule en E2, elle est automatiquement recopiée dans toute la colonne. C’est là une des propriétés les plus intéressantes des tables.


Nous constatons que, grâce à la table, nous résolvons les deux problèmes que nous avions soulevés dans l’article précédent : d’une part, tout fonctionne bien après l’insertion d’une ligne à l’intérieur ; d’autre part, dès que l’on entre quoi que ce soit en A8, la table est étendue d’une ligne de façon automatique, les deux formules étant créées aussitôt par Excel.

Il ne reste qu’un seul petit problème, c’est que cette solution peut avoir un impact sur le temps de calcul si la table comporte un grand nombre de lignes. En effet, la formule de la colonne E provoque pour chaque cellule une sommation depuis la première ligne de données, ce qui est plus lourd, en temps de calcul, que la solution proposée plus haut avec la fonction decaler() !