Moyenne sans valeur 0 ni cellules ides (sans liste)

alain.raphael

XLDnaute Occasionnel
Bonsoir à Tous,

Je vous joins un fichier d'exemple.......... je cherche à ne pas prendre en compte les 0 ni les cellules vides..... seul problème les données sont réparties un peu partout dans le feuillet et donc je ne peux pas écrire "A1:A10" par exemple.
 

Pièces jointes

  • Moyenne sans cellules à 0 ni vides.xlsx
    9.4 KB · Affichages: 9

job75

XLDnaute Barbatruc
Bonsoir alain.raphael, mapomme,

Le fichier en retour avec cette formule matricielle (qui fonctionne sur toute version Excel) :
Code:
=MOYENNE(SI(E6:E13>0;E6:E13))
A+
 

Pièces jointes

  • Moyenne sans cellules à 0 ni vides.xlsx
    15.2 KB · Affichages: 4

mapomme

XLDnaute Barbatruc
Supporter XLD
Re à tous,

Au cas où dans la plage, il y aurait des cellules numériques à ne pas prendre en compte, on peut utiliser une fonction personnalisée. Le code est dans Module1:
VB:
Function moyenne_si(ParamArray cellules())
Dim som, nbr, elem, xcell
  For Each elem In cellules
  For Each xcell In elem
    If xcell <> "" Then If IsNumeric(xcell) Then If xcell > 0 Then nbr = nbr + 1: som = som + xcell
  Next xcell: Next elem
  moyenne_si = ""
  If nbr > 0 Then moyenne_si = som / nbr
End Function

Exemple d'utilisation :
Code:
=moyenne_si(E10:E13;F5;G8;H9)

nota:
mais entre les cellules d'autres chiffres existent mais ne sont pas en prendre en compte....
Je m'en suis douté :p
 

Pièces jointes

  • alain.raphael- Moyenne sans cellules à 0 ni vides- v2a.xlsm
    16.5 KB · Affichages: 9
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @Staple1600
On ne peut pas utiliser =MOYENNE.SI.ENS dans cette affaire?

A partir du moment où (d'un point de vue Excel) les cellules à prendre en compte sont distribuées au hasard (c'est à dire à la volonté de l'utilisateur), j'ai du mal à voir comment définir des conditions. Il me semble qu'il faille passer par une énumération des cellules à prendre en compte. Enfin j'dis ça, j'dis rien, mais j'l'ai dit quand même :p
 

job75

XLDnaute Barbatruc
Re, salut JM,

Perso j'utiliserais plutôt cette fonction VBA, très simple :
VB:
Function MaMoyenne(r As Range)
Dim n&
For Each r In r
    If IsNumeric(r) Then If r > 0 Then n = n + 1: MaMoyenne = MaMoyenne + r
Next
If n Then MaMoyenne = MaMoyenne / n
End Function
Bonne nuit.
 

Pièces jointes

  • MaMoyenne(1).xlsm
    19.8 KB · Affichages: 4

Staple1600

XLDnaute Barbatruc
Bonsoir job75, ma pomme

ma pomme
Moi j'avais dit au préalable : Peut-être une question bête
que tu as coupé au montage ;)
J'avoue que j'ai testé uniquement en lisant les posts du fil
=MOYENNE.SI.ENS(E6:E13;E6:E13;">0")
Et comme cela semblait bon, j'ai posé ma question bête
J'aurai du ouvrir les PJ avant. ;)
 

job75

XLDnaute Barbatruc
Bonjour JHA, le fil, le forum,

MOYENNE.SI et MOYENNE.SI.ENS ne fonctionnent pas sur les versions antérieures à Excel 2007.

C'est la raison pour laquelle au post #3 j'ai précisé "qui fonctionne sur toute version Excel ".

Bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
312 331
Messages
2 087 353
Membres
103 528
dernier inscrit
hplus