aide sur la compréhension d'une formule

  • Initiateur de la discussion Initiateur de la discussion loured
  • Date de début Date de début

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 !

loured

XLDnaute Junior
Bonjour à tous

je ne comprends pas la raison du *1 dans cette formule
=SOMMEPROD((MOD(LIGNE(A1:A100);10)=0)*1;A1:A100)

quel est son utilité ?

merci pour votre aide
 
Re : aide sur la compréhension d'une formule

Bonjour loured,

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.

@+
 
Dernière édition:
Re : aide sur la compréhension d'une formule

Bonjour à vous, loured
Je vais essayer de vous répondre.
La formule
Code:
SOMMEPROD(Matrice1;Matrice2)
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éennes FAUX et VRAI ont 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
Code:
SOMMEPROD((MOD(LIGNE(A1:A100);10)=0)[COLOR="Red"][B]+0[/B][/COLOR];A1:A100)
Enfin, voici deux autres formules qui donnent le même résultat :
Code:
=SOMMEPROD((MOD(LIGNE(A1:A100);10)=0)*(A1:A100))
{=SOMME((MOD(LIGNE(A1:A100);10)=0)*(A1:A100))}
Notez que la deuxième est une formule matricielle.

Voilà !​
Bon courage !
ROGER2327
 
- 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

Discussions similaires

  • Question Question
Réponses
2
Affichages
67
  • Question Question
Microsoft 365 Graphique à bulles
Réponses
6
Affichages
205
Réponses
14
Affichages
174
Réponses
8
Affichages
163
Réponses
10
Affichages
227
Retour