Salut haonv,
j'ai déjà constaté que Worksheets("XX") était très sensible au type de données, impérativement String.
Or, de ce que je viens de lire, .Value renvoie une valeur en Variant, que je suppose alors forcée selon le format de la cellule.
Vérifie si la cellule [A2] est en format 'Texte' : .Value passerait donc une String... ce que ne fait pas Range SANS .Value...
Ceci, par contre, passe très bien où Cstr force la conversion de [A2] ( SANS .Value) en String.
Worksheets(CStr(Worksheets("ShRef").Range("A2")))
C'est ainsi que, nébuleusement, j'interprète d'expérience ce comportement
A+