prix moyen

  • Initiateur de la discussion plumazon
  • Date de début
P

plumazon

Guest
Bonjour a tous

Pourriez vous m'aider a caluler un prix moyen??



MERCI [file name=Pxmoyen.zip size=1586]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Pxmoyen.zip[/file]
 

Pièces jointes

  • Pxmoyen.zip
    1.5 KB · Affichages: 23

Dan

XLDnaute Barbatruc
Bonsoir,

Je suppose que le prix est en rapport à la quantité totale en D.

Si ta moyenne est en fonction de la quantité donnée en H, mets ceci :

I2 = SOMMEPROD((B2:B6='Perc')*1;D2:D6)/H2



;)

Message édité par: Dan, à: 21/04/2006 22:35
 

pierrejean

XLDnaute Barbatruc
bonjour plumazon

salut Dan

salut Marc

une solution en Vba
(limite a 500 produits augmentable a volonte) [file name=Pxmoyen_20060422160721.zip size=10216]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Pxmoyen_20060422160721.zip[/file]
 

Pièces jointes

  • Pxmoyen_20060422160721.zip
    10 KB · Affichages: 28

andré

XLDnaute Barbatruc
Salut à vous tous,

Il me semble que la formule de Dan est incomplète (il manque l'argument C2:C6), elle renvoie 0.6.
Celle de pierrejean me semble exacte, elle renvoie 3.417529

Petite variante en formule, sans la colonne H :
=SOMMEPROD((B$2:B$6=G2)*(C$2:C$6)*(D$2:D$6))/SOMMEPROD((B$2:B$6=G2)*C$2:C$6)
formule pouvant être copiée vers le bas.

Â+
 

andré

XLDnaute Barbatruc
Resalut,

Petite explication pour Marc.

De façon basique la première partie de la formule (avant le /) peut s'écrire comme suit :

=SOMME(SI(B2='perc';C2*D2;0);SI(B3='perc';C3*D3;0);SI(B4='perc';C4*D4;0);SI(B5='perc';C5*D5;0);SI(B6='perc';C6*D6;0))
On analyse ligne par ligne.

Il y a moyen de reccourcir cette formule en l'écrivant sous forme matricielle.
=SOMME((B2:B6='perc')*(C2:C6)*(D2:D6))
à valider par Ctrl+Maj+Entrée
On analyse toute la plage en créant une boucle (comme en VBA)

Pour éviter de devoir appliquer ce type de validation, il existe la fonction SOMMEPROD
=SOMMEPROD((B$2:B$6='perc')*(C$2:C$6)*(D$2:D$6))
à valider simplement par Entrée
Pour pouvoir copier la formule vers le bas il faut appliquer aux plages des références absolues (ou semi-absolues).
De plus, il serait préférable de nommer ces plages (menu Insertion / Nom / Définir), ce qui rend la lecture plus compréhensible :
=SOMMEPROD((nom='perc')*(quantite)*(prix))

L'explication de la deuxième partie de la formule (après le /) est identique à la première.

En espérant que mon explication est claire et compréhensible.

Â+
 

Monique

Nous a quitté
Repose en paix
Bonjour,

De façon littérale, SommeProd fait la somme des produits
=SOMME(PRODUIT(B2='perc';C2;D2);PRODUIT(B3='perc';C3;D3);PRODUIT(B4='perc';C4;D4);PRODUIT(B5='perc';C5;D5);PRODUIT(B6='perc';C6;D6))
en moins long :
=SOMME((B2='perc')*C2*D2;(B3='perc')*C3*D3;(B4='perc')*C4*D4;(B5='perc')*C5*D5;(B6='perc')*C6*D6)
en plus court :
=(B2='perc')*C2*D2+(B3='perc')*C3*D3+(B4='perc')*C4*D4+(B5='perc')*C5*D5+(B6='perc')*C6*D6

(B2='perc') a pour résultat VRAI ou FAUX où VRAI équivaut à 1 et FAUX équivaut à 0
=VRAI*C2*D2 a pour résultat C2*D2
=FAUX*C2*D2 a pour résultat 0

Pour voir le calcul effectué par la formule, tu tapes
=SOMMEPROD((B$2:B$6='perc')*C$2:C$6*D$2:D$6)

Dans la barre de formule, tu sélectionnes la dernière partie et tu appuies sur F9
tu obtiens une matrice entre crochets :
=SOMMEPROD((B$2:B$6='perc')*C$2:C$6*{3,2;4;2,99;4,01;5})
Tu sélectionnes la 2ème partie, puis F9 et tu obtiens
=SOMMEPROD((B$2:B$6='perc')*{10;20;2;5;20}*{3,2;4;2,99;4,01;5})
puis la 1ère :
=SOMMEPROD({VRAI;FAUX;VRAI;VRAI;FAUX}*{10;20;2;5;20}*{3,2;4;2,99;4,01;5})
puis la 2ème et la 3ème
=SOMMEPROD({VRAI;FAUX;VRAI;VRAI;FAUX}*{32;80;5,98;20,05;100})
Excel a fait le produit de 10 par 3,2, de 20 par 4, de 2 par 2,99 etc

puis tu sélectionnes le tout puis F9 et ça donne :
=SOMMEPROD({32;0;5,98;20,05;0})
Excel a fait une matrice du produit de VRAI par 32, de FAUX par 80 (donc 0), de VRAI par 5,98, de VRAI par 20,05, de FAUX par 100 (donc 0)
Et SommeProd fait la somme de tous ces produits
=SOMME(32;0;5,98;20,05;0)

CQFD
 

Discussions similaires

Réponses
3
Affichages
322