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

Sumproduct conditionel

25 réponses
Avatar
rthompson
Bonjour à toutes et tous

Difficile à expliquer, mais je vais essayer

(Grâce à vous) j'ai des boutons (pas de l'urticaire, mais des déclencheur de
macros)
qui me cachent certaines lignes sous certaines conditions

Dans mes colonnes de M à S j'ai des quantités
Dans la colonne L j'ai des noms
Dans la colonne E j'ai des montants

Sur la ligne 3 j'ai des totaux conditionnels
=SUBTOTAL(109;M5:M350)
L'option 109 me donne le total des lignes affichées

Maintenant je voudrais avoir le montant total de chaque colonne des lignes
affichées
=SUMPRODUCT((Docsolution_Product=N4)*Docsolution_Amount)
Docsolution_Product est la colonne L
Docsolution_Amount est la colonne E
et sur la ligne 4 j'ai mes entêtes de colonne

Ceci fonctionne impeccablement

MAIS

Cela me donne toujours le montant total
Y a-t-il une option comme le 109 qui ferait uniquement le total des lignes
visibles?

Ou faut-il passer par une colonne supplémentaire pour les montant?

D'avance merci et à très bientôt

Rex

5 réponses

1 2 3
Avatar
Misange
superbe démo !
--
Misange migrateuse
http://www.excelabo.net : Participez à un travail collaboratif sur excel !

MichDenis a écrit :
| DECALER({20;21;22};LIGNE({20;21;22})-MIN(LIGNE({20;21;22}));;1)

Pour imager ce cas, tu places dans une plage A1:A3 les valeurs
20 , 21 , 23
si tu écrivais cette formule dans une cellule
ÞCALER(A1;0;;;) tu obtiendrais 20
ÞCALER(A1;1;;;) tu obtiendrais 21
ÞCALER(A1;2;;;) tu obtiendrais 22

0, 1, 2 -> la position de tes valeurs dans ta plage de cellules.
Si tu transposes, c'est la position de chaque valeur dans un tableau.

La raison d'être de ceci: LIGNE({20;21;22})-MIN(LIGNE({20;21;22}))
C'est d'arriver à obtenir la position de chacune des valeurs dans le tableau
Cette section Min(ligne(20),ligne(21),Ligne(22)) renvoie toujours 20

Si on répète pour l'opération pour chacune des valeurs :
=Ligne(20) -20 = 0
=Ligne(21) - 20 = 1
=Ligne(22) - 20 = 2

Au lieu d'utiliser une cellule pour afficher le résultat des conditions pour
chacune des lignes, on utilise un tableau. Excel se charge de se faire un
tableau intermédiaire en mémoire vive pour comptabiliser le résultat.

De là, la syntaxe : DECALER({20;21;22};LIGNE({20;21;22})-MIN(LIGNE({20;21;22}));;1)
OU
DECALER(A1:A3;LIGNE(A1:A3)-MIN(LIGNE(A1:A3));;1) , C'est la même chose...

La fonction Sommeprod() évalue dans un tableau temporaire (mémoire vive), le
résultat de chaque ligne pour chacune des conditions énumérées et elle fait ce que son
nom suggère :
A ) Multiplie ligne par ligne le résultat de chacune des conditions
B ) Additionne le résultat de chacune des lignes.

Ce type de formule n'est pas facile à saisir ... ;-))





Avatar
rthompson
Et moi alors?????

Déjà que je ne suis pas génial en Excel
Déjà que je ne suis pas génial en Français
Déjà que je ne suis même pas génial tout court

Faudrait qu'j'comprenne tout d'un coup!!!!!!
Je ne bois même pas mon vin d'un coup, moi Monsieur!
Je déguste, moi Monsieur!
Et quand on m'explique comme ça, ben je déguste MONSIEUR

Merci Merci Merci

A bientôt

Rex




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

Merci Misange.

Pas facile à comprendre, pas facile à expliquer
et surtout pas facile à écrire ! ;-)



"Misange" a écrit dans le message de groupe
de discussion :
superbe démo !
--
Misange migrateuse
http://www.excelabo.net : Participez à un travail collaboratif sur excel !

MichDenis a écrit :
| DECALER({20;21;22};LIGNE({20;21;22})-MIN(LIGNE({20;21;22}));;1)

Pour imager ce cas, tu places dans une plage A1:A3 les valeurs
20 , 21 , 23
si tu écrivais cette formule dans une cellule
ÞCALER(A1;0;;;) tu obtiendrais 20
ÞCALER(A1;1;;;) tu obtiendrais 21
ÞCALER(A1;2;;;) tu obtiendrais 22

0, 1, 2 -> la position de tes valeurs dans ta plage de cellules.
Si tu transposes, c'est la position de chaque valeur dans un tableau.

