La forme matricielle d'une formule
Tous les utilisateurs des tableurs connaissent la formule = A1 * B1 qui calcule le produit des valeurs des cellules A1 et B1. La plupart d'entre eux, recopie cette formule autant de fois que nécessaire pour calculer le produit des cellules A2 et B2 , A3 et B3, ..., A10 et B10. Trop peu connaissent cette écriture matricielle A1:A10 * B1:B10 qui fournit les mêmes résultats en une seule écriture.
Dans un tableur une fonction (ou formule matricielle) s'applique sur autant de plages de cellule que la fonction a de paramètres. Elle traite individuellement et successivement toutes les cellules de ces plages. En conséquence, il doit nécessairement y avoir une correspondance entre le nombre, la disposition (en ligne, en colonne ou les 2) des cellules source (qui fournissent les valeurs) et la plage résultat.
Par exemple, la fonction "produit" citée en introduction, nécessite 2 paramètres. La source devra donc est composée de 2 plages ( ici A1:A10 et B1:B10) de même "forme" (ici 10 cellules en colonnes). La plage résultat doit, elle aussi, avoir cette "forme" ( par exemple : C1:C10)
Avant de saisir une formule matricielle, il faut sélectionner la plage résultat (dont la "forme" dépend de la fonction utilisée, ici : C1:C10 ), saisir la forme matricielle de la formule et valider en utilisant obligatoirement la combinaison de touches MAJ + CTRL + Entrée.
La formule apparaissant dans la plage résultat sera alors encadrée d’accolade comme par exemple {=A1:A10*B1:B10}
Sous Google Sheets, une formule en forme matricielle, s'écrit =ArrayFormula()
exemple :
- =ArrayFormula(A1:A10 * B1:B10)
- =ArrayFormula( SI (D3:D13 <7 ; D3:D13 ; ""))
Exemple 1 : la formule {=SI (D3:D13 <7; D3:D13; "")}
Rappel : la fonction SI s'écrit SI(test; V ; F), elle a 3 paramètres :
- en paramètre 1 : un test dont l'évaluation rend VRAI ou FAUX ;
- en paramètre 2 : V (ie : le résultat de la fonction SI, lorsque l'évaluation du test rend VRAI) ;
- en paramètre 3 : F : le résultat de la fonction SI lorsque l'évaluation du test rend FAUX.
Dans notre exemple 1, la formule {=SI (D3:D13 <7; D3:D13; "")} est une utilisation de la fonction SI sous sa forme matricielle avec :
en paramètre 1 : le test sous une forme matricielle : "D3:D13 <7" ;
en paramètre 2 : la plage "D3:D13" (ie : le résultat de la fonction SI lorsque le test est VRAI est la valeur de la cellule "associée" dans la plage D3:D13) ;
paramètre 3 : une chaine vide.
Fonctionnement : puisque la plage "D3:D13" comporte 11 cellules, le test sera effectué 11 fois successivement :
la cellule en position 1 de la plage est D3 ; sa valeur : 2.25, est comparée à 7, le test rend VRAI. La fonction SI rends 2.25, le contenu de D3 ( cellule en position 1 dans la plage D3:D13 définie dans le 2ème paramètre) et affiche 2,3 en cellule E3 (la 1ère cellule de la plage résultat en respectant le formatage de la plage résultat) ;
la cellule en position 2 de la plage est D4 ; sa valeur : 8, est comparée à 7, le test rend FAUX, la fonction SI rends "" (la chaine vide) ;
la cellule en position 3 de la plage est D5 ; sa valeur : 2.5, est comparée à 7, le test rend VRAI, la fonction SI rends le contenu de D13 (cellule en position 3 dans la plage D3:D13) et affiche 2.5 en cellule E5 (la 3ème cellule de la plage résultat en respectant le formatage de la plage résultat).
-----------
la cellule en position 11 de la plage est D13 ; sa valeur : 6 est comparée à 7,le test rend VRAI, la fonction SI rends le contenu de D13 (cellule en position 11 dans la plage D3:D13) et affiche 6.0 en cellule E13 (la 11ème cellule de la plage résultat en respectant le formatage de la plage résultat).
{=SOMME(SI(C5:C16="AL-M400";D5:D16;0))}
La figure 2 montre ce qu'il faut imaginer pour comprendre le calcul. Elle montre une plage E5:E16 contenant la formule matricielle {=SI(C5:C16="AL-M400"; D5:D16; 0)} dont l'algorithme est celui-ci :
Le test B5:B16 ="AL-400" est à effectuer 12 fois successivement :
la valeur de B5 (cellule en position 1 de la plage) est comparée à "AL-400", le test rend FAUX, la fonction SI rends 0 ;
la valeur de B6 (cellule en position 2 de la plage) est comparée à "AL-400", le test rend VRAI, la fonction SI rends 5639 le contenu de C6 (cellule en position 2 dans la plage C5:C16 définie dans le 2ème paramètre) ;
- ---------
image 2 : extraction du nombre de pages imprimées par les imprimantes AL-400
l'étape intermédiaire à imaginer pour comprendre le calcul
SOMME( SI(C5:C16="AL-M400"; D5:D16; 0)) qui applique la fonction SOMME sur une forme matricielle de SI et qui est validée par CTRL+MAJ+ENTRER
avec
SOMME.SI(C5:C16;"=AL-M400";D5:D16) qui applique la fonction SOMME.SI et qui est validée par ENTRER
NB : ces deux calculs produisent cependant le même résultat.