Aide pour la création d'une fonction - moyenne mobile exponentielle
AntoDG
Messages postés4Date d'inscriptionmardi 12 juin 2012StatutMembreDernière intervention15 juin 2012
-
12 juin 2012 à 16:18
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
15 juin 2012 à 16:45
Bonjour,
Je suis nouveau sur ce forum. 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".
-------------------------------------------
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
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é et qu'il m'en fasse la moyenne mobile exponentielle.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 12 juin 2012 à 16:32
Bonjour,
Ouvre ton aide VBA sur :
Application.Inputbox
intéresse-toi à son type 8 .
Reviens après cette lecture si encore en difficulté
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
AntoDG
Messages postés4Date d'inscriptionmardi 12 juin 2012StatutMembreDernière intervention15 juin 2012 15 juin 2012 à 09:49
Application.Intputbox semble permettre de saisir dans une fenêtre de dialogue les données. Or dans mon cas, je souhaiterais sélectionner à travers une fonction VBA une plage de données d'une dimension (une série de cotations).
J'aurai plutôt imaginer une manière comme celle-ci (simple hypothèse);
Au moment de déclarer les variables de la fonction, déclarer un tableau de taille variable qu'il faut redimensionné en une colonne et X lignes.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 15 juin 2012 à 10:30
Expose plus clairement et plus précisément ton problème, en précisant ce qui doit être en dur dans ton code et ce qui doit être éventuellement décidé par l'utilisateur, s'il te plait.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
AntoDG
Messages postés4Date d'inscriptionmardi 12 juin 2012StatutMembreDernière intervention15 juin 2012 15 juin 2012 à 12:14
Je souhaite une fonction VBA avec comme seul input la plage de cellule qui je sélectionnerai
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 15 juin 2012 à 13:19
Je souhaite une fonction VBA avec comme seul input la plage de cellule qui je sélectionnerai
input veut dire choix laissé à l'utilisateur
et dans ce cas, tu as eu ta réponse : mon message du mardi 12 juin 2012 à 16:32:20
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 15 juin 2012 à 16:45
Ecoute :
1) nous n'avons pas la même définition de ce qu'est un Input.
2) TDD() ne saurait définir un Range
3) Comment est sélectionnée la plage TDD ?. si c'est l'utilisateur qui l'a choisit, c'est elle, l'"Input" (et je t'ai dit plus haut comment le lui permettre. Si ce n'est pas lui, ce n'est plus un "input" et comment est-elle alors définie ?
4) Un tableau dynamique peut toujours être généré par une plage. Ainsi (exemple) :
tablo = Range("A1:A24")
tablo sera ainsi un tableau à 2 dimensions et (par exemple) : tablo(3,1) contiendra la valeur de la cellule A3
Voilà. Je pense que tu as maintenant tous les ingrédients qui te sont nécessaires pour travailler.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