Vlookup plage variable

Bonjour

Je coince dans l'utilisation de vlookup en ce qui concerne l'argument 2. Ma macro fonctionne très bien avec une plage comme range("a1:g100"). Mais mon tableau n'est pas figé. (liste des participants à une sortie). J'aimerais donc avec l'aide d'une fonction Count qui me donne le nombre de lignes de mon tableau à chaque sortie avoir pour argument 2 range(a1:gnbredelignes). J'ai essayé par concaténation "a1:g" & "nbredelignes". Avec des " ou des ' ou rien. J'ai toujours un message erreur.

Y a t'il une solution ?

Merci d'avance pour l'aide

Bonjour,

Le mieux serait d'avoir un tableau structuré nommé "tablo" par exemple.

Ainsi, range("tablo") fonctionnera toujours. Cependant, le 3è argument est à variabiliser lui aussi. Donc je privilégierais un index equiv. ex :

??.formulalocal = "=INDEX(tablo[colB];equiv(" & ref_ou_vcherchee & ";tablo[colA];0))"

Sinon, pour votre problème :

sub a()

dim dl%

dl = cells(application.rows.count, 7).end(xlup).row

??.formula = "=VOOKUP(X,$A$1:$G$" & dl & ", 2,0)"

end suv

Cdlt,

Merci pour cette solution qui semble fonctionner.
Mais si la formule est bien insérée dans la cellule , cette dernière m'affiche #NOM?
Mon code est le suivant
Sheets("Feuil1").Select
Dim NbJ%
NbJ = Cells(Application.Rows.Count, 2).End(xlUp).Row
Sheets("Alfa").Select
Range("C3").Select
vcherche = Selection.Offset(0, -2).Address
ActiveCell.Formula = "=VLookUp(vcherche, Feuil1!B3:J" & NbJ & ", 9, false)"
Si j'exécute en pas à pas, je peux vérifier que vcherche est bien $A$3.
Est une question de déclaration de variable ? Dans ce cas vcherche est une string ou une range ?
Par ailleurs si je remplace vcherche par A3 dans la macro j'obtiens bien le résultat escompté.

Une idée ?

Bonsoir,

Peux tu essayer avec ceci :

"=VLookUp(" & vcherche & ", Feuil1!B3:J" & NbJ & ", 9, false)"

J'ai finalement trouvé l'erreur en même temps que je vois ta réponse.

c'est bien ça. Je n'ai pas pensé que vcherche était une variable.

Encore merci.

Tout était dans l'écriture.
Je vais pouvoir maintenant faire ma boucle pour chaque ligne de mon tableau.

Un bon WE

Bonsoir,

Si l'objectif est de propager cette même formule, la boucle n'est pas nécessaire. On peut utiliser la méthode autofill (jusqu'à C100 pour l'exemple) :

Sub crouba()

Dim NbJ%
Dim vcherche$

NbJ = Sheets("Feuil1").Cells(Sheets("Feuil1").Rows.Count, 2).End(xlUp).Row

With Sheets("Alfa").Range("C3")
    vcherche = "$" & replace(.Offset(0, -2).Address, "$", "")  
    .Formula = "=VLookUp(" & vcherche &", Feuil1!B3:J" & NbJ & ", 9, false)"
    .autofill destination:=Sheets("Alfa").Range("C3:C100") '<<<<< adapter
End with

End sub

Sinon, en examinant bien le tableau, voire en créant un tableau structuré, il y aurait la possibilité de rendre le code encore plus dynamique.

Cdlt,

Encore merci aux contributeurs.

Je ne suis qu'un modeste retraité un peu fan de vb, html, et autres wordpress. Mais j'ai appris sur le tas et sur le tard. Il me manque donc beaucoup de "langage" que je découvre au fil de mes besoins. Et des conseils et solutions apportées par les "pros"

Merci à eux

Rechercher des sujets similaires à "vlookup plage variable"