Calculer une moyenne par VBA

freeycap Messages postés 87 Date d'inscription   Statut Membre Dernière intervention   -  
freeycap Messages postés 87 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'aimerai programmé avec vba des moyennes apparaissant sur une colonne (disons mon RangeA). Quelques fois, il n'y a aucune valeur sur certaines cellules de la colonne. Sans vba, je peux écrire ceci :
=SI(NBVAL(RangeA)=0;"";MOYENNE(RangeA))
Ca fait ma moyenne sans tenir compte des cellules vides.
Ca peut se traduire comment en vba ?
Merci d'avance
A voir également:

4 réponses

ozone_ Messages postés 1518 Date d'inscription   Statut Membre Dernière intervention   478
 
Salut,

Pourquoi utiliser le VBA alors que les formules classiques suffisent largement ?
1
freeycap Messages postés 87 Date d'inscription   Statut Membre Dernière intervention  
 
en fait c'est parce que le calcul de la moyenne fait déjà partie d'une macro plus complexe... c'est le résultat de ma moyenne qui ne convenait pas.... Le pire c'est que je n'avais pas fait attention, je m'en suis rendu compte devant mon boss dans l'analyse des résultas.... Ca la fout mal un peu quand même.... lol
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

J'espère que ce n'est pas toi qui à mis un -1 à Ozone avec qui je suis entièrement d'accord pourquoi faire simple quand on peut faire compliqué.
sa réponse ne mérite pas cette note négative surtout qu'il a essayé d'aider.
je remets la note à 0
0
freeycap Messages postés 87 Date d'inscription   Statut Membre Dernière intervention  
 
non non c'est pas moi, quand même...
0
ozone_ Messages postés 1518 Date d'inscription   Statut Membre Dernière intervention   478
 
J'avais mal compris :

Si tu veux faire une moyenne en excluant les zéros/cellules vides :

=SOMME(PLAGE)/(NB(PLAGE)-NB.SI(PLAGE;"=0")) 


1f u c4n r34d th1s u r34lly n33d t0 g37 l41d !
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Bonsoir,

Pourquoi as tu écrit cette formule
=SI(NBVAL(RangeA)=0;"";MOYENNE(RangeA))

si c'est pour gérer l'erreur dans le cas de cellule vide depuis Excel 2007 tu peux écrire
=SIERREUR(MOYENNE(A2:A20);"")

pour une moyenne cette formule suffit
=MOYENNE(A2:A20)

en VBA
Application.Average(Range(Range("A2"), Range("A65536").End(xlUp)))
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
freeycap Messages postés 87 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour vos réponses, je vais tester ca de ce pas...
0