Fausse moyenne

  • Initiateur de la discussion Patmo
  • Date de début
P

Patmo

Guest
Bonjour à tous les forumophiles qui sont sur cet excellent site.

Je suis confronté à un petit problème:
j'ai une macro qui fait la moyenne de 8 cellules. Ces cellules sont choisies par les variables cha1, cha2, etc... Il peut arriver qu'une ou plusieurs de ces variables valent 0, c'est-à-dire qu'elles ne doivent pas rentrer dans la moyenne. On a alors une ou des cellules prises dans la moyenne contenant du texte ou rien. Le problème, c'est qu'en faisant la moyenne, Excel va les considerer comme valant 0 et ma moyenne sera fausse

c1 = Cells(11 + cha1, 4).Value
c2 = Cells(11 + cha2, 4).Value
c3 = Cells(11 + cha3, 4).Value
c4 = Cells(11 + cha4, 4).Value
c5 = Cells(11 + cha5, 4).Value
c6 = Cells(11 + cha6, 4).Value
c7 = Cells(11 + cha7, 4).Value
c8 = Cells(11 + cha8, 4).Value
resultatmoyenne = Application.Average(c1, c2, c3, c4, c5, c6, c7, c8)
Range("E23").Value = resultatmoyenne

Quelqu'un aurait-il une idée comment arranger ça?
Merci d'avance
Patmo
 
M

Mytå

Guest
Bonsoir Patmo et le forum

Une variante de ta macro

Sub moyenne()
Dim c(8) As Variant
c(1) = Cells(12, 4).Value
c(2) = Cells(13, 4).Value
c(3) = Cells(13, 4).Value
c(4) = Cells(14, 4).Value
c(5) = Cells(15, 4).Value
c(6) = Cells(16, 4).Value
c(7) = Cells(17, 4).Value
c(8) = Cells(18, 4).Value
For i = 1 To 8
If IsNumeric(c(i)) And Not IsEmpty(c(i)) Then
total = total + c(i)
nbre = nbre + 1
End If
Next i
Range("E23").Value = total / nbre
End Sub

A suivre
smiley_417.gif
 
P

Patmo

Guest
Salut Mytå,

Merci beaucoup pour ton code de remplacement. C'est parfait, seulement il y a encore un tout petit problème:
sur les mêmes cellules, je dois aussi appliquer le calcul de l'écart-type(stdev).
c1 = Cells(11 + cha1, 4).Value
c2 = Cells(11 + cha2, 4).Value
c3 = Cells(11 + cha3, 4).Value
c4 = Cells(11 + cha4, 4).Value
c5 = Cells(11 + cha5, 4).Value
c6 = Cells(11 + cha6, 4).Value
c7 = Cells(11 + cha7, 4).Value
c8 = Cells(11 + cha8, 4).Value
resultatStDev = Application.StDev(c1, c2, c3, c4, c5, c6, c7, c8)
Range("E25").Value = StDev
Si t'as une petite idée?

Déjà merci pour tout.

Patmo
 

Discussions similaires

Réponses
2
Affichages
1 K
Réponses
7
Affichages
860

Membres actuellement en ligne

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 184
dernier inscrit
amiko