Faire la moyenne des Xiers éléments d'une liste

Bonjour,

je cherche a calculer la moyenne des Xiers éléments d'une liste.

Par exemple, j'ai en stock 40 000 pièces

les 24 premières coutent 66€

les 12 d'après coutent 20€

les 37 d'après coutent 35€

les 70 d'apres coutent 46€

etc....

je cherche a calculer le cout moyen des 30 premiers éléments puis le cout des 50 d'apres...

par avance merci de votre support

Bonjour

les 24 premières coutent 66€

Chacun ou l'ensemble?

Cordialement

bonjour,

chacun des 24 premiers éléments coutent tous 66€

cordialement

Bonjour

Ta réponse

chacun des 24 premiers éléments coutent tous 66€

est ambigüe

De toute façon, si c'est l'ensemble, c'est impossible à calculer

Voir fichier

Cordialement

15classeur23.zip (6.66 Ko)
14classeur23-1.zip (11.40 Ko)
14classeur23-1.zip (11.40 Ko)

bonsoir,

et merci pour la réponse. Malheureusement je ne peux pas détailler ligne par ligne tel que proposé dans le fichier.

mon tableur doit resté tel que mentionnée dans la feuille#2 du fichier en PJ

Bonjour

Pour ce qui est de partir du début jusqu'à n

le nombre choisi en D1 (de 0 à 143)