La raison d'être de ceci: LIGNE({20;21;22})-MIN(LIGNE({20;21;22}))
C'est d'arriver à obtenir la position de chacune des valeurs dans le
tableau
Cette section Min(ligne(20),ligne(21),Ligne(22)) renvoie toujours 20

Si on répète pour l'opération pour chacune des valeurs :
=Ligne(20) -20 = 0
=Ligne(21) - 20 = 1
=Ligne(22) - 20 = 2

Au lieu d'utiliser une cellule pour afficher le résultat des conditions
pour
chacune des lignes, on utilise un tableau. Excel se charge de se faire un
tableau intermédiaire en mémoire vive pour comptabiliser le résultat.

De là, la syntaxe :
DECALER({20;21;22};LIGNE({20;21;22})-MIN(LIGNE({20;21;22}));;1)
OU
DECALER(A1:A3;LIGNE(A1:A3)-MIN(LIGNE(A1:A3));;1) , C'est la même chose...

La fonction Sommeprod() évalue dans un tableau temporaire (mémoire vive),
le
résultat de chaque ligne pour chacune des conditions énumérées et elle
fait ce que son
nom suggère :
A ) Multiplie ligne par ligne le résultat de chacune des conditions
B ) Additionne le résultat de chacune des lignes.

Ce type de formule n'est pas facile à saisir ... ;-))







Avatar
Jacquouille
Dont Acte


--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"rthompson" a écrit dans le message de
news: %
C'est promi

La prochaine ExcelBouffe pas trop loin

JE VIENS


A bientôt

et bon week end

Rex

"Jacquouille" a écrit dans le message de
news:
"rthompson" a écrit dans le message de
news:
......
Pour une fois que je peux t'expliquer quelque chose cela me fait
réellement plaisir

Rex



S'il n'y a que cela, j'ai de quoi t'offrir le bonheur éternel avec toutes
mes inconnues et méconnues...-)
Jacques.







Avatar
Mgr T. Banni
et pourquoi qu'il a pu, grâce à mon soutien, entrer facilement dans les
ordres, le monsieur en question, alors qu'il semble totalement ignoré des
grands prêtres du MVP Board?
je vais en parler à sarko et vous allez voir comme ça va zinzinuler dans les
chau(dy)mières...
Mgr T.B.

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

superbe démo !
--
Misange migrateuse
http://www.excelabo.net : Participez à un travail collaboratif sur excel !

MichDenis a écrit :
| DECALER({20;21;22};LIGNE({20;21;22})-MIN(LIGNE({20;21;22}));;1)

Pour imager ce cas, tu places dans une plage A1:A3 les valeurs
20 , 21 , 23
si tu écrivais cette formule dans une cellule ÞCALER(A1;0;;;) tu
obtiendrais 20
ÞCALER(A1;1;;;) tu obtiendrais 21
ÞCALER(A1;2;;;) tu obtiendrais 22

0, 1, 2 -> la position de tes valeurs dans ta plage de cellules.
Si tu transposes, c'est la position de chaque valeur dans un tableau.

La raison d'être de ceci: LIGNE({20;21;22})-MIN(LIGNE({20;21;22}))
C'est d'arriver à obtenir la position de chacune des valeurs dans le
tableau
Cette section Min(ligne(20),ligne(21),Ligne(22)) renvoie toujours 20

Si on répète pour l'opération pour chacune des valeurs :
=Ligne(20) -20 = 0
=Ligne(21) - 20 = 1
=Ligne(22) - 20 = 2

Au lieu d'utiliser une cellule pour afficher le résultat des conditions
pour chacune des lignes, on utilise un tableau. Excel se charge de se
faire un tableau intermédiaire en mémoire vive pour comptabiliser le
résultat.

De là, la syntaxe :
DECALER({20;21;22};LIGNE({20;21;22})-MIN(LIGNE({20;21;22}));;1)
OU
DECALER(A1:A3;LIGNE(A1:A3)-MIN(LIGNE(A1:A3));;1) , C'est la même chose...

La fonction Sommeprod() évalue dans un tableau temporaire (mémoire vive),
le résultat de chaque ligne pour chacune des conditions énumérées et elle
fait ce que son
nom suggère :
A ) Multiplie ligne par ligne le résultat de chacune des conditions
B ) Additionne le résultat de chacune des lignes.

Ce type de formule n'est pas facile à saisir ... ;-))








Avatar
Misange
Mgr T. Banni a écrit :
et pourquoi qu'il a pu, grâce à mon soutien, entrer facilement dans les
ordres, le monsieur en question, alors qu'il semble totalement ignoré
des grands prêtres du MVP Board?
je vais en parler à sarko et vous allez voir comme ça va zinzinuler dans
les chau(dy)mières...
Mgr T.B.


si seulement il dépendait de Chaudy...

--
Misange migrateuse
http://www.excelabo.net : Participez à un travail collaboratif sur excel !
1 2 3