Calculer la moyenne de certaines cellules sur plusieurs feuilles
Résolu
Enaxor18
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
Boisgontierjacques Messages postés 175 Date d'inscription Statut Membre Dernière intervention -
Boisgontierjacques Messages postés 175 Date d'inscription Statut Membre Dernière intervention -
Hello tout le monde !
Je vous pose mon problème :
Je souhaite calculer la moyenne de plusieurs cellules sur différentes feuilles en prenant en compte un critère textuel en plus. Par exemple :
Feuille Salle 1, A2 : Toto, G2 : 3
Feuille Salle 1, A3 : Titi, G3 : 6
Feuille Salle 1, A10 : Toto, G10 : 8
Feuille Salle 2, A2 : Toto, G2 : 5
Feuille Salle 2, A12 : Titi, G3 : 4
Feuille Salle 2, A23 : Toto, G10 : 13
Je ne veux connaître que la moyenne de Toto (3+8+5+13)/4=7.25
L'ordre des colonnes ne change pas, je cherche toujours les informations en colonne A et G. Mais la longueur de la plage peut varier d'une feuille à l'autre.
Je m'en sors à peu près en ce qui concerne les formules, mais en macro je n'y connais rien, et ce fichier est à destination d'une personne qui ne connait pas les macros non plus.
Merci par avance pour votre aide, vous êtes géniaux !! ;D
Je vous pose mon problème :
Je souhaite calculer la moyenne de plusieurs cellules sur différentes feuilles en prenant en compte un critère textuel en plus. Par exemple :
Feuille Salle 1, A2 : Toto, G2 : 3
Feuille Salle 1, A3 : Titi, G3 : 6
Feuille Salle 1, A10 : Toto, G10 : 8
Feuille Salle 2, A2 : Toto, G2 : 5
Feuille Salle 2, A12 : Titi, G3 : 4
Feuille Salle 2, A23 : Toto, G10 : 13
Je ne veux connaître que la moyenne de Toto (3+8+5+13)/4=7.25
L'ordre des colonnes ne change pas, je cherche toujours les informations en colonne A et G. Mais la longueur de la plage peut varier d'une feuille à l'autre.
Je m'en sors à peu près en ce qui concerne les formules, mais en macro je n'y connais rien, et ce fichier est à destination d'une personne qui ne connait pas les macros non plus.
Merci par avance pour votre aide, vous êtes géniaux !! ;D
A voir également:
- Moyenne.si plusieurs plages
- Comment calculer la moyenne sur excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Comment faire un livret avec des feuilles a4 - Guide
- Bruler des feuilles de laurier - Guide
- Regrouper plusieurs feuilles excel en une seule - Guide
5 réponses
Re
Formule plus courte non ou alors il faut passer par une macro en VBA et une fonction personnalisée; est ce que tu souhaites ?
En ce cas :
- mettre la feuille récap en dernier
- Copier coller la macro suivante dans un module (ALT +F11 pour ouvrir Editeur VBA puis Insertion et Module coller la macro dans la page
-Fermer Editeur
La fonction s'utilise comme toute fonction Excel à partir de son nom (est dans la liste des fonctions)
Par exemple dans la feuille Recap en A2 le nom Toto, en B2 mettre la formule
=moyfeuille(A2)
pour avoir le résultat
Cdlmnt
Via
"L'imagination est plus importante que le savoir." A. Einstein
Formule plus courte non ou alors il faut passer par une macro en VBA et une fonction personnalisée; est ce que tu souhaites ?
En ce cas :
- mettre la feuille récap en dernier
- Copier coller la macro suivante dans un module (ALT +F11 pour ouvrir Editeur VBA puis Insertion et Module coller la macro dans la page
-Fermer Editeur
Function moyfeuille(nom As Range) Boucle sur les feuilles jusqu'à l'avant dernière For n = 1 To Sheets.Count - 1 ' SOMME SI des notes en col G si nom en A a = Application.WorksheetFunction.SumIfs(Sheets(n).Range("G:G"), Sheets(n).Range("A:A"), nom) ' NB SI du nom b = Application.WorksheetFunction.CountIf(Sheets(n).Range("A:A"), nom) ' incrementation Total Total = Total + a 'Incrémentation nbre notes nbnotes = nbnotes + b Next ' Valeur calculée à retourner moyfeuille = Total / nbnotes End Function
La fonction s'utilise comme toute fonction Excel à partir de son nom (est dans la liste des fonctions)
Par exemple dans la feuille Recap en A2 le nom Toto, en B2 mettre la formule
=moyfeuille(A2)
pour avoir le résultat
Cdlmnt
Via
"L'imagination est plus importante que le savoir." A. Einstein
Bonjour
Par formule :
=(SOMME.SI('Salle 1'!A:A;"Toto";'Salle 1'!G:G)+SOMME.SI('Salle 2'!A:A;"Toto";'Salle 2'!G:G))/(NB.SI('Salle 1'!A:A;"Toto")+NB.SI('Salle 2'!A:A;"Toto"))
Cdlmnt
Via
Par formule :
=(SOMME.SI('Salle 1'!A:A;"Toto";'Salle 1'!G:G)+SOMME.SI('Salle 2'!A:A;"Toto";'Salle 2'!G:G))/(NB.SI('Salle 1'!A:A;"Toto")+NB.SI('Salle 2'!A:A;"Toto"))
Cdlmnt
Via
Bonjour à vous deux,
Merci pour vos solutions, en effet ça marche très bien et cela résout ma problématique !
Cependant, j'ai 8 feuilles, donc la formule est extrêmement longue et sera amenée à bouger jusqu'à normalement 12 feuilles.
Dans l'idéal, auriez-vous une formule plus courte ?
Si ce n'est pas le cas merci beaucoup quand même, c'est déjà super !!!!
Enaxor18
Merci pour vos solutions, en effet ça marche très bien et cela résout ma problématique !
Cependant, j'ai 8 feuilles, donc la formule est extrêmement longue et sera amenée à bouger jusqu'à normalement 12 feuilles.
Dans l'idéal, auriez-vous une formule plus courte ?
Si ce n'est pas le cas merci beaucoup quand même, c'est déjà super !!!!
Enaxor18
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Super cool !
J'ai tout intégré, cependant quand j'active ma formule =moyfeuille(a2), l'appli pour les macros s'ouvre avec le message "erreur de compilation : erreur de syntaxe",
et me surligne la phrase "Boucle sur les feuilles jusqu'à l'avant dernière" en bleu et "Function moyfeuille(nom As Range)" en jaune fluo.
Pour ceux ou celles qui auraient besoin de la solution :
Function moyfeuille(nom As Range)
' Boucle sur les feuilles jusqu'à l'avant dernière
For n = 1 To Sheets.Count - 1
' SOMME SI des notes en col G si nom en A
a = Application.WorksheetFunction.SumIfs(Sheets(n).Range("G:G"), Sheets(n).Range("A:A"), nom)
' NB SI du nom
b = Application.WorksheetFunction.CountIf(Sheets(n).Range("A:A"), nom)
' incrementation Total
Total = Total + a
'Incrémentation nbre notes
nbnotes = nbnotes + b
Next
' Valeur calculée à retourner
moyfeuille = Total / nbnotes
End Function
Cdlmnt
Merci d'avoir rectifié
Cdlmnt
Via