La fonction Index()
Dans mon article du 28 février
dernier titré « Visicalc, le grand-père d’Excel », je vous montrais que
le tout premier tableur, Visicalc, possédait déjà les bases de toute modélisation
efficace grâce à la présence des fonctions Choose
(Index) et Lookup (Recherche).
J’y expliquais aussi un certain
nombre de choses sur l’évolution de la fonction Recherche() dans
le temps. Il est peut-être utile, et nous le ferons dans cet article, de revoir
la fonction Index() car je vois
souvent des utilisateurs dans les entreprises qui la maîtrisent mal. Pire
encore, certaines vidéos Internet sur cette fonction ont, dans le meilleur des
cas, des lacunes évidentes et, dans le pire des cas, disent clairement des
contre-vérités.
Il faut avouer que l’aide de
Microsoft – loin d’être parfaire ! – a certainement contribué à cette
confusion générale, à laquelle j’essaye de répondre dans cet article.
Les erreurs dans l’aide de Microsoft
La partie gauche de l’image
ci-dessous montre ce qui apparaît quand on entre =index( dans une
cellule. Microsoft a fait très fort, car il y a là trois erreurs, que je leur
ai signalées en vain il y a plus de 20 ans et qui n’ont jamais été
corrigées !
Ils ont oublié la première
syntaxe, celle où il y a un vecteur et non une matrice.
Ils parlent de matrice dans la
première syntaxe et de zone dans la seconde : il faudrait dire « matrice »
dans les deux cas. Ou, mais moins précisément, « zone » dans les deux
cas…
Si vous écrivez =index(matrice;n°ligne;)
vous obtenez une erreur avec un Excel traditionnel et pas du tout ce à quoi
vous pensiez avec un Excel en licence 365 ProPlus.
Pour commenter la remarque n°3,
cette erreur de documentation est présente dans toute l’aide d’Excel et
pour toutes les fonctions à plusieurs arguments : le « ; »
devrait être entre crochets : il faudrait écrire =index(matrice;n°ligne[;n°colonne]) et non =index(matrice;n°ligne;[n°colonne]).
Si l’on regarde la partie droite
de l’image, on peut faire les mêmes remarques que ci-dessus, plus noter que les
arguments sont séparés dans cette aide par des « , » alors que ce
devrait être des « ; ».
La bonne syntaxe pour index()
Vous pouvez voir dans la copie d’écran
ci-dessous la syntaxe que je propose pour index(). Il me semble bien plus clair
d’éliminer tous les crochets représentant des paramètres facultatifs et de
dire, comme en I5:I7, qu’il y a en fait trois syntaxes : pour un vecteur,
pour une matrice et pour {mat}, c’est-à-dire un
ensemble de matrices. Voici donc ma proposition pour une bonne syntaxe d’Index :
=index(vecteur;position)
=index(matrice;n°lig;n°col)
=index({mat};n°lig;n°col;n°mat)
Remarque – Nous avons
donné le nom « Alfred » à l’ensemble des trois matrices à fond jaune.
Si la matrice retenue n’a pas le nombre de lignes et/ou de colonnes demandé, le
résultat est #REF !
0 Commentaire(s):
Enregistrer un commentaire
<< Accueil