[Excel] : Moyenne / HELP :)

Résolu/Fermé
Fabbe - 28 déc. 2011 à 11:38
 Fabbe - 2 janv. 2012 à 08:19
Bonjour,

Je vous écris suite à une problématique que j'ai avec une formule Excel.
La voici :

"" MOYENNE.SI('Feuille1'!Q4:Q1500;"<=70,00") ""

Mon but est de calculer une moyenne (de nombres) dans une liste (de nombres) tout en évitant tout nombre au-dessus de 70,00...
Comme vous le voyez, la formule est dans une autre feuille que la liste de nombres.

J'ai un message d'erreur mentionnant qu'il ne reconnait pas la partie Q4:Q1500
Quelqu'un saurait-il pourquoi ?

Si pas, est-ce que qqn pourrait me donner éventuellement une autre formule me permettant de sortir la moyenne d'une liste de nombres en évitant tout nombre au-dessus de 70 (par exemple) ?

Merci d'avance et bonnes fêtes !

Fabbe
A voir également:

9 réponses

Bruce Willix Messages postés 11968 Date d'inscription mardi 24 mai 2011 Statut Contributeur Dernière intervention 12 juin 2018 2 587
28 déc. 2011 à 11:40
Tu entres bien cette formule comme une formule vectorielle ?
0
(attention, le boulet arrive...)

Qu'est-ce que tu veux dire par "formule vectorielle" ?

Merci :)
0
Bon, je viens de remarquer que la formule " MOYENNE.SI " ne s'utilise que pour Excel 2010... Je suis sur 2003 (tout va bien...:-D)

Qqn connait une formule équivalente pour 2003 ?

Merci :)
0
yofa Messages postés 1093 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 1 mars 2013 207
Modifié par yofa le 28/12/2011 à 14:19
Je suis vraiment mauvais, désolé pour la reponse que je vais te donner...

Si tu fais un si la valeur est inférieur a 70 alors valeur sinon rien
donc =if(cellule<=70;cellule;" ") et que tu déploies la cellule pour tout ton tableau
Et ensuite tu fait un =average(nouveautableau) alors tu auras ta reponse. mais ca nécessite d'ajouter une colonne... Jte recontact si je trouve mieux... xD

N'hesitez pas mettre votre sujet sur résolu, si tel est le cas! ^^
0
Cela va peut-être être plus facile avec l'exemple concret :

A
1. 41,03
2. 36,96
3. 37,37
4. 36,55
5. 46,67
6. 109,72
7. 109,72
8. 109,72
9. 109,72
10. 109,72

Voilà, il s'agit en fait d'âge (numérique)
Le but est de faire une moyenne de cette liste (ils sont tous déjà sous formules, c'est pourquoi à partir de A6 il est mentionné "109,72") en excluant les nombres supérieurs à 70,00 (dans mon cas, personne n'aura plus de 70 ans)

La formule MOYENNE.SI m'aurait bien aidé, mais j'ai pas 2010, que 2003...

Si possible, m'aider avec les formules en français svp :)
0
yofa Messages postés 1093 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 1 mars 2013 207
Modifié par yofa le 28/12/2011 à 14:39
Oops mon excel est en angalis...

Alors je te disais de mettre a droite de ta colonne avec tes ages la formule
= SI ( colonneages<=70; colonneages; " " )
Ce qui va te donner :

1. 41,03 41,03
2. 36,96 36,96
3. 37,37 37,37
4. 36,55 36,55
5. 46,67 46,67
6. 109,72
7. 109,72
8. 109,72
9. 109,72
10. 109,72

Ensuite tu peux faire ta moyenne sur cette colonne...

=moyenne(nouveautableau)

Mais c'est embettant car tu dois ajouter une colonne...
Avec une macro je pense que cela devrait être plus facile...
Mais je connais pas...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ce serait une solution oui...
Je la retiens :)

Mais dans le sens où je suis en train de créer un template pour mon employeur, je dois le faire au mieux possible.
J'utiliserai ta solution si jamais je n'ai pas d'autre(s) solution(s)


D'autres bons samaritains qui me permettraient de faire cela sans créer un autre tableau ?

Un grand merci et merci à toi yofa :)
0
yofa Messages postés 1093 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 1 mars 2013 207
Modifié par yofa le 28/12/2011 à 16:13
Alors comme je n'ai rien à faire, je me suis donc amuser à essayer de faire une macro en excel...

Elle est pas super et je dois encore l'améliorer mais elle fait ce qu'on lui demande...

   
Sub Moyenne ()  

