Calcul d'une moyenne pondérée par blocs de 3 lignes successives [Résolu/Fermé]

Signaler
Messages postés
3
Date d'inscription
mercredi 8 janvier 2014
Statut
Membre
Dernière intervention
9 janvier 2014
-
Messages postés
3
Date d'inscription
mercredi 8 janvier 2014
Statut
Membre
Dernière intervention
9 janvier 2014
-
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

1 réponse

Messages postés
16433
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 avril 2021
3 164
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
3
Date d'inscription
mercredi 8 janvier 2014
Statut
Membre
Dernière intervention
9 janvier 2014

Merci Michel,
Ça fonctionne bien. Par contre pour mettre toutes les valeurs de E dans la colonne F (sans cellules vides entre elles) ?
Messages postés
16433
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 avril 2021
3 164
Je n'avais pas lu jusqu'à la fin!
Je regarde ça cet après- midim
Messages postés
16433
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 avril 2021
3 164
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);"")
Messages postés
3
Date d'inscription
mercredi 8 janvier 2014
Statut
Membre
Dernière intervention
9 janvier 2014

Merci Michel !