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

Référence cellule d'un autre classeur + nom de l'onglet

112 views
Skip to first unread message

kerr2

unread,
Jul 16, 2006, 5:53:43 PM7/16/06
to
Bonsoir

Sur la feuille 2-1 de mon classeur je fais référence à des cellules
contenus dans un autre classeur
A1 ='[Liste élèves BEP.xls]2-1'!L3C3
A2 ='[Liste élèves BEP.xls]2-1'!L4C3
A32 ='[Liste élèves BEP.xls]2-1'!L35C3

Idem sur la feuille 2-2
A1 ='[Liste élèves BEP.xls]2-2'!L3C3
A2 ='[Liste élèves BEP.xls]2-2'!L4C3
A32 ='[Liste élèves BEP.xls]2-2'!L35C3

Pourriez vous m'aider pour que les formules de la feuille lambda soit
transposable dans n'importe quelle autre feuille du classeur:
soit a remplacer 2-1 et 2-2 par le nom de l'onglet
qq chose du genre
A1 ='[Liste élèves BEP.xls]nom onglet'!L3C3
A32 ='[Liste élèves BEP.xls]nom onglet'!L35C3


En vous remerciant par avance.


J'ai essayé de remplacer 2-1 par la ligne ci-dessous mais sans succès.
STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32)


anonymousA

unread,
Jul 17, 2006, 1:43:50 AM7/17/06
to
Bonjour;

utilises INDIRECT. Exemple ci-dessous avec en A1 l'identifiant du
classeur ( ex [toto.xls]), en A2 , le nom de l'onglet (ex: Feuil1! ) et
$B$2 étant la référence de la cellule de la feuille 1 du classeur
toto.xls que tu veux récupérer :

=INDIRECT(A1&A2 &"$B$2")

renvoie l'équivalent de =[toto.xls]Feuil1!$B$2.

Attention: INDIRECT ne fonctionne qu'avec le classeur source ouvert et
ce "by design".Pour fonctionner avec un classeur fermé , il faut
utliser une fonction personnalisée INDIRECT.EXT que tu peux trouver
sur le site de Laurent LONGRE.

A+

kerr2

unread,
Jul 17, 2006, 4:57:23 PM7/17/06
to
Bonsoir,

Merci pour ta réponse. Cela fonctionne
A1: [toto.xls]
A2: Feuil1!
=INDIRECT(A1&A2 &"$B$2") fonctionne

ou encore
A1: [toto.xls]
A2: =STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32)
=INDIRECT(A1&A2 &"!$B$2")

cela fonctionne mais ne fonctionne pas si le classeur référent est fermé
comme tu as indiqué.

J'ai chargé sur le site de Laurent LONGRE les fonctions complémentaires V
4.2
=INDIRECT.EXT("'[toto.xls]Feuil1'!$B$2") fonctionne mais je n'arrive pas a
adapter pour remplacer Feui1 par le nom de l'onglet de la feuille courante.

Comment ensuite rattacher la fonction complémentaire INDIRECT.EXT à mon
classeur pour qu'elle puisse etre accessible de n'importe quel PC?
Travaillant dans un lycée je ne peux pas l'installer sur tous les postes.


En te remerciant par avance.


"anonymousA" <anony...@wanadoo.fr> a écrit dans le message de news:
1153115030.4...@m73g2000cwd.googlegroups.com...

anonymousA

unread,
Jul 18, 2006, 2:36:45 AM7/18/06
to
sincèrement, ces affaires de macro complémentaire sur des postes en
réseau, honnêtement, je n'en sais rien.Il faudra que tu poses la
question sur ce forum en tant que question sur un fil à part.
Désolé

A+

kerr2

unread,
Jul 18, 2006, 5:13:37 AM7/18/06
to
Merci anonymousA pour ta réponse.
Oublions le problème de portage de macro complémentaire sur un autre poste

Peux tu m'aider à adapter la fonction


=INDIRECT.EXT("'[toto.xls]Feuil1'!$B$2")

pour remplacer Feui1 par le nom de l'onglet de la feuille courante.

En te remerciant par avance.


"anonymousA" <anony...@wanadoo.fr> a écrit dans le message de news:

1153204605.6...@75g2000cwc.googlegroups.com...

anonymousA

