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

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…