VBA function procedure

bonjour mon énoncé est le suivant :

"Write two function procedures named IncMean and IncStd with one array-type argument, such that IncMean(y) and IncStd(y) calculate the sample mean and the sample standard deviation of the array y incrementally respectively."

quelqu'un aurait il une idée de comment calculer la moyenne de la série de 100 valeurs et l'écart type ? et j'ai écris ca :

Function IncMean(y)
Dim dsum As Double
Dim i As Integer
For i = LBound(y) To UBound(y)
dsum = (dsum / 100) + y(i)
Next i
IncMean = dsum
End Function

Function Incstd(y)
Dim dsum As Double
Dim i As Integer
For i = LBound(y) To UBound(y)
dsum = WorksheetFunction.StDev_S(y(i)) + y(i)
Next i
Incstd = dsum
End Function

Bonjour Tonio20000

1er rappel, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum et notamment :

  • Pour plus de lisibilité, utilisez la fonctionnalité </> pour insérer vos codes VBA (et si possible aussi pour vos formules Excel).

La prochaine fois, merci de mettre votre code entre balises, avec le bouton

image

Merci d'y faire attention SVP

bonjour,

calculate the sample mean and the sample standard deviation of the array y incrementally respectively."

cela veut dire, avec un élément, puis avec 2, ... , non ?

PS vous êtes encore débutant, donc la déclaration des variables est encore obligatoire

Sub Toniooooooooooo()
     Dim Arr, Arr0, Arr1, Arr2, i

     Arr0 = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 'avec base 0

     ReDim Arr(5 To 14) 'même array avec base 5
     For i = 0 To UBound(Arr0)
          Arr(LBound(Arr) + i) = Arr0(i)
     Next

     Arr1 = IncMean(Arr)
     Arr2 = IncSTD(Arr)

     MsgBox Join(Arr, vbLf), , "Array"
     MsgBox Join(Arr1, vbLf), , "Sum"
     MsgBox Join(Arr2, vbLf), , "StDev"
End Sub

Function IncMean(y)
     Dim N1, N2, Y1, aOut, i

     N1 = LBound(y)
     N2 = UBound(y)
     ReDim aOut(N1 To N2)     'same size as Y

     For i = 0 To N2 - N1
          Y1 = y
          ReDim Preserve Y1(N1 To N1 + i)
          aOut(N1 + i) = Application.Sum(Y1)
     Next i

     IncMean = aOut
End Function

Function IncSTD(y)
     Dim N1, N2, Y1, aOut, i

     N1 = LBound(y)
     N2 = UBound(y)
     ReDim aOut(N1 To N2)     'same size as Y

     For i = 0 To N2 - N1
          If i = 0 Then
               aOut(N1) = "Erreur" 'avec un élément = no StDev !!!
          Else
               Y1 = y
               ReDim Preserve Y1(N1 To N1 + i)
               aOut(N1 + i) = Application.StDev(Y1)
          End If
     Next i

     IncSTD = aOut
End Function

merci mais je dois me baser sur cette sub principale pour créer mes deux sous fonctions ;

Sub functionDemo5()
Dim vA(1 To 100) As Double
Dim i As Integer
For i = 1 To 100
vA(i) = Rnd() * 10000
Next i
Debug.Print IncMean(vA)
Debug.Print IncSTD(vA)
Debug.Print WorksheetFunction.Average(vA)
Debug.Print WorksheetFunction.StDev(vA)
End Sub
Sub functionDemo5()
     Dim vA(1 To 100) As Double
     Dim i     As Integer
     For i = 1 To 100
          vA(i) = Rnd() * 10000
          If i Mod 10 = 0 Then Debug.Print WorksheetFunction.StDev(vA)
     Next i
Debug.Print "IncMean : " & IncMean(vA)
Debug.Print "IncSTD : " & IncSTD(vA)
Debug.Print "Average : " & WorksheetFunction.Average(vA)
Debug.Print "StDev : " & WorksheetFunction.StDev(vA)
End Sub

Function IncMean(Arr)
     IncMean = WorksheetFunction.Average(Arr)
End Function

Function IncSTD(Arr)
     IncSTD = WorksheetFunction.StDev(Arr)
End Function
Rechercher des sujets similaires à "vba function procedure"