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