[Excel] : Moyenne / HELP :)

Résolu
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

9 réponses

  1. Magnifique Bruce! Cela fonctionne parfaitement :)

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

    A bientôt
    0
    1. Contributeur
      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
      1. 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
      2. Peu importe j'avais jamais fait de macro excel pour ma part... Au moins c'est fait...
        0
      3. Contributeur
        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
    2. 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
      1. 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
        1. 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
        2. 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
      2. 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
        1. 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
          1. 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
        2. 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
          1. 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
            1. Contributeur
              Tu entres bien cette formule comme une formule vectorielle ?
              0
              1. (attention, le boulet arrive...)

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

                Merci :)
                0