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() !
0 Commentaire(s):
Enregistrer un commentaire
<< Accueil