VBA/Excel : moyenne mobile [Résolu]

cs_nico39 56 Messages postés vendredi 4 mars 2005Date d'inscription 4 octobre 2006 Dernière intervention - 4 mars 2005 à 16:29 - Dernière réponse : cqui789 261 Messages postés jeudi 13 janvier 2005Date d'inscription 18 mai 2009 Dernière intervention
- 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...
Afficher la suite 

5 réponses

Meilleure réponse
cqui789 261 Messages postés jeudi 13 janvier 2005Date d'inscription 18 mai 2009 Dernière intervention - 9 mars 2005 à 21:07
3
Merci
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.

Merci cqui789 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

cqui789 261 Messages postés jeudi 13 janvier 2005Date d'inscription 18 mai 2009 Dernière intervention - 5 mars 2005 à 15:44
0
Merci
Quelle sont les equations mathematiques necessaires pour faire ce que tu veux?
cs_nico39 56 Messages postés vendredi 4 mars 2005Date d'inscription 4 octobre 2006 Dernière intervention - 8 mars 2005 à 12:38
0
Merci
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...
cqui789 261 Messages postés jeudi 13 janvier 2005Date d'inscription 18 mai 2009 Dernière intervention - 8 mars 2005 à 16:10
0
Merci
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
cs_nico39 56 Messages postés vendredi 4 mars 2005Date d'inscription 4 octobre 2006 Dernière intervention - 9 mars 2005 à 09:32
0
Merci
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...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.