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 177 Statut Membre -
Boisgontierjacques Messages postés 177 Statut Membre -
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
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
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-
Re !
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. -
C'est bon j'ai trouvé ! il manquait juste une apostrophe ! ;)
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 -
-
-
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
-
Bonjour
Essaies ceci (résultat en feuille 3)
http://www.cjoint.com/c/EJiqg67B8h2
Cdlmnt -
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -