Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…