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

formule caméléon

4 réponses
Avatar
Pierre F.
Bonsoir à toutes et tous.

Dans un fichier, je souhaite récupérer des données d'autres fichiers
tous de même structure.
J'ai une formule qui fait ça très bien

='D:\Adm\Abs\[Toto1.xls]Sem1'!G15

mais :-)

cette formule, je souhaiterais la faire varier en fonction du contenu
d'une cellule (A2) de mon fichier.
Ainsi, si j'écris 15 dans A2, j'aurais la formule ci-dessus.


Si j'écris 23 en A2, je souhaiterais que ma formule devienne
automatiquement:
='D:\Adm\Abs\[Toto1.xls]Sem1'!G23

Si j'écris 19 en A2, je souhaiterais que ma formule devienne
automatiquement:
='D:\Adm\Abs\[Toto1.xls]Sem1'!G19

C'est donc l'adresse de la cellule (sa ligne) que je souhaite faire
dépendre de la valeur d'une cellule.

J'ai essayé de nommer A2 ("base") et j'ai écrit

='D:\Adm\Abs\[Toto1.xls]Sem1'!G&base

mais ça ne marche pas... trop simple :-)


Existe-t-il une syntaxe "magique" pour faire cela ?

Merci de votre aide

Cordialement,
Pierre F.

4 réponses

Avatar
JRM
Bonjour Pierre F.

Essaie avec la Formule INDIRECT() comme ceci :

=INDIRECT("'D:AdmAbs[Toto1.xls]Sem1'!G"&A2)
Le second classeur doit être ouvert pour que ça fonctionne.
--
Cordialement,
JRM

Bonsoir à toutes et tous.

Dans un fichier, je souhaite récupérer des données d'autres fichiers
tous de même structure.
J'ai une formule qui fait ça très bien

='D:AdmAbs[Toto1.xls]Sem1'!G15

mais :-)

cette formule, je souhaiterais la faire varier en fonction du contenu
d'une cellule (A2) de mon fichier.
Ainsi, si j'écris 15 dans A2, j'aurais la formule ci-dessus.


Si j'écris 23 en A2, je souhaiterais que ma formule devienne
automatiquement:
='D:AdmAbs[Toto1.xls]Sem1'!G23

Si j'écris 19 en A2, je souhaiterais que ma formule devienne
automatiquement:
='D:AdmAbs[Toto1.xls]Sem1'!G19

C'est donc l'adresse de la cellule (sa ligne) que je souhaite faire
dépendre de la valeur d'une cellule.

J'ai essayé de nommer A2 ("base") et j'ai écrit

='D:AdmAbs[Toto1.xls]Sem1'!G&base

mais ça ne marche pas... trop simple :-)


Existe-t-il une syntaxe "magique" pour faire cela ?

Merci de votre aide

Cordialement,
Pierre F.


Avatar
Pierre F.
Bonjour Pierre F.

Essaie avec la Formule INDIRECT() comme ceci :

=INDIRECT("'D:AdmAbs[Toto1.xls]Sem1'!G"&A2)
Le second classeur doit être ouvert pour que ça fonctionne.
--
Merci; ça fonctionne très bien


Mais je dois pour cela ouvrir tous les fichiers dans lesquels se
trouvent les données à récolter, soit 4 classeurs.
J'ai donc mis dans ThisWorkbook Open

Private Sub Workbook_Open()
Application.EnableEvents = False
Workbooks.Open "D:AdmAbsToto1-S1-10.xls"
Workbooks.Open "D:AdmAbsToto2-S1-10.xls"
Workbooks.Open "D:AdmAbsToto3-S1-10.xls"
Workbooks.Open "D:AdmAbsToto4-S1-10.xls"
Application.EnableEvents = True

End Sub

Après avoir ouvert les 4 classeurs, il affiche le dernier; je
souhaiterais qu'il m'affiche le fichier de départ.

J'ai essayé Sheets("Feuil1").select mais ça ne marche pas.
Comment faire?

En outre, comment lui faire fermer les 4 fichiers ci-dessus (sans
enregistrer) quand je quitte?

Merci.

Cordialement,
Pierre F.

Avatar
FdeCourt
Salut,

Pour ne pas avoir à ouvrir les différents fichiers, il existe une
macro complémentaires, MoreFunc.xll que tu trouveras ici qui te permet
d'utiliser la fonction INDIRECT.EXT (qui fonctionne comme la formule
INDIRECT) :
http://xcell05.free.fr/pages/telecharge/index.html

Cordialement,

F.
Avatar
Pierre F.
Salut,

Pour ne pas avoir à ouvrir les différents fichiers, il existe une
macro complémentaires, MoreFunc.xll que tu trouveras ici qui te permet
d'utiliser la fonction INDIRECT.EXT (qui fonctionne comme la formule
INDIRECT) :
http://xcell05.free.fr/pages/telecharge/index.html


Super super-top, merci beaucoup!

Je dois maintenant choisir :-)

Est-ce que je perds un peu de temps au début (chargement de tous les
classeurs) ou à chaque requête (temps de calculs bien plus long).

Cruel dilemme :-)

Cordialement,
Pierre F.