Monsieur Excel
Pour tout savoir faire sur Excel !

29 novembre 2013

La syntaxe exacte d’agregat()

Dans notre article du 13 novembre, nous n’avions présenté pour simplifier que la première syntaxe de la fonction agregat(). En fait, comme nous le voyons dans la copie d’écran ci-dessous montrant trois extraits de l'aide de Microsoft, cette fonction possède deux syntaxes.

 
Comme c’est très souvent le cas dans l’aide de Microsoft, la syntaxe proposée est foireuse… 
     
En effet, si vous utilisez la première syntaxe proposée par Microsoft avec par exemple =agregat(14;6;$A$1:$A$10;) en omettant donc le [k] censé être facultatif mais en gardant le « ; » qui le précède, vous obtiendriez une erreur !

Si l'on voulait être précis, il faudrait en fait écrire :
=agregat(n° fonction;n° option;zone[;arg]) pour la première syntaxe
=agregat(n° fonction;n° option;zone[;zone2[;zone3…]]) pour la seconde syntaxe

La seconde syntaxe est réservée aux fonctions dont les numéros vont de 1 à 13, les fonctions qui n’ont pas besoin d’un argument additionnel. Dans ce cas, les arguments à partir du troisième peuvent identifier plusieurs zones. 

Ainsi,  la formule =agregat(1;6;$A$1:$A$10) est-elle équivalente à =agregat(1;6;$A$1:$A$6;$A$7:$A$10).

La première syntaxe sert à passer un argument supplémentaire à la fonction concernée, ce qui concerne uniquement les fonctions de 14 à 19.

En conclusion, si le numéro de fonction (le premier argument) est supérieur ou égal à 14, c’est la première syntaxe qui est utilisée par Excel. S’il est inférieur ou égal à 13, c’est la seconde syntaxe qui s’applique.

Contre-vérités trouvées sur d’autres sites Excel

Sur certains sites que j’ai consultés, il est affirmé que le troisième argument ne peut pas être une zone en trois dimensions, c’est-à-dire un ensemble de matrices. C’est faux !

Faites-en donc l’expérience… Sélectionnez trois matrices (en maintenant la touche [Ctrl] enfoncée), donnez le nom « Jules » à cet ensemble de matrices – donc à une zone en trois dimensions – puis utilisez la formule = agregat(1; 6;jules). Cela fonctionne parfaitement bien !

Remarque – Vous pouvez à ce sujet consulter l’article « Tutorial sur la fonction index() » du 9 mars 2011, qui illustre une utilisation d’une zone à trois dimensions…

Sur certains sites aussi, il est affirmé que, pour les six dernières fonctions – qui requièrent un argument supplémentaire –, les valeurs analysées doivent obligatoirement être dans une plage continue. C’est faux aussi : il suffit pour cela d’utiliser un nom, comme je l’ai fait ci-dessus avec Jules. Dans ce cas, on a accès non seulement aux plages à trois dimensions, mais aussi aux plages discontinues à une ou à deux dimensions.