Fonction Moyenne Glisssante

Bonjour à tous,

Voici comment je souhaiterai calculer la moyenne glissante avec les cas possibles suivants :

  • - Les colonnes B à M représentent les mois.
  • - Q représente la moyenne annuelle de chaque sous-catégorie de l'année précédente (N-1).
  • - S représente le mois en cours.
  • - Les montants de dépenses sont calculés à partir de la feuille de transactions.

Voici comment je souhaite calculer la moyenne glissante :

  • - Si le nombre de montants existants dans la ligne Bx:IndCol-1x est de 0 => Moyenne glissante = Qx
  • - Si le nombre de montants existants dans la ligne Bx:IndCol-1x est de 1 => Moyenne glissante = Moyenne(Qx, Mont1)
  • - Si le nombre de montants existants dans la ligne Bx:IndCol-1x est de 2 => Moyenne glissante = Moyenne(Qx, Mont1, Mont2)
  • - Si le nombre de montants existants dans la ligne Bx:IndCol-1x est égal ou supérieur à 3 => Moyenne glissante = Moyenne(Mont1, Mont2, Mont3)

Cependant le code ne fonctionne pas à tous les coups.

Merci de votre aide.

bonjour apt,

Bonjour BsAlv,

Merci pour le code fourni.

J'ai rencontré un problème dès le début lors de l'essai avec le mois de janvier. Le code s'arrête sur la ligne suivante :

For i = 1 To UBound(matriceColonnesNN)

La nouvelle version est en pièce jointe.

Merci !

re, en janvier, la plage n'est qu'une cellule et donc on n'a pas une matrice mais un double, integer ou string ...

Salut,

Avec le test :
x = Moyenne_Glissante(2, "janvier", 33000)

Retourne :

ligne : 2
mois : janvier
moyennePrec : 33000
idxColMois : 1
Adresse plageVal : $B$2
Adresse complète plageVal : 'Feuil1'!$B$2

J'ai eu l'erreur :
Erreur d'exécution '13':
Incompatibilité de type

Sur la ligne :

' Si le 3e élément de dernieresVal est vide, utiliser la moyenne précédente si elle existe
If dernieresVal(3) = vbEmpty Then

re,

avec les macros du fichier de 17:20 ? Chez moi, cela passe sans problèmes.

Dim dernieresVal(1 To 3) As Variant >>> avec ça on a déclaré la matrice avec 3 éléments et le dernier est bien "empty" au moment où vous avez votre erreur.

Donc, je ne le comprends pas.

J'ai résolu le problème en mettant le test :

If dernièreVal (3) = 0 then

Remarque : Les montants de tout mois en cours seront exclus du calcul de la moyenne. Pour le mois de janvier, la moyenne est obtenue directement à partir de la moyenne précédente (N-1) dans la colonne Q, car il n'y a pas de valeurs à traiter avant la colonne B.

Rechercher des sujets similaires à "fonction moyenne glisssante"