Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fonction indirect : plage sur plusieurs feuilles

5 réponses
Avatar
Ciegalo
Bonjour =E0 tous,
Le probl=E8me suivant pourrait =EAtre r=E9solu en passant =E0 une base de
donn=E9es, je sais :) Mais j'aime bien excel ;)

J'ai d=E9couvert dans l'aide la fonction INDIRECT qui permet de
"calculer" une formule. Cependant, cela ne semble pas marcher quand il
s'agit de cr=E9er une r=E9f=E9rence de plage sur plusieurs feuilles.

Exemple :
Mon classeur contient des pages "Janvier", "F=E9vrier", "Mars". Je veux
faire la somme des cellules B12 de chaque feuille.

=3DSOMME(Janvier:Mars!B12)

Fonctionne parfaitement.

Par contre :
=3DSOMME(INDIRECT("Janvier:Mars!B12"))

Renvoie "#REF!"

L'id=E9e =E9tant de pouvoir modifier par exemple "Mars" depuis une autre
cellule.

Des id=E9es ?

Merci d'avance !

@ bient=F4t,
Damien

5 réponses

Avatar
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"))

http://cjoint.com/?hfrEl1UGwn

JB
http://boisgontierjacques.free.fr/


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


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

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

JB



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


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