Code VBA- calcul moyenne mobile-

  • Initiateur de la discussion Initiateur de la discussion samoterell
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

samoterell

Guest
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!
 
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+
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
912
Réponses
15
Affichages
786
Réponses
2
Affichages
528
Réponses
8
Affichages
782
Retour