Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Fonction indirect : plage sur plusieurs feuilles

1,356 views
Skip to first unread message

Ciegalo

unread,
Jul 5, 2008, 10:56:18 AM7/5/08
to
Bonjour à tous,
Le problème suivant pourrait être résolu en passant à une base de
données, je sais :) Mais j'aime bien excel ;)

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

JB

unread,
Jul 5, 2008, 11:32:32 AM7/5/08
to
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)));
1);"mmmm")&"!A2");">0"))

http://cjoint.com/?hfrEl1UGwn

JB
http://boisgontierjacques.free.fr/

Ciegalo

unread,
Jul 5, 2008, 11:53:53 AM7/5/08
to
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)));
> 1);"mmmm")&"!A2");">0"))
(snip)

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

JB

unread,
Jul 5, 2008, 12:05:53 PM7/5/08
to
Voir exemple + simple dans jb-OngletIndirect2.xls:

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)));

Ciegalo

unread,
Jul 5, 2008, 12:24:25 PM7/5/08
to
On 5 juil, 18:05, JB <boisgont...@hotmail.com> wrote:
> Voir exemple + simple dans jb-OngletIndirect2.xls:
>

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

JB

unread,
Jul 5, 2008, 12:51:43 PM7/5/08
to
Avec fonction perso:

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

http://cjoint.com/?hfsXpFVDie

JB

0 new messages