Calculer la moyenne de certaines cellules sur plusieurs feuilles
Résolu/Fermé
Enaxor18
Boisgontierjacques
- Messages postés
- 23
- Date d'inscription
- jeudi 8 octobre 2015
- Statut
- Membre
- Dernière intervention
- 4 octobre 2018
Boisgontierjacques
- Messages postés
- 175
- Date d'inscription
- jeudi 19 septembre 2013
- Statut
- Membre
- Dernière intervention
- 26 décembre 2018
A voir également:
- Moyenne.si plusieurs plages
- Excel :moyenne si dans cellules non contigües ✓ - Forum - Excel
- Moyenne sur une plage spécifiee par des bornes ✓ - Forum - Excel
- Faire la moyenne d'une plage de donnée, nombre de ligne variable ✓ - Forum - Excel
- Fonction NB.SI.ENS différentes plages même critère ✓ - Forum - Excel
- Calculer la moyenne de certaines cellules sur plusieurs feuilles ✓ - Forum - Excel
5 réponses
via55
Modifié par via55 le 8/10/2015 à 19:01
- Messages postés
- 13800
- Date d'inscription
- mercredi 16 janvier 2013
- Statut
- Membre
- Dernière intervention
- 10 août 2022
Modifié par via55 le 8/10/2015 à 19:01
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
via55
8 oct. 2015 à 18:06
- Messages postés
- 13800
- Date d'inscription
- mercredi 16 janvier 2013
- Statut
- Membre
- Dernière intervention
- 10 août 2022
8 oct. 2015 à 18:06
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
ccm81
8 oct. 2015 à 18:07
- Messages postés
- 10416
- Date d'inscription
- lundi 18 octobre 2010
- Statut
- Membre
- Dernière intervention
- 10 août 2022
8 oct. 2015 à 18:07
Bonjour
Essaies ceci (résultat en feuille 3)
http://www.cjoint.com/c/EJiqg67B8h2
Cdlmnt
Essaies ceci (résultat en feuille 3)
http://www.cjoint.com/c/EJiqg67B8h2
Cdlmnt
Enaxor18
8 oct. 2015 à 18:23
- Messages postés
- 23
- Date d'inscription
- jeudi 8 octobre 2015
- Statut
- Membre
- Dernière intervention
- 4 octobre 2018
8 oct. 2015 à 18:23
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
Boisgontierjacques
8 oct. 2015 à 21:50
- Messages postés
- 175
- Date d'inscription
- jeudi 19 septembre 2013
- Statut
- Membre
- Dernière intervention
- 26 décembre 2018
8 oct. 2015 à 21:50
Bonsoir,
http://boisgontierjacques.free.fr/pages_site/sommeprod3D.htm
Boisgontier
http://boisgontierjacques.free.fr/pages_site/sommeprod3D.htm
Boisgontier
8 oct. 2015 à 19:13
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.
8 oct. 2015 à 19:30
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
8 oct. 2015 à 19:31
Cdlmnt
8 oct. 2015 à 20:22
Merci d'avoir rectifié
Cdlmnt
Via