Bonjour,
J'ai rédigé une petite fonction Excel pour calculer une statistique à partir d'un échantillon, d'une plage de données dans ma feuille.
Les calculs sont simples, mais nombreux et fastidieux.
J'ai donc fait ce module ci-dessous.
En résumé, je definie le type des variables, je les initialise (à zéro pour la plupart) puis les calculs commencent.
Cette fonction marche bien, MAIS ! si et seulement si je lui donne une plage de moins de 210 valeurs seulement ; au delà, Excel m'assène sa "#VALUE!".
Est-ce que ce sont les premières étapes itératives qui le limitent ?
Je vois bien qu'elles sont laborieuses, mais je n'ai pas trouvé plus simple.
Merci d'avance,
************************************************************************
Function STATAGOSTINO(rPlage As Range)
Dim n As Long
Dim A As Double
Dim B As Double
Dim C As Double
Dim D As Double
Dim E As Double
Dim F As Double
Dim G As Double
Dim H As Double
Dim J As Double
Dim K As Double
Dim L As Double
Dim Z As Double
Dim Y As Double
Dim O As Double
Dim T As Double
Dim p As Double
Dim q As Double
Dim r As Double
Dim X As Double
Dim s As Double
Dim stat As Double
Dim i As Long
n = rPlage.Cells.Count
A = 0
B = 0
C = 0
D = 0
E = 0
F = 0
G = 0
H = 0
J = 0
K = 0
L = 0
Z = 0
Y = 0
O = 0
T = 0
p = 0
q = 0
r = 0
X = 0
s = 0
stat = 0
For i = 1 To n
X = X + (rPlage.Cells(i) / n)
Next i
For i = 1 To n
s = s + (rPlage.Cells(i) - X) ^ 2
Next i
s = s / (n - 1)
s = s ^ (1 / 2)
For i = 1 To n
p = p + (((rPlage.Cells(i) - X) ^ 3) / n)
Next i
For i = 1 To n
q = q + (((rPlage.Cells(i) - X) ^ 2) / n)
Next i
For i = 1 To n
r = r + ((((rPlage.Cells(i) - X) / s) ^ 4))
Next i
O = p / (q ^ (3 / 2))
A = O * (((n + 1) * (n + 3)) / (6 * (n - 2))) ^ (1 / 2)
B = (3 * (n ^ 2 + 27 * n - 70) * (n + 1) * (n + 3)) / ((n - 2) * (n + 5) * (n + 7) * (n + 9))
C = (2 * (B - 1)) ^ (1 / 2) - 1
D = C ^ (1 / 2)
E = 1 / ((Log(D)) ^ (1 / 2))
F = A / (2 / (C - 1)) ^ (1 / 2)
Z = E * Log((F + (F ^ 2 + 1) ^ (1 / 2)))
T = r * (n * (n + 1)) / ((n - 1) * (n - 2) * (n - 3)) - (3 * (n - 1) ^ 2) / ((n - 2) * (n - 3))
G = (24 * n * (n - 2) * (n - 3)) / (((n + 1) ^ 2) * (n + 3) * (n + 5))
H = (T * (n - 2) * (n - 3)) / ((n + 1) * (n - 1) * (G ^ (1 / 2)))
J = ((6 * (n ^ 2 - 5 * n + 2)) / ((n + 7) * (n + 9))) * (((6 * (n + 3) * (n + 5)) / (n * (n - 2) * (n - 3))) ^ (1 / 2))
K = 6 + (8 / J) * ((2 / J) + ((1 + (4 / (J ^ 2))) ^ (1 / 2)))
L = (1 - (2 / K)) / (1 + H * ((2 / (K - 4)) ^ (1 / 2)))
Y = ((1 - (2 / (9 * K)) - (L ^ (1 / 3))) / ((2 / (9 * K)) ^ (1 / 2)))
stat = (Z ^ 2) + (Y ^ 2)
STATAGOSTINO = stat
End Function
***********************************************************************