Calculer la moyenne mobile exponentielle (MME), Excel VBA
La moyenne mobile exponentielle (MME) est un indicateur qui donne plus de poids aux valeurs récentes dans une série de données, tout en lissant les valeurs plus anciennes. Voici comment vous pouvez calculer la MME avec Excel VBA :
Code VBA pour calculer la MME :
Sub CalculerMME()
' Définir les variables
Dim Plage As Range
Dim i As Long
Dim Alpha As Double
Dim MME As Double
Dim ValeurActuelle As Double
Dim PlageMME As Range
' Demander à l'utilisateur de spécifier la plage de données
Set Plage = Application.InputBox("Sélectionner la plage de données", Type:=8)
' Demander à l'utilisateur de spécifier le paramètre alpha (facteur de lissage)
Alpha = Application.InputBox("Entrer le facteur alpha (par exemple 0.1)", Type:=1)
' Initialiser la première MME avec la première valeur de la série
MME = Plage.Cells(1, 1).Value
' Créer une plage pour afficher les résultats
Set PlageMME = Plage.Offset(0, 1) ' Afficher la MME dans la colonne adjacente
' Calculer la MME pour chaque valeur
For i = 2 To Plage.Cells.Count
ValeurActuelle = Plage.Cells(i, 1).Value
MME = (Alpha * ValeurActuelle) + ((1 - Alpha) * MME) ' Formule MME
PlageMME.Cells(i - 1, 1).Value = MME ' Enregistrer la MME calculée
Next i
' Message de confirmation
MsgBox "Calcul de la MME terminé!", vbInformation
End Sub
Explication du code :
1. Plage de données : L’utilisateur sélectionne la plage de données pour laquelle il souhaite calculer la MME.
2. Alpha : Le facteur de lissage alpha est demandé à l’utilisateur. Plus alpha est proche de 1, plus la moyenne sera sensible aux données récentes.
3. Calcul de la MME :
- La première MME est initialisée à la première valeur de la série.
- Pour chaque valeur suivante, la MME est mise à jour avec la formule : MMEt=(α×Valeur actuelle)+(1−α)×MME t−1
4. Affichage des résultats : La MME calculée est placée dans la colonne à côté de la plage sélectionnée.
Exemple :
Si vous avez une colonne de valeurs dans A1:A10, et que vous spécifiez un alpha de 0.1, la MME sera calculée et affichée dans la colonne adjacente, B1:B10.