Fonction indirect : plage sur plusieurs feuilles

Le
Ciegalo
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #11195891
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/


On 5 juil, 16:56, Ciegalo
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


Ciegalo
Le #11195981
On 5 juil, 17:32, JB
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
Le #11196081
Voir exemple + simple dans jb-OngletIndirect2.xls:

http://boisgontierjacques.free.fr/fichiers/jb-formulesonglets.zip

JB



On 5 juil, 17:53, Ciegalo
On 5 juil, 17:32, JB
> 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


Ciegalo
Le #11196311
On 5 juil, 18:05, JB
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
Le #11196371
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

On 5 juil, 18:24, Ciegalo
On 5 juil, 18:05, JB
> 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


Publicité
Poster une réponse
Anonyme