moyenne mobile centrée en vba
Bonsoir
J’essaye de réaliser une petite macro pour calculer la moyenne mobile en prenant la moyenne des 4 valeurs décaler d’une ligne au début et à la fin de la colonne E
E3 =MOYENNE(B2:B5)
E4 =MOYENNE(B3:B6)
E5 = =MOYENNE(B4:B7)
…
Et la moyenne mobile centrée à partir des moyennes mobiles décaler de deux lignes au début et à la fin de la colonne F
F4 = =MOYENNE(E3:E4)
F5 = =MOYENNE(E4:E5)
…
J’essaye de transcrire ses formules en VBA mais ça ne marche pas, j’obtiens le même résultat . j’ai utilisé une boucle et je n’arrive pas é décaler d’une ligne de chaque coté, est-ce difficile à faire !
Merci pour votre aide
Bien cordialement
herbine
moyenne mobile centree vba
le code est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Sub calCoeff()
'déclaration des variables
Dim i As Integer, n As Integer
Dim DerLig As Long
'1ere boucle de traitement
With Worksheets("Moyenne_Mobile")
DerLig = .Range("A" & .Rows.Count).End(xlUp).Row
For i = 2 To DerLig
.Cells(i, 3).Value = (Range("B2").Value + Range("B3").Value + Range("B4").Value + Range("B5").Value) / 4
.Cells(i, 4).Value = (0.5 * Range("B2").Value + Range("B3").Value + Range("B4").Value + Range("B5").Value + 0.5 * Range("B6").Value) / 4
n = n + 1
Next i
' calcul des moyennes x et y
mx = Sx / n
my = Sy / n
End With
End Sub |
Décaler d'une ligne et de deux
merci pour le code hervé ça marche, mais je souhaiterai afficher les résultats décaler d'une ligne la colonne c en haut et en bas et deux deux lignes la colonne den haut et en bas et obtenir les résultats suivants :
merci pour votre aide
xi yi Moyenne mobile Moyenne mobile centrée
1 524
2 378 473
3 354 475 474
4 636 485 480
5 532 491 488
6 418 505 498
7 378 511 508
8 692 513 512
9 556 517 515
10 426 523 520
11 394 549 536
12 716 563 556
13 660 573 568
14 482 575,00 574,00
15 434 546,67
16 724
bien cordialement
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| Sub calCoeff()
Dim i As Integer
Dim DerLig As Long
With Worksheets("Moyenne_Mobile")
DerLig = .Range("A" & .Rows.Count).End(xlUp).Row
For i = 2 To DerLig
.Cells(i, 3).Value = Application.WorksheetFunction.Average(.Cells(i, 2).Value, _
.Cells(i + 1, 2).Value, _
.Cells(i + 2, 2).Value, _
.Cells(i + 3, 2).Value)
.Cells(i, 4).Value = Application.WorksheetFunction.Average(0.5 * .Cells(i, 2).Value, _
.Cells(i + 1, 2).Value, _
.Cells(i + 2, 2).Value + _
.Cells(i + 3, 2).Value, _
0.5 * .Cells(i + 4, 2).Value)
Next i
End With
End Sub Hervé.
00 |
double clic sur Calculer en VBA
bonsoir
j'ai un problème avec ma macro, pour obtenir les résultats justes je dois cliquer deux fois sur mon bouton calculer pour obtenir les bons résultats sur la colonne D.
voila mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Code :
Sub calCoeff()
Dim i As Integer
Dim DerLig As Long
With Worksheets("Moyenne_Mobile")
DerLig = .Range("A" & .Rows.Count).End(xlUp).Row
For i = 2 To DerLig - 2
.Cells(i + 1, 3).Value = Application.WorksheetFunction.Average(.Range(.Cells(i, 2), .Cells(i + 3, 2)))
.Cells(i + 2, 4).Value = Application.WorksheetFunction.Average(.Range(.Cells(i + 1, 3), .Cells(i + 2, 3)))
Next i
.Range(.Cells(DerLig - 1, 4), .Cells(DerLig, 4)).ClearContents
End With
End Sub |
merci pour votre aide
cordialement
xi yi Moyenne mobile Moyenne mobile centrée
1 6000
2 4500 4250,00
3 1500 4625,00 4437,50
4 5000 4700,00 4662,50
5 7500 4825,00 4762,50
6 4800 4950,00 4887,50
7 2000 5325,00 5137,50
8 5500 5675,00 5500,00
9 9000 5650,00 5662,50
10 6200 5475,00 5562,50
11 1900 5425,00 5450,00
12 4800 5275,00 5350,00
13 8800 5225,00 5250,00
14 5600 5100,00 5162,50
15 1700 3866,67
16 4300