Code VBA- calcul moyenne mobile-

samoterell

XLDnaute Nouveau
Bonjour,
Depuis tout à l'heure je galère alors je me tourne vers vous.
Je souhaite calculer des moyennes mobiles à 9 périodes avec le code VBA. ( je précise que que je débutant )
mes données sont disposées comme suit: feuil1 : B1=titre; De B2 à B1300 il y a les prix. la feuil2 est renommée resultats.
Voici mon code:

Option Explicit
Option Base 1
Sub moymob9()
Dim i, n As Integer
Dim tableau() As Double
Dim plage As Variant
Worksheets("feuil1" ).Select
Set plage = Range(Cells(2, 2), Cells(2, 2).End(xlDown))
'compte le nombre de cellules de la plage
n = WorksheetFunction.Count(plage)
ReDim tableau(n, 1)
For i = 10 To n
tableau(i, 1) = WorksheetFunction.Average(Cells(i - 8, 2), Cells(i, 2))
Next i
Worksheets("resultats" ).Activate
Columns(1).Clear
For i = 1 To n
Cells(i, 1).Value = tableau(i, 1)
Next i
End Sub

Ce code me donne de faux resultats. J'en conclue que c'est mon code qui est faux. Est-ce que vous pourriez me dire à quel niveau ca coince svp?
Mille Merci!
 
G

Guest

Guest
Re : Code VBA- calcul moyenne mobile-

bonsoir samoterel,

Peut-être cela vient-il de:
Code:
'compte le nombre de cellules de la plage 
n = WorksheetFunction.Count(plage)
Count ne compte pas le nombre de cellules de la plage mais le nombre de cellule contenant une valeur numérique. Ce qui est très différent.

Pour avoir le nombre de cellule de la plage:
Code:
n=Plage.Cells.Count

en espérant t'avoir aidé.

A+
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re : Code VBA- calcul moyenne mobile-

Bonsoir, samoterell
Hasco :)

Peut-être une autre façon de calculer...
Si tu veux une moyenne de 10, toutes les 10 cellules...
regarde l'idée, et reviens au cas...

Code:
Option Explicit
Option Base 1
Sub moymob9()
Dim i As Integer, n As Integer, a As Integer
Dim tableau() As Double
Dim plage As Variant
Worksheets("feuil1").Select
Set plage = Range(Cells(2, 2), Cells(2, 2).End(xlDown))
'compte le nombre de cellules de la plage
n = WorksheetFunction.Count(plage)
ReDim tableau(n, 1)
For i = 10 To n Step 9
tableau(i, 1) = WorksheetFunction.Average(Cells(i - 8, 2), Cells(i, 2))
Next i
Worksheets("resultats").Activate
Columns(1).Clear
a = 1
For i = 1 To n Step 9
Cells(a, 1).Value = tableau(i, 1)
a = a + 1
Next i
End Sub
 

Discussions similaires

Réponses
7
Affichages
599

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
315 194
Messages
2 117 157
Membres
113 023
dernier inscrit
bilal h