Nom de fichier dynamique

Bonjour,

Je cherche à utiliser, dans une formule (ni dans une macro, ni avec VBA), un nom de fichier créé de manière dynamique. Par exemple :

J'ai un fichier AAA constitué de 52 feuilles nommée S-1, S-2, ......., S-52.

J'ai un fichier BBB constitué de 52 feuilles nommée S-1, S-2, ......., S-52.

Dans chaque feuille du fichier AAA, j'ai 1 formule qui rapatrie une donnée du fichier BBB depuis la feuille qui porte le même nom :

dans AAA.xls feuille S-1 on trouve : ='[BBB.xls]S-1'!H37

dans AAA.xls feuille S-2 on trouve : ='[BBB.xls]S-2'!H37

dans AAA.xls feuille S-52 on trouve : ='[BBB.xls]S-52'!H37

Je voudrais créer la chaine de caractères "S-1" de manière dynamique à l'aide de la formule : NOM_FEUILLE() et obtenir quelque chose qui pourrait ressembler à ça : ='[BBB.xls] & NOM_FEUILLE(A1)'!H37

Et cela sans passer par VBA ou une macro.

Cela existe dans certains langages de programmation professionnels que j'ai pu utiliser dans le passé, et connu sous le nom de variables de substitution.

Merci pour votre aide

Michel

Bonjour et bienvenue,

Utilise la fonction INDIRECT combiné avec la détection du nom de l'onglet

=INDIRECT("'[BBB.xls]" & DROITE(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfichier";A1))-TROUVE("]";CELLULE("nomfichier";A1))) & "'!H37")

Remarques : il y a des années avec 53 semaines ! et j'évite souvent de faire un onglet par semaine ...

49aaa.xlsx (7.96 Ko)

Un monde nouveau s'ouvre à moi

Merci beaucoup

J'essaye de mettre en œuvre la fonction INDIRECT et je rencontre des difficultés. Je simplifie ma formule au maximum pour essayer de trouver mon erreur mais impossible ! Pourquoi cette formule ne fonctionne pas ?

=INDIRECT("NO.SEMAINE(B7;2)")

Merci pour votre aide

Bonjour,

Ta formule ne fait référence à aucune cellule, juste un n° de semaine ... et puis ?

Le eiux pour construire une telle formule est de la taper normalement, puis encadrer le tout avec INDIRECT("___________") et enfin remplacer le paramètre par " & ma_formule & "

30indirect.xlsx (8.81 Ko)

J'ai trop simplifié ma formule. Voici ce que je veux faire dans le fichier Excel joint

23exemple.xlsx (9.36 Ko)

Re-

je t'arrête tout de suite ... INDIRECT ne fonctionne que si les fichiers sont ouverts !

donc ne pas faire appel à un chemin en absolu

cela ne fonctionne que sur le fichier lui-même ou sur un fichier déjà ouvert

dans ton cas, lorsque le fichier est ouvert

=NO.SEMAINE(INDIRECT("'["&Param!B2&"]"&B1&"'!$A$10");2)
20exemple.xlsx (10.62 Ko)
14mon-fichier.xlsx (7.87 Ko)

Mais il y a une autre solution qui est de construire la formule par VBA. J'y viens ...

Mais il y a une autre solution qui est de construire la formule par VBA fichier source fermé, que voici :

Sub formule()
    ActiveCell.FormulaR1C1 = "=WEEKNUM('" & Sheets("Param").Range("B1") & "[" & Sheets("Param").Range("B2") & "]" & Range("B1") & "'!R10C1,2)"
End Sub
31exemple.xlsm (18.81 Ko)

Ca marche ! Merci beaucoup

Rechercher des sujets similaires à "nom fichier dynamique"