XL 2010 Macro qui ne fonctionne pas, help !

Taha Hessane

XLDnaute Nouveau
Bonjour,
je dois calculer des moments pour un groupe valeurs disposés sur 4 feuilles excel.
j'ai créer cette macro pour ne pas avoir à faire 4 macro identiques, le problème est que pour la première feuille ça marche, mais pour les suivantes le résultat est faux.
je n'arrive pas à trouver le problème dans ma macro, est ce que quelqu'un aurait une idée,

merci d'avance,


Sub mom()
Dim i As Integer
Dim v As Byte
Dim moy, som, som1, som2, som3, stde, sk, ku As Double
'je déclare les variables que je vais utiliser pour calculer les moments
som = 0
som1 = 0
som2 = 0
som3 = 0
'sélection de la feuille que je souhaite utilisé
'je calcule d'abord la moyenne

For v = 1 To 4
sheets(v).select

For i = 2 To Range("B" & Rows.Count).End(xlUp).Row

som = som + Cells(i, 2).Value

Next i

moy = som / (Range("B" & Rows.Count).End(xlUp).Row - 1)
MsgBox " moyenne :" & moy
'calcule de l'écart-type
For i = 2 To Range("B" & Rows.Count).End(xlUp).Row

som1 = som1 + (Cells(i, 2).Value - moy) ^ 2

Next i
stde = (som1 / (Range("B" & Rows.Count).End(xlUp).Row - 1)) ^ (1 / 2)
MsgBox " écart-type :" & stde
'calcule de skewness et kurtosis
For i = 2 To Range("B" & Rows.Count).End(xlUp).Row

som2 = som2 + (Cells(i, 2).Value - moy) ^ 3
som3 = som3 + (Cells(i, 3).Value - moy) ^ 4

Next i
sk = som2 / ((Range("B" & Rows.Count).End(xlUp).Row - 1) * stde ^ 3)
ku = som3 / ((Range("B" & Rows.Count).End(xlUp).Row - 1) * stde ^ 4)
MsgBox " skewness :" & sk
MsgBox " kurtosis :" & ku


Next v
End Sub
 

pierrejean

XLDnaute Barbatruc
Bonjour Taha

A tester :
Sub mom()
Dim i As Integer
Dim v As Byte
Dim moy, som, som1, som2, som3, stde, sk, ku As Double
'je déclare les variables que je vais utiliser pour calculer les moments

'sélection de la feuille que je souhaite utilisé
'je calcule d'abord la moyenne

For v = 1 To 4
sheets(v).select

som = 0
som1 = 0
som2 = 0
som3 = 0


For i = 2 To Range("B" & Rows.Count).End(xlUp).Row

som = som + Cells(i, 2).Value

Next i

moy = som / (Range("B" & Rows.Count).End(xlUp).Row - 1)
MsgBox " moyenne :" & moy
'calcule de l'écart-type
For i = 2 To Range("B" & Rows.Count).End(xlUp).Row

som1 = som1 + (Cells(i, 2).Value - moy) ^ 2

Next i
stde = (som1 / (Range("B" & Rows.Count).End(xlUp).Row - 1)) ^ (1 / 2)
MsgBox " écart-type :" & stde
'calcule de skewness et kurtosis
For i = 2 To Range("B" & Rows.Count).End(xlUp).Row

som2 = som2 + (Cells(i, 2).Value - moy) ^ 3
som3 = som3 + (Cells(i, 3).Value - moy) ^ 4

Next i
sk = som2 / ((Range("B" & Rows.Count).End(xlUp).Row - 1) * stde ^ 3)
ku = som3 / ((Range("B" & Rows.Count).End(xlUp).Row - 1) * stde ^ 4)
MsgBox " skewness :" & sk
MsgBox " kurtosis :" & ku


Next v
End Sub

NB: un fichier exemple serait souhaitable pour garantir les resultats
 

Discussions similaires

Réponses
6
Affichages
234

Statistiques des forums

Discussions
312 169
Messages
2 085 928
Membres
103 045
dernier inscrit
AP78