Remplacer la Fonction Indirecte qui fait référence à un classeur fermé

Bonjour à tous,

J'ai une formule actuel qui me permet de récupérer une valeur sur un autre classeur mais uniquement quand il est ouvert.
J'aimerais récupérer ces valeurs à chaque ouverture/ou à définir.

Voici la formule qui fonctionne quand le fichier est ouvert :=SI($B30="";"";SIERREUR(INDIRECT("'NomDuFichierEtNomDeLaFeuille'!"&("$AJ$"&(EQUIV($B30;$B$30:$B$143;0)+40)));"0.00"))

En résumé, ma cellule B30 de la feuille en cours contient un mot et il doit trouver ce mot dans la plage B30:B143, une fois ce mot trouvé, il récupère la valeur qui se trouve à 11 ligne plus bas et 33 colonnes plus à droite.

Si quelqu'un peut m'aider à transforer cette formule en code VBA ça serait sympa et peut-être même la simplifier si ma demande est assez claire.

Merci pour votre aide
Belle soirée
Jems

Bonjour

Il faudrait déjà compléter ton profil en indiquant ta version Excel

Bonjour,

c'est fait.

office 365 si jamais.

Désolé.

RE

Tu as intérêt à lier classeur et feuille via une requête PowerQuery (intégré à Excel) afin d'en récupérer la colonne AJ

Si Nom du fichier et nom de feuille sont des variables tu peux les placer dans des cellules nommées qu'utilisera la requête sinon cela sera directement indiqué dans la requête.

A noter que le cross post n'est pas autorisé par la charte de ce forum

Salut, merci pour votre réponse.

J'ai fais quelques recherches sur Power Query mais j'ai pas encore trouvé de réponse ou solution car je ne connais pas du tout PQ.

Je pensais plus à faire en VBA si possible.

Pour être plus précis, ma cellule B30 de la feuille en cours contient un mot et il doit trouver ce même mot dans la plage B30:B143 du classeur fermé, une fois ce mot trouvé, il récupère la valeur qui se trouve à 11 ligne plus bas et 33 colonnes plus à droite et écris la valeur récupéré en D41.

et j'incrémente B30 et D41 de +12 à chaque boucle (boucle i qui va de 1 à 8)

J'ai deja tester ces formule dans la barre de formule mais ça fonctionne pas :

INDEX("'["&A26&"]"&A27&"'!$A$1:$AQ$180";(EQUIV($B30;$B$30:$B$143;0)+33);36)

A26 = nom du classeur fermé où je cherche ma valeur

A27 = nom de la feuille

marche pas non plus :

=INDEX([NomDuClasseur]Décembre!$A$1:$AQ$180,(MATCH($B30,$B$30:$B$143,0)+40),36)

Bonjour

Depuis que PowerQuery est disponible (plus de 12 ans) on le privilégie à VBA dans nombre de cas...

Il suffit de lier la colonne B et la colonne AJ (indiquée dans ta 1ère formule, située non pas 33 mais 34 colonnes plus loin)

VBA ne sera pas dynamique contrairement à des formules... Cependant des formules sur classeurs fermé rament plus que sur le résultat d'une requête

=INDEX('[NomDuClasseur]Décembre'!$A$J30:$AJ$180;EQUIV($B30;'[NomDuClasseur]Décembre'!$B$30:$B$180;0)+11)

Les tailles des plages doivent être cohérentes

Si le classeur fermé est dans un autre dossier il faut le chemin complet

Re-Salut,

j'ai cherché Power Query, mais mes connaissances sans trop insuffisante à ce stade pour faire ce dont j'ai besoin.

J'ai réussi en utilisant cette formule :
=INDEX(INDIRECT(CONCATENER("'";$A$25;"[";$A$26;"]";$A$27;"'!$A$1:$AQ$180"));(EQUIV(DECALER($D34;-4;-2);$B$30:$B$143;0)+33);36)

Sur A25 : chemin du fichier
A26 : nom du classeur
A27 : nom de l'onglet

Merci tout de même pour ton aide.
Si par hasard, tu as la méthode pour le faire avec PowerQuery, je suis preneur pour apprendre à comprendre le fonctionnement de l'outil.

Belle journée

Rechercher des sujets similaires à "remplacer fonction indirecte qui fait reference classeur ferme"