Syntaxe formule RechercheV avec variable

Bonjour,

Je souhaite insérer dans des cellules une fonction recherchev. J'ai un problème de syntaxe et j'aimerai savoir comment y remédier. Voici le code:

Sub kilometre()
Dim x As Range

ActiveSheet.Name = "Export"
dl = Worksheets("export").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To dl
Range("J" & i).Value = Range("E" & i).Value - Range("D" & i).Value
Range("K" & i).Formula = "=RECHERCHEV(H1:H" & i;'Proposition facturation'!$F$2:$L$299;7;FAUX)"
Next

End Sub

L'erreur de syntaxe serait sur le H1:H" de la 7éme ligne du code à mon avis.

Merci beaucoup,

Bonjour

RECHERCHEV cherche une valeur, donc une cellule pas une plage

As-tu une ancienne version MAC ?

Sinon modifie ta version Excel, 2008 étant peut-être une révision de 365... où RECHERCHEV peut éventuellement utiliser une page mais dans ce cas il faut préciser si tu récupères une plage ou une valeur

Bonjour 78chris,

La syntaxe ressemble à ceci car j'ai essayé beaucoup de manières différentes pour écrire ce que je voulais. En syntaxe VBA, j'aurai mis "H" & i, pour avoir la valeur de la cellule Hi mais étant donné que j'insère une formule Excel, j'ai l'impression que cela se passe différemment.
Pour répondre à ta question, je suis sur PC

RE

Donc tu as 365. Il faut modifier ton profil.

Tu ne réponds pas vraiment à la question : que doit chercher RECHERCHEV concrètement ?

Je ne saurais trop te conseiller de travailler tableau structuré car mettre une plage finie comme $F$2:$L$299 dans du VBA (ou dans une formule) n'est pas conseillée

Re,

Que dois-je modifier concernant la version d'Excel?
La fonction RechercheV est la pour rechercher la valeur présente en "I" ("H" dans le code présenté suite à des changements), un nombre entier compris entre 100 et 1000, dans la plage de recherche $F$2:$L$299 de la feuille("Proposition facturation"). Cette plage de recherche ne va jamais bouger, la feuille va être protégée afin d'éviter des erreurs d'inattention. Cela va nous renvoyer la valeur de la 7eme colonne

Si tu te demandes pourquoi je passe par du VBA plutôt que de faire directement la formule dans une cellule, c'est parce que je dois rendre l'utilisation de ce fichier extrêmement facile pour que les salariés ne fassent pas d'erreur par la suite, donc en 1 clic, ils pourront exporter les données de nos logiciels et avoir le résultat directement.

J'espère que je me suis bien exprimé, n'hésite pas à me demander plus de précision si besoin!

Merci,

RE

Comme déjà dit ta version Excel est probablement 365 : Fichier, Compte : en haut de la page

Tu ne réponds pas clairement à la question où bien tu cherche UNE Valeur ou bien une plage de valeurS

Fait à minima une copie d'écran

Re,

Désolé pour le long temps de réponse.

Je te joins la capture d'écran de la version d'Excel. J'ai bien un abonnement 365 mais la version d'Excel est affichée comme celle de 2008.

La fonction RechercheV est bien la pour rechercher UNE valeur. Pour te donner un exemple, dans la fonction affectée à la cellule K1 devrait être de la forme: =RECHERCHEV(I1;'Proposition facturation'!$F$2:$L$299;7;FAUX). Celle de K2: =RECHERCHEV(I2;'Proposition facturation'!$F$2:$L$299;7;FAUX) et ainsi de suite. (J'ai remplacé "H" par "I" suite à des modifs de l'export)

Mon problème se situe donc au niveau de l'écriture d'une fonction Excel avec variable dans VBA. L'équivalent en VBA serait: Application.VLookUp(Range("I" & i).Value; Sheets("Proposition facturation").Range("F2:L299");7;false)

image image

Bonjour

2008 est la révision : ta version est bien 365 et c'est cela qu'il faut indiquer dans ton profil

En I1 tu as un titre donc on commence par I2 en K2

Soit tu utilises RECHERCHEV et il faut utiliser FormulaLocal soit tu utilises Formula et tu doit écrire la formule selon la norme US

Inutile de faire une boucle, on peut mettre la formule directement sur le range

Range("K2:K" & dl).FormulaR1C1 = "=VLOOKUP(RC[-2],'Proposition facturation'!R2C6:R299C12,7,0)"

Comme déjà dit en utilisant des tableaux structurés, qui existent dans Excel depuis 18 ans, on peut nettement simplifier : plus besoin de vieux codes comme

dl = Worksheets("export").Cells(Rows.Count, 1).End(xlUp).Row

Ceci, où NomTableau est à remplacer par le nom du tableau structuré de la feuille Proposition facturation, et avec la plage de la feuille Export également sous forme de tableau structuré avec la colonne K titrée MaRecherche suffit à remplir toute la colonne en 1 unique ligne de code

Worksheets("Export").ListObjects(1).ListColumns("MaRecherche").DataBodyRange.Formula = "=VLOOKUP([@[Ligne départ code]],NomTableau,7,0)"

Les tableaux, les colonnes peuvent être déplacés, le code continue à fonctionner...

Re,

Merci beaucoup, ton code marche parfaitement. J'ai pu apprendre pas mal de chose grâce à ton retour!

Un bon week-end à toi :)

Rechercher des sujets similaires à "syntaxe formule recherchev variable"