La formule (qu'on doit pouvoir améliorer)

=CHOISIR(EQUIV(D1;{0;24;36;73;143};1);(D1*66);(24*66)+(D1-24)*20;(24*66)+(12*20)+((D1-36)*35);(24*66)+(12*20)+(37*35)+((D1-73)*46)/D1

Je regarde pour la suite

Cordialement

8classeur23-1.zip (11.98 Ko)

bonjour

un essai ;mais comme dit Amadeus .......

9borland.zip (11.74 Ko)

cordialement

Bonjour

Pour la suite

Voir fichier

Cordialement

14classeur23-1.zip (12.24 Ko)

bonsoir,

je te propose une fonction personnalisée (vite faite et peu optimisée, désolé pour cela)

mpid(t,vi,n)

ou

t est l'ensemble des cellules contenant quantité et prix,

vi est le numéro de l'élément à partir duquel il faut faire la moyenne,

n est le nombre d'élements à prendre en compte.

exemple d'appel (si le tableau est en A2:B5)

=mpid(A2:B5,1,24) : calcul de la moyenne des 24 premiers éléments

=mpid(A2:B5,25,37): calcul de la moyenne des éléments 25 à 62

etc ...

Function mpid(rq As Range, qd As Long, n As Long) As Variant

sw = 0
ctr = 0
m = n
For Each r In rq
If sw = 0 Then
 ctr = ctr + r.Value
 nq = r.Value
 sw = 1
Else
 cprix = r.Value
 sw = 0
 If Not (qfound) And ctr >= qd Then
  nq = ctr - qd + 1
  qfound = True
 End If
 If qfound Then
  If nq >= m Then
   Sumq = m * cprix + Sumq
   mpid = Sumq / n
   Exit Function
  Else
   Sumq = Sumq + nq * cprix
   m = m - nq
  End If
 End If
End If
Next r
mpid = "#Value"
End Function

Merci Acide Sulfurique,

j'ai beau rentré ta formule, j'ai une message d'erreur.

ci joint le tableur que j'essaie de créer.

en gros les quantités et couts sont dans les colonnes E et F9.

les vi, et n sont dans la colonne Y avec a chaque incrémentation de la fonction n devient vi.

le résultat doit apparaitre dans la colonne X

12classeur1macro.zip (7.04 Ko)

es-tu sûr d'avoir bien recopié tout le code ?

dans l'appel de la fonction, si tu disposes d'une version française, il faut remplacer les "," par des ";"

=mpid(A2:A5;1;40)

je te charge ton classeur avec la fonction appelée en colonne B

27classeur1macro.zip (18.77 Ko)

Bonjour Acide,

merci pour le fichier, malheureusement je pense qu'il comporte encore une erreur majeure.

En effet, lorsque je somme le cout du premier élément avec le cout des 3 suivants, je trouve pas le bon résultat.

A mon humble avis, il y a une erreur dans la ou les formules Sumq.

Il devrait y avoir une référence a la fonction sommeprod avec "vi" et "n" en arguments

Bonjour

Borland, les formules que je t'ai donné ne donnent-elles pas le bon résultat?

Cordialement

Borland a écrit :

Bonjour Acide,

merci pour le fichier, malheureusement je pense qu'il comporte encore une erreur majeure.

En effet, lorsque je somme le cout du premier élément avec le cout des 3 suivants, je trouve pas le bon résultat.

Bonjour Borland,

Si c'est la cas alors, je pense que je n'ai pas bien compris la manière dont tu calcules la moyenne.

pour reprendre le cas en question, que je peux comprendre de 2 façons.

(moyenne pondérée des éléments 1 à 4)

(1*9486+3*24542)/4 ce qui donne 20778 et ce que donne la fonction

ou

(moyenne pondérée des éléments 1 à 155)

(1*9486+41*54542+44*32470+29*34932)/115, ce qui donne 30064.48696 et ce que donne la fonction

si je dois appliquer une autre formule, indique-moi laquelle.

h2so4 a écrit :
Borland a écrit :

Bonjour Acide,

merci pour le fichier, malheureusement je pense qu'il comporte encore une erreur majeure.

En effet, lorsque je somme le cout du premier élément avec le cout des 3 suivants, je trouve pas le bon résultat.

Bonjour Borland,

Si c'est la cas alors, je pense que je n'ai pas bien compris la manière dont tu calcules la moyenne.

pour reprendre le cas en question, que je peux comprendre de 2 façons.

(moyenne pondérée des éléments 1 à 4)

(1*9486+3*24542)/4 ce qui donne 20778 et ce que donne la fonction

ou

(moyenne pondérée des éléments 1 à 115)

(1*9486+41*54542+44*32470+29*34932)/115, ce qui donne 30064.48696 et ce que donne la fonction

si je dois appliquer une autre formule, indique-moi laquelle.

Bonjour,

tu comprends très bien la question. les deux exemples que tu donnes sont représentatifs de ce que je cherche a faire.

Mais quand tu prends la moyenne des deux premiers elements 1*9486+1*24545, tu devrais obtenir 17014 en B3 et ce n'est pas le cas

De même, voir PJ, si je rajoute 3 éléments (D2) aux éléments en C2, j'obtiens un nombre cumulés d'éléments C3 (=4) et la encore la moyenne pondérée en B3 n'est pas la bonne .

Je dois surement mal paramétrer les arguments de ta fonction


Ok,

je viens enfin de comprendre comment ca marche !!!!

je vois comment l'intégrer dans mon excel

Bon,

j'y suis arrivé ::

dernière petite question, peut-on faire en sorte que lorsque la quantité est 0 on renvoit pas valeur mais 0

cheers !

Bonsoir Borland,

Je suppose qu'entretemps tu auras pu corriger toi-même la fonction.

mpid=0

doit remplacer

mpid="#Value"

et donc

Function mpid(rq As Range, qd As Long, n As Long) As Variant

sw = 0
ctr = 0
m = n
For Each r In rq
If sw = 0 Then
 ctr = ctr + r.Value
 nq = r.Value
 sw = 1
Else
 cprix = r.Value
 sw = 0
 If Not (qfound) And ctr >= qd Then
  nq = ctr - qd + 1
  qfound = True
 End If
 If qfound Then
  If nq >= m Then
   Sumq = m * cprix + Sumq
   mpid = Sumq / n
   Exit Function
  Else
   Sumq = Sumq + nq * cprix
   m = m - nq
  End If
 End If
End If
Next r
mpid = 0
End Function
 

Merci bcp !

Rechercher des sujets similaires à "moyenne xiers elements liste"