Moyenne mobile toutes les x valeurs [Résolu]

Signaler
Messages postés
26
Date d'inscription
mardi 4 août 2020
Statut
Membre
Dernière intervention
15 septembre 2020
-
Messages postés
26
Date d'inscription
mardi 4 août 2020
Statut
Membre
Dernière intervention
15 septembre 2020
-
Bonjour,


je voudrais calculer un moyenne mobile sur une suite de 133 données, petites particularité, je veux pouvoir calculer la moyenne toutes les X données, X étant modifiable. si X =3 par exemple alors j'aimerais calculer la moyenne (A1;A4;A7), si X=5 par exemple alors j'aimerais calculer la moyenne (A1;A6;A11;A16;A21) donc X définit à la fois le pas de saut et le nombre d'argument de la moyenne. Formule que je veux étendre sur toute la colonne façon moyenne mobile.

7 réponses

Messages postés
12723
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
30 septembre 2020
2 027
Bonjour

Avec une fonction personnalisée
Ouvrir éditeur VBA (Alt+F11) - Insertion - Module
Copier coller le code suivant et fermer éditeur
Function moyenneperso(nb As Integer)
For n = 1 To nb * (nb - 1) Step nb
tot = tot + Range("A" & n)
Next
moyenneperso = tot / nb
End Function

La formule s'utilise selon la syntaxe =moyenneperso(x)

Cdlmnt
Via
Messages postés
26
Date d'inscription
mardi 4 août 2020
Statut
Membre
Dernière intervention
15 septembre 2020

Bonjour Via,
Merci pour votre réponse et votre aide. Je vous en suis très reconnaissant !

Juste pour comprendre : j'ai mis le code dans VBA, puis voulant appliquer la fonction dans la colonne B, j'écris

=moyenneperso(A:A;D1)
A:A étant la plage sur laquelle je veux calculer la moyenne
D1 étant X. Celui qui définit à la fois le pas de saut et le nombre d'argument de la moyenne.

J'ai également essayé =moyenneperso(A:A) et =moyenneperso(D1) et =moyenneperso(A1;D1) ... sans succès

Malheureusement pour moi cela ne fonctionne pas, mais peut être ai-je mal compris votre réponse à ma question. Je vous serais encore plus reconnaissant, de préciser la réponse.
Messages postés
12723
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
30 septembre 2020
2 027
La macro s’applique forcément sur la plage A:A, il n'y a pas lieu de l'indiquer
il suffit de remplacer x par un nombre ou par l'adresse de la cellule comportant ce nombre donc =moyenneperso(D1) devrait fonctionner
Pour voir ce qui ne va pas il me faut ton fichier
A poster sur cjoint.com, copier le lien créé et revenir le coller ici


Messages postés
26
Date d'inscription
mardi 4 août 2020
Statut
Membre
Dernière intervention
15 septembre 2020

J'ai tenté de faire au mieux avec WeTransfer : https://we.tl/t-RSpx0LQCkm
Messages postés
12723
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
30 septembre 2020
2 027
J'ai modifié la macro en conséquence pour que tu puisses choisir la colonne, le pas et le nombre
https://mon-partage.fr/f/eRutcUFN/
Messages postés
26
Date d'inscription
mardi 4 août 2020
Statut
Membre
Dernière intervention
15 septembre 2020

Merci 1000 fois !
Messages postés
26
Date d'inscription
mardi 4 août 2020
Statut
Membre
Dernière intervention
15 septembre 2020

En revanche, lorsque j'étends la formule, en figeant le pas et le nb d'arguments, mais en laissant libre la plage, cela me met toujours le même résultat, alors que normalement les chiffres devraient évoluer (j'ai tenté un F9, en vain).
Messages postés
12723
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
30 septembre 2020
2 027
Si tu étires la formule vers le bas la colonne de la moyenne ne change pas donc même résultat, si tu étires vers la droite la colonne change donc résultat différent
Le calcul part toujours de la 2eme ligne par contre si tu voulais en étirant changer de ligne de départ il faudra modifier la macro
Donne moi plus de précisions
Messages postés
26
Date d'inscription
mardi 4 août 2020
Statut
Membre
Dernière intervention
15 septembre 2020

En effet, j'aimerais étirer vers le bas. L'idée est de faire une moyenne mobile pour étudier l'évolution de la moyenne des variations.du coup le calcul doit partir de la cellule A3 si je mets la formule en B3, puis A4 si je mets la formule en B4 ... etc ...

exemple concret : si je mets 1 et 3, j'étude la moyenne mobile de chaque mois (1), sur 3 mois. et donc son évolution au fil du temps. si je mets 3 et 3, j'étudie la moyenne mobile de chaque 3 mois, sur 9 mois (pas de 3 x 3 arguments). Donc la moyenne mobile me permet de savoir ce l'évolution des écarts, à 3 mois quelque soit le mois de départ.

D'où l'intérêt d'une moyenne mobile étirable vers le bas.
Messages postés
12723
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
30 septembre 2020
2 027
Tu n'avais pas précisé cela au départ
alors remplace la 2eme ligne de la macro par celle-ci :
For n = plage.Row To plage.Row + pas * (nb - 1) Step pas

Messages postés
26
Date d'inscription
mardi 4 août 2020
Statut
Membre
Dernière intervention
15 septembre 2020

ça fonctionne, ça fait des moyennes je fais les vérifications d'usage pour voir si les chiffres correspondent et je ne retombe pas sur les mêmes chiffres en pas de 3 et 3 et quand je fais manuellement.
Messages postés
12723
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
30 septembre 2020
2 027
perso je trouve le même résultat macro ou manuel

Messages postés
26
Date d'inscription
mardi 4 août 2020
Statut
Membre
Dernière intervention
15 septembre 2020

Vous avez raison j'avais fait une faute de frappe dans la formule. Mes excuses et mes sincères remerciements pour votre aide précieuse.
Messages postés
26
Date d'inscription
mardi 4 août 2020
Statut
Membre
Dernière intervention
15 septembre 2020

Au fait, si jamais, vous vous y connaissez aussi en écart type ... J'abuse de votre gentillesse, je cherche une façon de faire un écartype.si.ens un peu comme une moyenne.si.ens mais avec un écart type. J'ai posté un autre sujet dessus.