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

Changer le nom de la feuille avec un menu déroulant

Si vous utilisez des menus déroulants pour modifier des tableaux de données, vous pouvez vouloir renommer la feuille sur laquelle vous travaillez.

Voici un exemple de macro qui permet d'arriver à ce résultat :

Le code de la macro est le suivant :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("choix_villes").Address Then
Me.Name = Range("choix_villes").Value
End If
End Sub

A bientôt

Gaetan

Mise en forme conditionnelle avec indicateur de progression (2007 et 2010)

Voici une mise en forme conditionnelle que je n'avais pas encore regardée !
Ca me rappelle ce post.

Elle permet d'ajouter des "évaluations" ou des sortes d'indicateurs de progression à une plage de chiffres.

Voici la vidéo qui montre comment arriver à ce résultat (excel 2010)

A bientôt

Gaetan