cs_vadius
Messages postés1Date d'inscriptionsamedi 11 septembre 2010StatutMembreDernière intervention11 septembre 2010
-
11 sept. 2010 à 07:52
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
11 sept. 2010 à 10:37
Bonjour a tous
Je débute en VBA et je bloque sur la façon de calculer une moyenne glissante à X jours.
J'ai deux colonnes, colonne A les dates, colonne B les valeurs d'un titre. Je voudrais créer une macro qui va me calculer puis m'écrire en colonne la moyenne glissante à X jours des rentabilités du titre.
L'utilisateur rentre dans une cellule le nombre de jours constituant la période glissante dont il veut calculer le rendement pour chaque jour.
Ex :: J'ai 6 mois de données en Janvier a fin Juin. Je veux calculer la moyenne glissante des rendements a 15jours.
Premier Rendement a 15 jours sera en date du 15 Janvier
Rendement = Valeur en date (i+15) / valeur en date (i) avec i une variable qui parcourt toutes les dates de la colonnes A.
Dans la colonne C, la macro me donne la valeur de ce calcul, pour toutes dates du 15 janvier au 30 Juin.
L'avantage de la macro est que l'utilisateur peut changer la période de calcul.
Je ne sais pas trop par ou débuter ni comment implémenter le code.
Merci à tous pour votre aide. N'hésitez pas si vous avez de plus de précisions.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 11 sept. 2010 à 10:37
Salut
As-tu tapé "moyenne" dans l'aide de Excel ?
Dans la fonction judicieusement appelée MOYENNE, le paramétrage permet spécifier autant de paramètres que tu veux ou presque (limite 30).
Cette limite n'intervient que lorsque tu désigne chaque cellule une à une, mais rien ne s'oppose à fournir un Range de cellules, genre "A1:A100".
Donc, dans ton cas, il te suffit de définir un Range à partir du nombre de cellules désignées par l'utilisateur et de le fournir à la fonction Moyenne.
Les fonctions utilisables dans les cellules peuvent être appelées depuis le code VBA avec cette syntaxe :
Application.WorksheetFunction.Average(monRange)
(Average = Moyenne en anglais)
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)