Souvenirs de formules matricielles…

C'était il y a 11 ans...voici la question de Louis (LG):
--------------------
j'ai un tableau :

A B C D
1 15 20 22 25
2 18 18 19
3 16 17

Mon but est de faire la somme des cellules vides en considérant que leur
valeur est égale à la dernière valeur de la ligne.
(soit 19 pour la ligne 2 + 2 fois 17 pour la ligne 3 = 34)

Sur chaque ligne, j'ai fait en colonne Ex
=SI(Dx="";(MAX(Ax:Dx)*NB.VIDE(Ax:Dx);0) (x =numéro de ligne)
Ensuite je fais la somme des valeurs trouvées.

Ca marche mais j'aimerais pouvoir écrire une seule formule matricielle dans
une cellule unique.

j'ai essayé {=SOMME(SI(D1:D3="";(MAX(A1:D3)*NB.VIDE(A1:D3));0))}
mais ça ne marche pas. Très logiquement d'ailleurs la valeur MAX est celle
de la plage A1:D3 soit 19.

Comment faire pour avoir les valeurs qui correspondent à chaque ligne ??
Une autre solution qu'une formule matricielle ?

Merci d'avance
--------------------------
Et ma réponse qui permet de gérer un tableau dynamique plus important
--------------------------
Bonjour,

Encore un petit développement pour terminer le problème !

Pour gérer plus facilement les 1000 lignes :

=SOMME(NB.SI((DECALER(A1;LIGNE(INDIRECT("1:"&LIGNES(A1:A3)))-1;0;1;4));"")*S
OMME.SI(DECALER(A1;LIGNE(INDIRECT("1:"&LIGNES(A1:A3)))-1;NB.SI(DECALER(A1;LI
GNE(INDIRECT("1:"&LIGNES(A1:A3)))-1;;1;4);"<>")-1;1;1);"<>"))

et pour un ajustement dynamique :
Après avoir défini "plage" comme nom dynamique avec la formule
=DECALER(DBM!$A$1;0;0;NBVAL(DBM!$A:$A))

=SOMME(NB.SI((DECALER(A1;LIGNE(INDIRECT("1:"&LIGNES(plage)))-1;0;1;4));"")*S
OMME.SI(DECALER(A1;LIGNE(INDIRECT("1:"&LIGNES(plage)))-1;NB.SI(DECALER(A1;LI
GNE(INDIRECT("1:"&LIGNES(plage)))-1;;1;4);"<>")-1;1;1);"<>"))

Je tiens évidemment à remercier L.Longre pour les nombreuses indications
qu'il a donnée par le passé et qui m'ont permis de construire ces formules
en moins d'une après-midi 😉

Bonne année à tout le monde

--
Gaetan Mourmant
www.polykromy.com

Pour marque-pages : Permaliens.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.