VBA/Excel : moyenne mobile

Résolu
cs_nico39 Messages postés 56 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 4 octobre 2006 - 4 mars 2005 à 16:29
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 - 9 mars 2005 à 21:07
Bonjour à tous,

j'ai une série de données (1 colonne) aux valeurs assez chaotiques à analyser et je voudrais en connaître les tendances. Je sais qu'Excel peut afficher des courbes de tendances sur des graphiques, et notamment une "moyenne mobile". Je voudrais alors savoir s'il est possible d'appliquer cette moyenne mobile sur ma série de données, mais en récupérant les valeurs calculées par Excel..

A défaut, serait-il possible de programmer une macro " moyenne mobile" sur une série de données sans utiliser un graphique?

J'espère que mes explications sont assez claires.
Je vous remercie d'avance pour toute l'aide que vous pourrez m'apporter.


Amateurement vôtre...

5 réponses

cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
9 mars 2005 à 21:07
desole, je ne connait pas VBA, juste Excel et VB (un comble, non?)



as-tu cherche avec l'option recherche du site?



si rien ne vient, pose une nouvelle question sur le forum.
3
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
5 mars 2005 à 15:44
Quelle sont les equations mathematiques necessaires pour faire ce que tu veux?
0
cs_nico39 Messages postés 56 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 4 octobre 2006
8 mars 2005 à 12:38
Salut cqui789,

Merci de ta réponse.
La formule à appliquer est assez simple: il suffit de faire une moyenne toute bête sur une nombre déterminé de cellules, et ce, en se décalant d'une cellule après l'autre.
Je m'explique:
soit une série de données A1:A40
Dans la colonne B, je vais en faire une moyenne mobile toutes les 10 valeurs.
Ainsi en B9 ira la moyenne de A1:A9 (càd les 10 1ères valeurs), en B10 ira celle de A2:A10, et ainsi de suite.
J'espère que cela est plus clair.

Je viens en fait de parvenir à un code qui marche plutôt bien.
Dans le cas que je te'ai présenté plus haut, cela donne:

sub moy_mobil()

periode=10 'nombre de valeurs dont on fait la moyenne
Set Cellule = Cells(periode - 1 , 2)
Do Until IsEmpty(Cellule.Offset(1 - periode, -1)) = True
'Définition de la plage de valeurs étudiée à chaque fois
Set debut_Periode = Cellule.Offset(1 - periode, -1)
Set fin_Periode = Cellule.Offset(0, -1)
Set Plage = Range(debut_Periode, fin_Periode)
'Calcul de la valeur de la moyenne
moy = WorksheetFunction.Average(Plage)
Cellule.Value = moy
'Mouvement de la cellule cible de la moyenne
Set Cellule = Cellule.Offset(1)
Loop
End Sub

Voilà, j'espère que ce code tient la route et qu'il pourra profiter à d'autres. Bien sûr, les paramètres tels que "periode" et "Cellule" varieront selon la configuration rencontrée ou souhaitée.

Merci encore pour ton intérêt.


Amateurement vôtre...
0
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
8 mars 2005 à 16:10
Et si tu remplacait:


Set debut_Periode = Cellule.Offset(1 - periode, -1)
Set fin_Periode = Cellule.Offset(0, -1)
Set Plage = Range(debut_Periode, fin_Periode)
'Calcul de la valeur de la moyenne
moy = WorksheetFunction.Average(Plage)
Cellule.Value = moy
'Mouvement de la cellule cible de la moyenne
Set Cellule = Cellule.Offset(1)

par:


cellule.FormulaR1C1 = "=AVERAGE(R[" & 1 - periode & "]C[-1]:RC[-1])"



si tu modifie les valeurs les moyennes se mettent a jour
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_nico39 Messages postés 56 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 4 octobre 2006
9 mars 2005 à 09:32
Salut cqui789,
Merci pour cette astuce. Mon code est un peu plus léger.

Je voulais savoir si toi ou des gens du forum connaissiez bien tout ce qui est formulaire. En effet je voudrais bien faire apparaître un formulaire durant l'exécution de ma précédente macro pour demander à l'utilisateur une valeur pour la période (cf plus haut).
Seulement, je ne sais pas comment récupérer les valeurs recueillies dans un tel formulaire (dans une Textbox p.e.).

Merci d'avance pour toute votre aide.


Amateurement vôtre...
0
Rejoignez-nous