unread,
Jul 18, 2006, 2:28:34 PM7/18/06
to
Je ne connais pas la manière d'utiliser la macro de Laurent LONGRE car
je n'en ai jamais eu besoin. Ceci dit, si j'en crois la syntaxe que tu
évoques ( =INDIRECT.EXT("'[toto.xls]Feuil1'!$B$2") ) , alors ce qu'il y
a dans les apostrophes est une chaine textuelle et dans ces conditions
il doit être possible d'écrire une chaine par concaténation , du style
=INDIRECT.EXT("'[toto.xls]" & $A$3 & "'!$B$2") avec en $A$3 le nom de la
feuille.
Enfin je suppose car je reconnais que je n'ai pas essayé

A+

kerr2 a écrit :

kerr2

unread,
Jul 18, 2006, 4:29:18 PM7/18/06
to
Merci anonymousA.
Cela fonctionne

Si je mets maintenant en
A2: [toto.xls]
avec toujours en
A3: nom de la feuille

Est ce que tu as une idée pour modifier ?

=INDIRECT.EXT("'[toto.xls]" & $A$3 & "'!$B$2")

J'ai essayé sans succès.

(je comprens pas bien ces '". Quand on en ouvre on doit en refermer le même
nombre mais la !!)

En te remerciant.


"anonymousA" <anony...@wanadoo.fr> a écrit dans le message de news:

44bd2852$0$894$ba4a...@news.orange.fr...

anonymousA

unread,
Jul 19, 2006, 2:20:41 AM7/19/06
to
Ne jamais confondre les apostrophes ( caractère typographique ' ) avec
les guillemets ( caractère typoghraphique " ).
En effet, les seconds permettent de signaler à Excel qu'il va se
trouver en présence d'une chaine de texte, alors que les premiers
indiquent une chaine désignant un objet .Dans la formule
INDIRECT.EXT("'[toto.xls]" & $A$3 & "'!$B$2") ,
je mets ici des espaces volontairement pour te faire toucher du doigt
ce que je dis
INDIRECT.EXT(" ' [toto.xls] " & $A$3 & " ' !$B$2 " )

On voit bien que la chaine de texte '[toto.xls] est encadrée de
guillemets mais que l'objet [toto.xls] est précédé d'une apostrophe
car l'objet final de la formule sera p.e si la feuille s'appelle
Feuil1, '[toto.xls]Feuil1'!$B$2. Vois-tu où sont les apostrophes dans
'[toto.xls]Feuil1'!$B$2 ?

Et evidemment quand on ouvre des guillemets , il faut les refermer.

A+

kerr2

unread,
Jul 19, 2006, 4:12:25 AM7/19/06
to
Merci pour ces explications.

Si je veux donc remplacer maintenant [toto.xls] par A1
que devient la formule ?
J'ai essayé différente chose qui ne fonctionne pas
=INDIRECT.EXT('A1 & A2 & "'!B2")

Plus difficile si je veux que A1: contienne seulement toto.xls
Il faut donc mettre les crochets dans la formule

Si tu peux m'aider (pour que je puisse dire oui mais bien sure :)

En te remerciant


"anonymousA" <anony...@wanadoo.fr> a écrit dans le message de news:

1153290041.7...@p79g2000cwp.googlegroups.com...

anonymousA

unread,
Jul 19, 2006, 5:04:53 AM7/19/06
to
Pense chaine de texte et concaténation de chaines de texte et ca ira
tout seul

=INDIRECT.EXT("'" & A1 & A2 & "'!B2")

si A1 contient [toto.xls]
A2 contient Feuil1

ou
=INDIRECT.EXT("'[" & A1 &"]" & A2 & "'!B2")
si A1 contient toto.xls
A2 contient Feuil1


A+

kerr2

unread,
Jul 20, 2006, 6:22:17 AM7/20/06
to
Bonjour anonymousA,

Mais c'est bien sure!
Un sans faute.

Grand merci.


Reste à valider la pertinence de l'emploi de la fonction INDIRECT.EXT avec
un grand nombre de cellules sur une même feuille et plusieurs feuilles.
Mais c'est un autre sujet.

"anonymousA" <anony...@wanadoo.fr> a écrit dans le message de news:

1153299893.6...@m73g2000cwd.googlegroups.com...

0 new messages