Moyenne mobile toutes les x valeurs

Résolu
Princedes -  
 Princedes -
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

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    0
    1. Princedes
       
      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.
      0
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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

    0
    1. Princedes
       
      J'ai tenté de faire au mieux avec WeTransfer : https://we.tl/t-RSpx0LQCkm
      0
  3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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/
    0
    1. Princedes
       
      Merci 1000 fois !
      0
    2. Princedes
       
      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).
      0
  4. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    0
    1. Princedes
       
      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.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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

    0
    1. Princedes
       
      ç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.
      0
  7. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    perso je trouve le même résultat macro ou manuel

    0
    1. Princedes
       
      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.
      0
  8. Princedes
     
    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.
    0