Calcul de moyennes de données stockées dans un tableau

Mathieu64 -  
 Mathieu64 -
Bonjour,

Je souhaite calculer la moyenne pour certaines colonnes d'un tableau dans lequel j'ai stocké des données, sachant que les dimensions du tableau (sample) peuvent varier.
Voilà ce que j'ai tenté :

'Enregistrement des données dans sample
ReDim sample(k, l - 1)
k = -1
For i = 2 To n
If Cells(i, 10).Value < 30 Then
Else
If Cells(i, 10).Value > 50 Then
k = k + 1
For j = 1 To l
sample(k, j - 1) = Cells(i, j)
Next
End If
End If
Next

'Calcul des moyennes
For i = 7 To l
Cells(n + 2, i) = Application.WorksheetFunction.Average(Range(sample(0, i - 1), sample(k, i - 1)))
Next


A priori c'est la ligne de code du calcul de la moyenne qui ne fonctionne pas, comment calculer la moyenne d'une colonne d'un tableau lorsqu'on ne connait pas les dimensions du tableau, quelqu'un peut m'aider ?

Merci d'avance.

2 réponses

  1. Yoda
     
    bonjour

    ReDim sample(k, l - 1)

    Tu connais la taille du tableau, c'est k lignes et l-1 colonnes

    Si tu veux la moyenne de la colonne n°3

    somme=0
    for i = 1 to k
    somme=somme+sample(i,3)
    next
    moyenne = somme / k


    A+
    0
    1. Mathieu64
       
      Merci pour ta réponse Yoda, je voulais éviter cette méthode car je dois aussi faire la même chose pour les écart-types et là ça se complique, mais ça marche !
      0
      1. Yoda > Mathieu64
         
        La fonction average a besoin qu'on lui passe une liste de nombres, par exemple

        Application.WorksheetFunction.Average(sample(1), sample(2),sample(3))

        Dans ton cas, ça ne va pas aller. Mais tu peux mettre ton tableau sample() sur une feuille comme ça:

        for i = 1 to k
        Sheets("feuil1").Range("a" & i).Value =sample(i)
        next
        moyenne = Application.WorksheetFunction.Average(range("a1:a" & k))

        et faire de même pour les écarts types
        0
    2. Mathieu64
       
      Merci pour l'explication, il n'y donc aucun moyen direct pour dire à la fonction average de faire le calcul de sample(1) à sample(k) ?
      0
      1. Yoda > Mathieu64
         
        Bonjour,

        A mon avis non. (C'est ce que j'ai compris en regardant dans l'aide.)
        Mais calculer une moyenne, c'est pas compliqué.
        Et calculer l’écart type, si on connait la formule, c'est un peu plus compliqué, mais réalisable.

        https://www.lesbonsprofs.com/notion/mathematiques-1e/statistiques-3/variance-et-ecart-type-la-fiche-de-revision

        A+
        0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    tu peux lui passer seulement la 3ème colonne de sample :
        Dim sample, moyenne As Single
        sample = [A2:E5]
        ' moyenne 3ème colonne
        moyenne = Application.Average(Application.Index(sample, , 3))
    

    eric

    0
    1. Mathieu64
       
      Merci beaucoup c'est la formule que je cherchais !
      0