Bonjour
Regarde ce code
B1 = "Adresse de la cellule contenant la valeur à cherchée
A1 = "Adresse de la cellule contenant le nom de la feuille"
Range("A2").Formula = "=VLOOKUP(" + B1 + "," + A1 + "!$A$6:$U$100,21)"
Range("A3") = Application.Evaluate("=VLOOKUP(" + B1 + "," + A1 + "!$A$6:$U$100,21)")Range("A4").FormulaLocal = "=RECHERCHEV(" + B1 + ";" + A1 + "!$A$6:$U$100;21)"
Range("A5") = Application.VLookup(B1, Sheets(A1).Range("A6:U100"), 21)
Range("A6") = Application.VLookup(B1, Range(A1 + "!A6:U100"), 21)
La première formule écrit une formule dans la cellule, et Excel retourne le résultat, à chaque fois que le classeur est recalculé, la formule sera recalculé, elle est sous forme anglaise.
La deuxième, c'est VBA qui par l'intermédiaire d'Excel, va retourner la valeur dans la cellule, la cellule ne contient pas de formule.
La troisième, même fonctionnalité que la première, sauf, qu'elle est écrit en français, le code ne fonctionnera que sur des versions françaises d'office. Attention, ici le séparateur d'argument, n'est pas la virgule, mais le point-virgule.
La quatrième, c'est VBA qui va calculer la valeur, et la retourne dans la cellule.
La cinquième est une variante, dans la définition de la feuille dans l'objet range
Voilà tu as le choix, il est préférable d'utiliser la déclaration A1 plutôt que R[]C[], je voulais aussi apporté ton attention, sur la non utilisation du 4ième argument optionnel de la fonction RECHERCHEV ou H, elle définit le mode de recherche exact ou valeur la plus proche, regarde l'aide en ligne.
Amadéus, INDIRECT permet aussi la définition d'une plage de cellule, mais elle ne permet pas de définir une plage multi-feuilles, style =Feuil2:Feuil3!B8:B50
@+Jean-Marie