Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Somme sur plage variable

4 réponses
Avatar
Ricky
Bonjour à tous

Je me trouve face à une somme récalcitrante

Soit une colonne A qui contient des dates triées dans l'ordre croissant et une colonne C qui contient des montants
En tête de colonne C je voudrais afficher la somme depuis le départ (ligne 4) jusqu'à aujourd'hui

="C"&EQUIV(AUJOURDHUI();A:A;1) me donne bien l'adresse du montant qui correspond à aujourd'hui
=INDIRECT("C"&EQUIV(AUJOURDHUI();A:A;1)) me donne bien le contenu de cette cellule (exemple pour tester)
par contre =SOMME(C4:"C"&EQUIV(AUJOURDHUI();A:A;1))) me retourne une erreur

Qqun peut me dire ce qui coince ? (Et comment le régler ;) )

Merci de votre aide

--
Ricky

4 réponses

Avatar
ChrisV
Bonjour Ricky,

=SOMME(INDIRECT("C4:C"&EQUIV(AUJOURDHUI();A:A;1)))


ChrisV


"Ricky" a écrit dans le message de news:

Bonjour à tous

Je me trouve face à une somme récalcitrante

Soit une colonne A qui contient des dates triées dans l'ordre croissant et
une colonne C qui contient des montants
En tête de colonne C je voudrais afficher la somme depuis le départ (ligne
4) jusqu'à aujourd'hui

="C"&EQUIV(AUJOURDHUI();A:A;1) me donne bien l'adresse du montant qui
correspond à aujourd'hui
=INDIRECT("C"&EQUIV(AUJOURDHUI();A:A;1)) me donne bien le contenu de cette
cellule (exemple pour tester)
par contre =SOMME(C4:"C"&EQUIV(AUJOURDHUI();A:A;1))) me retourne une
erreur

Qqun peut me dire ce qui coince ? (Et comment le régler ;) )

Merci de votre aide

--
Ricky



Avatar
Nicolas B.
Salut Ricky,

Dans ta formule =SOMME(C4:"C"&EQUIV(AUJOURDHUI();A:A;1))) tu mélanges un
morceau d'adresse de cellule avec un chaîne de caractères. Il faut
passer par Indirect pour avoir l'adresse :
=SOMME(INDIRECT("C4:C"&EQUIV(AUJOURDHUI();A:A;1)))

Mais pour ce problème un somme.si ou un sommeprod ne convient-il pas mieux ?


A+
Nicolas B.

Bonjour à tous

Je me trouve face à une somme récalcitrante

Soit une colonne A qui contient des dates triées dans l'ordre croissant et une colonne C qui contient des montants
En tête de colonne C je voudrais afficher la somme depuis le départ (ligne 4) jusqu'à aujourd'hui

="C"&EQUIV(AUJOURDHUI();A:A;1) me donne bien l'adresse du montant qui correspond à aujourd'hui
=INDIRECT("C"&EQUIV(AUJOURDHUI();A:A;1)) me donne bien le contenu de cette cellule (exemple pour tester)
par contre =SOMME(C4:"C"&EQUIV(AUJOURDHUI();A:A;1))) me retourne une erreur

Qqun peut me dire ce qui coince ? (Et comment le régler ;) )

Merci de votre aide



Avatar
AV
Histoire de.
Ta formule (corrigée par ChrisV et Nicolas B) présente un inconvénient
(possible) majeur :
La fonction EQUIV renvoie la position de la 1° occurrence trouvée pour
AUJOURDHUI() dans la plage des dates
Donc si la date du jour est présente plusieurs fois (?) la somme sera inexacte

Pour "parer le coup"
En utilisant la même méthode --> une matricielle :
=SOMME(INDIRECT("C4:C"&MAX(SI(A4:A65536=AUJOURDHUI();LIGNE(A4:A65536);0))))

Ou comme l'avait pensé ChrisV et suggéré Nicolas B :
=SOMME.SI(A4:A65536;"<=" &AUJOURDHUI();C4:C65536)
ou
=SOMMEPROD((A4:A65536<=AUJOURDHUI())*C4:C65536)

NB : C'est bien sur SOMME.SI qui est le plus "performant"
AV
Avatar
Ricky
Bonjour *AV* *ChrisV* et *Nicolas B* et tous les autres lecteurs aussi

Un grand merci pour l'explication. INDIRECT me convient parfaitement Je sais que chaque date n'apparaît qu'une fois et elles sont obligatoirement classées.

Honte sur moi... Je me suis braqué sur l'idée de la plage à délimiter et je n'ai même pas pensé à SOMMEPROD ou SOMME.SI
Encore une preuve de mon esprit borné ;)

Cordialement


Ricky

| Histoire de.
| Ta formule (corrigée par ChrisV et Nicolas B) présente un inconvénient
| (possible) majeur :
| La fonction EQUIV renvoie la position de la 1° occurrence trouvée pour
| AUJOURDHUI() dans la plage des dates
| Donc si la date du jour est présente plusieurs fois (?) la somme sera
| inexacte
|
| Pour "parer le coup"
| En utilisant la même méthode --> une matricielle :
| =SOMME(INDIRECT("C4:C"&MAX(SI(A4:A65536=AUJOURDHUI();LIGNE(A4:A65536);0))))
|
| Ou comme l'avait pensé ChrisV et suggéré Nicolas B :
| =SOMME.SI(A4:A65536;"<=" &AUJOURDHUI();C4:C65536)
| ou
| =SOMMEPROD((A4:A65536<=AUJOURDHUI())*C4:C65536)
|
| NB : C'est bien sur SOMME.SI qui est le plus "performant"
| AV