Aller au contenu principal


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.

Billet créé le :
27 jan 2022
Dernière MAJ :
26 Mar 2024

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}

information complémentaire disponible en cliquant ici

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 :

  1. 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) ;

  2. 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) ;

  3. 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). 


  4. -----------

 

  1. 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).  

 

 

Cliquer pour agrandir l'image

La forme ci-dessus s'utilise avec beaucoup d'efficacité comme paramètre d'une autre fonction.
Exemple : 
{=SOMME(SI(C5:C16="AL-M400";D5:D16;0))}
Cette formule matricielle calcule  en cellule D2le nombre total de pages imprimées par les imprimantes AL-400 d'un lycée.
 
Image 1 : le "calcul" du nombre total de pages imprimées par les imprimantes AL-400

Cliquer pour agrandir l'image

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 :

  1. 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 ;

  2. 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) ;

  3. ---------

image 2 : extraction du nombre de pages imprimées par les imprimantes AL-400

l'étape intermédiaire à imaginer pour comprendre le calcul

Cliquer pour agrandir l'image

 

 

Ne pas confondre et bien observer la place des parenthèses et des points-virgules.
   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.