Bonjour,

Je suis débutant en programmation et j'ai un souci avec une macro que je réalise en VBA.

Je dispose d'une feuille qui collecte plusieurs informations piochées dans différents classeurs "SOURCE".
Dans la majorité des cas, je rassemble ces données Ã* partir des feuilles sources que je fais copier par la macro dans mon classeur "COLLECTE". Ces classeurs sources lÃ* sont très légers.

Mon problème survient lorsque je dois collecter les données de plusieurs classeurs "SOURCE" très lourds (svt supérieur Ã* 100mo). Pour cette raison je ne souhaite pas les ouvrir pour faire migrer les feuilles et collecter les données.

Mon alternative jusqu'Ã* présent consistait Ã* "garder" dans les cellules idoines de mon classeur "COLLECTE" des formules avec recherchev qui lançait la collecte Ã* partir d'une variable renseignée par la macro.
Cela fonctionnait et le résultat était suffisant.
(pour exemple, une formule est:
=ARRONDI(RECHERCHEV($B$63;'C:\SOURCES pour ASSEMBLAGE\[SOURCE_2017-Assemblage.xlsx]SOURCE_2017'!$A:$QZ;10;FAUX);3)
pour des donnée de l'année 2017)

J'aimerais améliorer les choses afin (1) de circonvenir au risque d'erreur de manip amenant Ã* l'effacement par maladresse des formules en question et (2) de permettre la modification du dossier des classeurs "SOURCE"

Dans la macro de collecte des données, je souhaite ajouter du code permettant de ré-écrire la formule précédente, telle quelle, dans la cellule qui lui correspond (les cellules cibles varient en même temps que l'index de rechercheV). Et que la recherche s'exécute.

J'ai créé une variable string pour reproduire l'adresse et les plages de recherche précédemment :
PlageRech_SOURCE17 = "'" & xStrPathSOURCE & "[SOURCE_2017-Assemblage.xlsx]SOURCE_2017'!$A:$QZ" (avec xStrPathSOURCE="C:\SOURCES pour ASSEMBLAGE")

Puis j'essaie d'écrire la formule dans une cellule de la feuille "COLLECTE" avec (parmis mes nombreuses tentatives) :

Sheets("COLLECTE").Range("G60").Formula = "=RECHERCHEV($B$63;" & PlageRech_SOURCE17 & ";10;FAUX)"

Mais rien ne s'affiche dans la cellule G60 en question.

Si je modifie la formule en ajoutant une apostrophe avant le "=" :
Sheets("COLLECTE").Range("G60").Formula = "'=RECHERCHEV($B$63;" & PlageRech_SOURCE17 & ";10;FAUX)"

, alors le texte s'affiche mais ne s'exécute bien entendu pas. Si ensuite (hors macro), je retire manuellement l'apostrophe , la formule s'exécute et le résultat voulu apparait. Mais cela retire une bonne partie de l'intérêt de cette démarche.

Je pense avoir essayé plusieurs options glanées de part et d'autre (. value, .range, "," au lieu de ";", vlookup au lieu de rechercheV,...) , mais sans succès. Pourriez vous m'aiguiller s'il vous plait.

Merci Ã* tous
Philippe