Une formule matricielle est une formule qui pourra aussi bien effectuer des opérations entre plusieurs plages que d’effectuer une même opération sur plusieurs valeurs.
Dans notre exemple, la formule en F5 est :
= SOMME( (B5:B12>DATE(2024;7;1)) * (D5:D12) )
Cette formule effectue une opération entre la plage des dates et la plage des valeurs afin de faire la somme des valeurs dont la date est supérieure au 01/07/2024.
Dans notre exemple, la formule en F10 est :
= SOMME( NBCAR( C5:C12 ) )
Cette formule compte le nombre de caractères pour chaque cellule de la plage C5:C12 et fait la somme des valeurs.
Attention, selon votre version d’Excel, il faudra peut être valider la formule via ‘ctrl+alt+entrée’.
Explications
Les formules matricielles effectuent des traitement sur des plages de données (tableau). Il peut s’agir de plages de cellules ou de constantes de tableau.
On rencontrera souvent deux cas : les opérations entre matrices et une opération simple sur une plage de valeurs.
Les matrices
Une matrice est une liste de valeurs à une ou deux dimensions. En termes Excel, une matrice à une dimension sera une sélection de cellules sur une même ligne ou une même colonne. Une matrice à deux dimensions sera un tableau composé de plusieurs lignes et plusieurs colonnes.
A1:C1 --> matice à une dimension composée de 3 valeurs (en ligne)
A1:A6 --> matrice à une dimension composée de 6 valeurs (en colonne)
A1:C3 --> matrice à 2 dimensions composée de 3x3 valeurs
Les constantes de tableaux permettent également de saisir directement dans une formule une matrice.
={"1"."2"."3"}
--> matice à une dimension composée de 3 valeurs (en ligne)
={"1";"2";"3";"1";"2";"3"}
--> matrice à une dimension composée de 6 valeurs (en colonne)
={"1"."2"."3";"4"."5"."6";"7"."8"."9"}
--> matrice à 2 dimensions composée de 3x3 valeurs
Opérations entre matrices
Excel nous laisse la possibilité d’effectuer des opérations entre plusieurs matrices. Par exemple, nous pouvons effectuer des tests logiques sur une matrice :
= B5:B12 > DATE(2024;7;1)
--> Résultat: {FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;VRAI}
Cette formule renvoie une plage de données composées de VRAI/FAUX suivant que le résultat du test se révèle exact ou non.
Il est possible de multiplier la matrice générée par une autre :
= (B5:B12>DATE(2024;7;1)) * (D5:D12)
= ({FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;VRAI}) *
({119;492;481;228;416;246;140;179})
Lorsqu’on multiplie des matrices entre elles, Excel transforme les VRAI/FAUX en 1/0. On obtient :
= ({0;0;0;0;0;0;0;1}) *
({119;492;481;228;416;246;140;179})
Ensuite, il multiplie les éléments de chaque matrice :
= {0*119;0*492;0*481;0*228;0*416;0*246;0*140;1*179}
= {0;0;0;0;0;0;179}
Dans notre exemple, nous avons fait la somme de cette matrice :
= SOMME( {0;0;0;0;0;0;179} )
--> Résultat: 179
Le résultat est la somme des valeurs pour tous les articles dont la date est supérieure au 01/07/2024.
Effectuer une opération simple sur une plage de données
L’autre cas rencontré avec les formules matricielles est d’effectuer une opération simple sur une plage de données. Dans notre exemple, nous voulons calculer pour chaque cellule le nombre de caractères dans le code article. La formule pour un article est :
= NBCAR( article )
Plutôt que créer une colonne et ensuite faire la somme, nous pouvons directement obtenir le résultat souhaité en indiquant une plage de données :
= SOMME( NBCAR( C5:C12 ) )
= SOMME( {4;4;5;4;4;5;4;5} )
--> Résultat: 35