Impossible d'ecrire VLookup

Bonjour,

Je bug sur une fonction Vlookup. Je tourne en vain depuis plusieurs heures sur les forums.

La formule tel que l’enregistrement macro fonctionne

, 'Range("J5").Select
'ActiveCell.FormulaR1C1 = _
    "=+IF(AND(ISBLANK(R[-3]C[-9]),R[3]C[-5]<>""""),VLOOKUP(R[3]C[-5],'Base de donnée'!C[-2]:C,3,0),VLOOKUP(R[-3]C[-9],'Base de donnée'!C[-2]:C,3,0))"

mais j’ai besoin de m’affranchir des index type R[3]C[-5] ,

le tableau devant évolué.

Je l’ai écrit d’un milliard de façon différente. Rien n’y fait

Ce que je souhaite :

Range("J5") = Vlookup (("E8"), sheets.(base de donnée).Columns("H:J"), 3, false )

Merci de toute l’aide que vous pouvez m’apporter.

(Impossible de vous joindre le fichier source – données sensibles)


J'ai oublié de préciser que la recherche est dans une fonction si qui marche

    '--------ca_marche----------
'If Range("a2") = "" And Range("e8") <> "" Then _
'Range("f5").Value = Range("E8")
    '--------------------

c'est donc bien a la palce du code Range("E8") que je dois inclure ma recherhcev...

Bonjour ,

à tester avec :

Range("J5") = Application.WorksheetFunction.Vlookup (("E8"), sheets.(base de donnée).Columns("H:J"), 3, false )

Ca marche pas :

Erreur de compilation

Instruction incorrecte à l'exterieur d'un procédure...

Merci tout de même minanse


et je l'avais déja essayé...

c'est possible d'avoir un fichier joint ? (un fichier exemple ou bidon ..)


j'ai une petit question sur votre code :

Range("J5") = Vlookup (("E8"), sheets.(base de donnée).Columns("H:J"), 3, false )

c'est "E8" que vous cherche ou la valeur de la cellule E8 ?

Non c'est la valeur qui est en E8.

Mais je me suis trompé ( j'avais rajouté une ligne de code a la c* dans la macro )

le message est : Erreur de compilation / Erreur de syntaxe

Bonjour,

Si tu as un message d'instruction incorrecte à l'extérieur d'une procédure, c'est tout simplement que tu ne l'as pas mis à l'intérieur d'une procédure. Tu es censé ne pas ignorer en utilisant VBA que tout code exécutable doit être à l'intérieur d'une procédure...

Quant à ton code :

Range("J5") = Vlookup (("E8"), sheets.(base de donnée).Columns("H:J"), 3, false )

Il est évidemment totalement incorrect .

Je trouve généralement pas malin de vouloir insérer des formules avec VBA, sachant qu'une formule s'insére manuellement et plus vite... Mais quand on veut s'adonner à ce sport on en respecte les règles pour que ça marche...

En fait, au vu de l'expression ci-dessus, on ne sais plus si tu veux mettre une formule ou le résultat du calcul !

Pour mettre une formule, tu disposes de 4 modalités (hors matricielles) dont FormulaR1C1 n'est qu'une d'elles. Il faut bien évidemment que la formule corresponde à la modalité d'insertion utilisée !

Pour faire le calcul en VBA et insérer son résultat, tu peux utiliser des moyens VBA (ce que je recommanderais dans la plupart des cas...) mais si tu veux utiliser une fonction Excel, il faut le dire à VBA !!!

Ah ! et le faire selon les règles VBA (et non Excel !)

Cordialement.

une proposition :

 
 Range("J5") = application.worksheetfunction.Vlookup (range("E8"), sheets("base de donnée").Columns("H:J"), 3, false ) 
 

mais sinon la méthode "find" en vba est très bien aussi comme le dit Mferrand en vba on utilise les fonctions vba

Merci Minanse Ha, j'avais un doute...vlookup n'est pas une fonction VBA. Je checke tout de suite la focntion find.

Quand a MFerrand, sa réponse ne m'apporte aucune aide, tout a fait inadéquate.

tout formule excel (comme vLookup) peut être utiliser en vba avec

application.worksheetfunction.nomdeFormule

avant

normalement le code du post précédent devrai marcher

Minanse,

ca marche. Un grand merci.

Quand a MFerrand, sa réponse ne m'apporte aucune aide, tout a fait inadéquate.

Tout à fait normal ! Je n'ai pas cherché à apporter de solution (tant que les pré-requis pour qu'elle bien reçue ne sont pas réunies...)

Cordialement.

Rechercher des sujets similaires à "impossible ecrire vlookup"