Bonjour,
Je débute en programmation VBA et dans le cadre d'une étude empirique, j'aurai besoin de réaliser des moyennes mobiles exponentielles sur des séries de cotations d'indices marchés.
J'ai pu récupérer une fraction de code pour le calcul de cette "MME".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 Option Explicit Private Sub Form_Load() 'Exemple d'application pratique Dim Cours(6), Njours Cours(1) = 1525 Cours(2) = 1460 Cours(3) = 1256 Cours(4) = 1246 Cours(5) = 1196 Cours(6) = 1254 Njours = 6 Debug.Print Moyenne_Mobile_Exponentielle(Cours(), Njours) End End Sub Public Function Moyenne_Mobile_Exponentielle(TDD(), Njours) Dim Alpha As Double, Beta As Double, I As Long, VMME As Double, NDC As Long Dim FormatChiffre As String 'Vérifie le nombre de chiffre dans le nombre NDC = 1 For I = 1 To Njours If Len(Str(TDD(I))) > NDC Then FormatChiffre = String(Len(Str(TDD(I))), "#") NDC = Len(Str(TDD(I))) End If Next Alpha = CDbl(Format(2 / Njours, "#.##")) Beta = CDbl(Format(1 - Alpha, "#.##")) VMME = CDbl(Format((TDD(1) * Beta) + (TDD(2) * Alpha), FormatChiffre)) For I = 3 To Njours 'Debug VMME VMME = CDbl(Format(VMME * Beta + (TDD(I) * Alpha), FormatChiffre)) 'Debug VMME Next Moyenne_Mobile_Exponentielle = VMME End Function
Il me manque cependant des éléments pour finaliser cette fonction.
1) j'aimerai pouvoir sélectionner une plage de données (exemple de D4 à D24)
----> Il faudrait donc déclarer une plage de cellule variable à la place de Cours(1), Cours(2) ...
2)qu'il me calcule le nombre de jours de cotation sélectionné (par rapport à la plage sélectionnée) et qu'il m'en fasse la moyenne mobile exponentielle.
----> un moyen de faire sous vba nb(plage de cellules sélectionnée)
Ce qui donnerait sous excel : =Moyenne_mobile_exponentielle(D1 : D20) par exemple
La formule que j'ai présenté plus haut reprend cette logique. Néanmoins, les valeurs de cours sont en dur, or, je souhaiterais que cette série de cours soit une plage de cellule variable sous excel.
Merci d'avance
Partager