Dim c as Range  
Dim Total, Moyenne As Double  
Dim Compteur As Integer  
Dim Maxi As double  

Maxi = 70   
Compteur =0  
Total = 0  
Moyenne = 0  

Application.Goto Reference:="Selection"  

For each c In Selection  
  If c.Value <= Maxi Then Total = total + c.Value  
  If c.Value <= Maxi Then Compteur = Compteur + 1 

Moyenne = Total / compteur  
Range("E7").Select  
ActiveCell.FormulaR1C1 = Moyenne  

End sub  


N'hesitez pas mettre votre sujet sur résolu, si tel est le cas! ^^
0
yofa Messages postés 1093 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 1 mars 2013 207
28 déc. 2011 à 15:38
Sachant qu'il faut nommer ton tableau de valeur Selection
Et que E7 de la fonction range ( ) doit etre modifié par la cellule ou se trouve le resultat...
0
yofa Messages postés 1093 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 1 mars 2013 207
Modifié par yofa le 28/12/2011 à 15:50
Il faut ajouter un événement...
Pour moi le mieux serait de le mettre sur la seconde feuille, l'événement serait :

Private Sub Worksheet_Change(ByVal Target As Range)

Ce qui permettrait donc si une valeur est modifié dans ta seconde feuille de recalculer la moyenne...
0
yofa Messages postés 1093 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 1 mars 2013 207
Modifié par yofa le 28/12/2011 à 16:12
Ca marche parfaitement pour moi xD
Il suffit d'ouvrir le vb soit alt + f11
Chercher dans l'arborescence à gauche ta seconde feuille excel.


Dim c as Range      
Dim Total, Moyenne As Double      
Dim Compteur As Integer      
Dim Maxi As double      

Private Sub Worksheet_Change(ByVal Target As Range)      

Maxi = 70       
Compteur =0      
Total = 0      
Moyenne = 0      

'   Selection est le tableau de valeurs      
Application.Goto Reference:="Selection"      

For each c In Selection      
  If c.Value <= Maxi Then Total = total + c.Value      
  If c.Value <= Maxi Then Compteur = Compteur + 1     
Next c      

Moyenne = Total / compteur      
'   Choisir la cellule à modifier ( Changer le E7 )     
Range("E7").Select      
ActiveCell.FormulaR1C1 = Moyenne      

End sub 


N'hesitez pas mettre votre sujet sur résolu, si tel est le cas! ^^
0
Bruce Willix Messages postés 11968 Date d'inscription mardi 24 mai 2011 Statut Contributeur Dernière intervention 12 juin 2018 2 587
29 déc. 2011 à 09:54
Désolé d'intervenir si tard, ça vous aurait évité de vous lancer dans la création d'une macro, choix toujours ô combien hasardeux - et très ennuyeux dans un cadre professionnel, car le nombre de personnes capables de comprendre et éditer une macro est tout de même réduit.

Pour faire simple il suffit:
1. d'additionner les cellules pour lesquelles l'âge est inférieur à 70
2. de diviser ce nombre par le nombre d'occurences pour lesquels ce critère est rencontré.

Et donc, naturellement la formule est:
=SUMIF(A1:A10;"<=70";A1:A10)/COUNTIF(A1:A10;"<=70")


Et en français:
=SOMME.SI(A1:A10;"<=70";A1:A10)/NB.SI(A1:A10;"<=70")


0
yofa Messages postés 1093 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 1 mars 2013 207
29 déc. 2011 à 11:45
j'etais parti la dessus mais je savais pas qu'il existé un sumif... juste un countif...
C'est vrai que c'est plus facile...
0
yofa Messages postés 1093 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 1 mars 2013 207
29 déc. 2011 à 11:46
Peu importe j'avais jamais fait de macro excel pour ma part... Au moins c'est fait...
0
Bruce Willix Messages postés 11968 Date d'inscription mardi 24 mai 2011 Statut Contributeur Dernière intervention 12 juin 2018 2 587
29 déc. 2011 à 11:50
Bah, tant que ça marche :-) Perso, je supporte pas les macros et je fais tout ce que je peux pour éviter de devoir en mettre:

1. c'est ennuyeux pour la sécurité (il faut les activer ou stocker les fichiers dans des zones appropriées)
2. c'est très moyennement stable au cours des différentes versions d'excel
3. utilisées en réseau, ça s'update mal
4. c'est un super moyen de se faire pirater :-)

Mais - je me répète - simple question d'affinité/de goût.
0
Magnifique Bruce! Cela fonctionne parfaitement :)

Un grand merci à toi et aux autres pour vos réponses !

A bientôt
0