Calcul d'une moyenne pondérée par blocs de 3 lignes successives

Résolu/Fermé
hous3118 Messages postés 3 Date d'inscription mercredi 8 janvier 2014 Statut Membre Dernière intervention 9 janvier 2014 - 8 janv. 2014 à 09:09
hous3118 Messages postés 3 Date d'inscription mercredi 8 janvier 2014 Statut Membre Dernière intervention 9 janvier 2014 - 9 janv. 2014 à 15:50
Bonjour,

Je voudrais calculer une moyenne pondérée à partir de 2 colonnes mais en blocs de 3 lignes successives. C'est à dire une seule moyenne pour les trois premières lignes et après il faut passer au bloc de 3 lignes suivant et ainsi de suite.
Je m'explique. Je donne l'exemple pour les deux premiers blocs (la deuxième colonne est importante seulement pour indiquer les blocs de 3 lignes):
Col1....Col2.....Col3...Col4.....Col5....Col6
1..........a.........m........p
2..........a.........n.........l
3..........a.........q.........r
4..........b.........o.........v
5..........b.........s.........t
6..........b.........u........w
.
. etc

Je veux renvoyer dans la cellule (1,5) la Moyenne M = (m*p)+(l*n)+(r*q)/(p+l+r)
Maintenant il faut passer au deuxième bloc (et bien sûr laisser les cellules (2,5) et (3,5) vides) et renvoyer dans la cellule (4,5) la Moyenne M= (v*o)+(t*s)+(w*u)/(v+t+w)
et passer ensuite au 3ème bloc (c c c ) et ainsi de suite (la moyenne se fait toujours de la même manière : somme des produits des cellules (i, 4) et (i,3) divisé par la somme des 3 cellules de la colonnes 4 de chaque bloc)
Enfin je voudrais avoir dans la colonne 6 les cellules obtenues dans la colonne 5 mais sans cellules vides à l'intérieur (càd une colonne qui contient la première cellule de chaque bloc).
Est-ce qu'il y a aurait du code VBA facilitant ce calcul. La colonne 1 j'en ai jusqu'à 7500 et donc il me faut un code à compiler.
Pourriez vous m'aider s'il vous plait ?

---------------------------------------------------------------------
<config>Windows 7 / Excel 2007
A voir également:

1 réponse

michel_m Messages postés 16582 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 27 novembre 2022 3 284
Modifié par michel_m le 8/01/2014 à 10:15
Bonjour

en E1
=SI(MOD(LIGNE()-1;3)=0;((C4*D4)+(C5*D5)+(C6*D6))/SOMME(D4:D6);"")
et tirer vers le bas
Nota: on peut se passer de la colonne B

Michel
2
hous3118 Messages postés 3 Date d'inscription mercredi 8 janvier 2014 Statut Membre Dernière intervention 9 janvier 2014
Modifié par hous3118 le 8/01/2014 à 12:11
Merci Michel,
Ça fonctionne bien. Par contre pour mettre toutes les valeurs de E dans la colonne F (sans cellules vides entre elles) ?
0
michel_m Messages postés 16582 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 27 novembre 2022 3 284
8 janv. 2014 à 12:37
Je n'avais pas lu jusqu'à la fin!
Je regarde ça cet après- midim
0
michel_m Messages postés 16582 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 27 novembre 2022 3 284
Modifié par michel_m le 8/01/2014 à 14:37
re,
en F1 à tirer vers le bas
=DECALER(E$1;3*(LIGNE()-1);0)
et en E1 modifier la formule post #1 à tirer vers le bas
=SI(ET(MOD(LIGNE()-1;3)=0;A1<>"");((C1*D1)+(C2*D2)+(C3*D3))/SOMME(D1:D3);"")
0
hous3118 Messages postés 3 Date d'inscription mercredi 8 janvier 2014 Statut Membre Dernière intervention 9 janvier 2014
9 janv. 2014 à 15:50
Merci Michel !
0