J'ai découvert dans l'aide la fonction INDIRECT qui permet de
"calculer" une formule. Cependant, cela ne semble pas marcher quand il
s'agit de créer une référence de plage sur plusieurs feuilles.
Exemple :
Mon classeur contient des pages "Janvier", "Février", "Mars". Je veux
faire la somme des cellules B12 de chaque feuille.
=SOMME(Janvier:Mars!B12)
Fonctionne parfaitement.
Par contre :
=SOMME(INDIRECT("Janvier:Mars!B12"))
Renvoie "#REF!"
L'idée étant de pouvoir modifier par exemple "Mars" depuis une autre
cellule.
Des idées ?
Merci d'avance !
@ bientôt,
Damien
B2 contient 1,2,3,...
=SOMMEPROD(SOMME.SI(INDIRECT(TEXTE(DATE(2006;LIGNE(INDIRECT("1:"&B2));
1);"mmmm")&"!A2");">0"))
B13 contient Janvier,Févier,...:
=SOMMEPROD(SOMME.SI(INDIRECT(TEXTE(DATE(2006;LIGNE(INDIRECT("1:"&MOIS("1/"&B13)));
1);"mmmm")&"!A2");">0"))
JB
http://boisgontierjacques.free.fr/
Alors là je suis bluffé... Rapide et efficace :) Merci beaucoup !
Par contre, je ne comprends pas la fonction :) J'ai beau tout
décortiquer, ne ne comprends pas le SOMMEPROD ni comment la somme peut
marcher alors que ce que retourne le INDIRECT est Janvier!A2 ...
Si vous avez le temps, je suis preneur pour quelques compléments,
j'aime qu'on m'apprenne à pêcher :)
@ bientôt,
Damien
http://boisgontierjacques.free.fr/fichiers/jb-formulesonglets.zip
JB
On 5 juil, 17:53, Ciegalo <damien.poc...@gmail.com> wrote:
> On 5 juil, 17:32, JB <boisgont...@hotmail.com> wrote:> Bonjour,
>
> > B2 contient 1,2,3,...
>
> > =SOMMEPROD(SOMME.SI(INDIRECT(TEXTE(DATE(2006;LIGNE(INDIRECT("1:"&B2));
> > 1);"mmmm")&"!A2");">0"))
>
> > B13 contient Janvier,Févier,...:
>
> > =SOMMEPROD(SOMME.SI(INDIRECT(TEXTE(DATE(2006;LIGNE(INDIRECT("1:"&MOIS("1/"&B13)));
Ok....... Je ne maitrise pas du tout les fonctions matricielles
d'Excel en fait. J'ai compris qu'il faut 2 conditions :
- La liste des onglets doit être une série de cellules
- la fonction de somme doit être conditionnelle elle aussi (ne marche
pas avec une somme simple)
Très étonnant, mais ça marche !
Merci pour toutes ces infos ;)
@ bientôt,
Damien
Function SommeOnglet(début, fin, c As Range)
Application.Volatile
t = 0
For s = début To fin
t = t + Sheets(s).Range(c.Address)
Next s
SommeOnglet = t
End Function
JB