Calculer la moyenne mobile, Excel VBA
La moyenne mobile est une technique utilisée en analyse de données, notamment pour les séries temporelles. Elle permet de lisser les fluctuations d’une donnée en calculant la moyenne d’un sous-ensemble de valeurs qui se déplacent dans la série. Dans Excel, vous pouvez implémenter une moyenne mobile en VBA (Visual Basic for Applications).
Voici un exemple de code VBA détaillé pour calculer la moyenne mobile dans Excel. Ce code suppose que vous avez des données dans une colonne, et vous voulez calculer la moyenne mobile sur une fenêtre de taille spécifiée.
Étapes de la solution :
- Vous entrez vos données dans une colonne (par exemple, A2:A100).
- Le code calcule la moyenne mobile avec une fenêtre définie (par exemple, sur 5 valeurs).
- Le résultat sera inscrit dans une autre colonne (par exemple, dans la colonne B).
Code VBA :
Sub CalculerMoyenneMobile() ' Déclaration des variables Dim ws As Worksheet Dim rangeData As Range Dim rangeResult As Range Dim windowSize As Integer Dim i As Integer, j As Integer Dim sum As Double Dim currentCell As Range ' Initialisation des variables Set ws = ThisWorkbook.Sheets("Feuil1") ' Changez le nom de la feuille si nécessaire Set rangeData = ws.Range("A2:A100") ' Plage des données (ajustez selon vos données) Set rangeResult = ws.Range("B2:B100") ' Plage où afficher les résultats windowSize = 5 ' Taille de la fenêtre de la moyenne mobile (peut être modifiée) ' Boucle à travers chaque cellule de la plage de données For i = windowSize To rangeData.Rows.Count sum = 0 ' Calculer la somme des valeurs dans la fenêtre de taille windowSize For j = i - windowSize + 1 To i sum = sum + rangeData.Cells(j, 1).Value Next j ' Calculer la moyenne et l'afficher dans la plage des résultats rangeResult.Cells(i, 1).Value = sum / windowSize Next i MsgBox "Calcul de la moyenne mobile terminé.", vbInformation End Sub
Explication du code :
1. Déclaration des variables :
- ws : représente la feuille de travail où se trouvent les données.
- rangeData : représente la plage de cellules contenant les données d’entrée (ici, A2:A100).
- rangeResult : représente la plage où seront inscrites les moyennes mobiles (ici, B2:B100).
- windowSize : taille de la fenêtre utilisée pour calculer la moyenne mobile (ici, 5 valeurs).
2. Initialisation des plages et de la taille de la fenêtre :
- Le code fait référence à la feuille Feuil1, mais vous pouvez changer cela en fonction de vos besoins.
- Le calcul commence à partir de la cellule A2 et va jusqu’à A100 (vous pouvez ajuster cette plage selon vos données).
3. Calcul de la moyenne mobile :
- La boucle principale commence à partir de i = windowSize (5 dans ce cas) et va jusqu’à la dernière cellule de la plage rangeData.
- À chaque itération, une somme est calculée pour les windowSize dernières valeurs. Ensuite, la moyenne est calculée en divisant cette somme par windowSize.
- Le résultat est écrit dans la colonne B à partir de B2.
4. Affichage d’un message :
- Une fois que les moyennes mobiles ont été calculées, un message apparaît pour indiquer que le calcul est terminé.
Utilisation du code :
- Ouvrir l’éditeur VBA : Dans Excel, appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
- Créer un nouveau module : Cliquez sur Insertion > Module pour ajouter un module VBA.
- Copier et coller le code : Copiez le code ci-dessus et collez-le dans le module.
- Exécuter la macro : Appuyez sur F5 ou allez dans Exécution > Exécuter pour lancer la macro.
Personnalisation :
- Fenêtre de la moyenne mobile : Modifiez la variable windowSize pour ajuster la taille de la fenêtre utilisée pour le calcul de la moyenne mobile (par exemple, de 5 à 10 ou plus).
- Plages de données : Changez A2:A100 pour la plage qui contient vos données.
- Résultats : Modifiez la plage B2:B100 pour définir où vous voulez afficher les moyennes mobiles.
Ce code VBA est un excellent moyen d’automatiser le calcul des moyennes mobiles dans Excel, ce qui peut être utile pour des analyses statistiques ou des prévisions basées sur des séries temporelles.