Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
la fonction SOMMEPROD considère les arguments non numériques comme nuls (se référer à la documentation Excel). C'est vrai aussi pour d'autres fonctions, comme SOMME et NB quand les arguments sont des plages de cellules.
Or la formule MOD(LIGNE(A1:A100);10)=0 renvoie une plage de valeurs booléennes (VRAI ou FAUX) qui, au sens strict, ne sont pas des nombres.
Donc, la formule SOMMEPROD(MOD(LIGNE(A1:A100);10)=0;A1:A100) renvoie systématiquement le résultat 0.
Par contre, la formule (MOD(LIGNE(A1:A100);10)=0)*1 renvoie une plage de 1 et 0, correspondant respectivement aux VRAI et FAUX de MOD(LIGNE(A1:A100);10)=0, car quand Excel effectue une multiplication, il commence par transformer tous les opérandes en nombres (avec des règles "naturelles" de transformation) et le résultat de la multiplication est un nombre.
calcule la somme des produits de Matrice1 et Matrice2 terme à terme, pourvu qu'elles aient les mêmes dimensions.
Autrement dit :
(terme1 de Matrice1 x terme1 de Matrice2) +
(terme2 de Matrice1 x terme2 de Matrice2) +
(terme3 de Matrice1 x terme3 de Matrice2) + ...
On a ici
Code:
SOMMEPROD((MOD(LIGNE(A1:A100);10)=0)*1;A1:A100)
Matrice2 est la plage A1:A100. Matrice1 est calculée à partir de la même plage A1:A100.
Chacun de ses termes est le résultat du calcul suivant :
D'abord
Code:
MOD(LIGNE();10)
qui est le reste de la division entière du numéro de ligne par 10. On obtient successivement 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 (car 10 divisé par 10 égale 1, reste 0), 1, 2, etc.
Puis
Code:
MOD(LIGNE();10)=0
c'est à dire la comparaison de MOD(LIGNE();10) et de 0.
Le résultat en est une valeur booléenne : VRAI pour les lignes 10, 20, 30, etc., FAUX pour toutes les autres lignes.
Si on écrit
Code:
SOMMEPROD((MOD(LIGNE(A1:A100);10)=0);A1:A100)
on calcule :
(FAUX x terme1 de Matrice2) + (FAUX x terme2 de Matrice2) + (FAUX x terme3 de Matrice2) + ... + (FAUX x terme9 de Matrice2) + (VRAI x terme10 de Matrice2) + (FAUX x terme11 de Matrice2) + ...
Ce qui n'a pas de sens en calcul ordinaire !
Heureusement, les valeurs booléennesFAUX et VRAIont des équivalents NUMÉRIQUES dans Excel® : ce sont respectivement 0 et 1. Lorsqu'on écrit
Code:
(MOD(LIGNE(A1:A100);10)=0)*1
à la place de
Code:
MOD(LIGNE(A1:A100);10)=0
on obtient 0 à la place de FAUX et 1 à la place de VRAI. Ainsi,
Code:
SOMMEPROD((MOD(LIGNE(A1:A100);10)=0)*1;A1:A100)
renvoie :
(0 x terme1 de Matrice2) + (0 x terme2 de Matrice2) + (0 x terme3 de Matrice2) + ... + (0 x terme9 de Matrice2) + (1 x terme10 de Matrice2) + (0 x terme11 de Matrice2) + ...
Ce qui a un sens si les valeurs de Matrice2 sont numériques.
Voilà pourquoi la multiplication par 1 est ici indispensable.
Remarquez qu'on obtient le même résultat avec
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD