Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Evaluer une formule Excel en VBA

3 réponses
Avatar
Rv
Bonjour,

Est-il possible d'utiliser une formule comme recherchev directement dans
le VBA sans utiliser une cellule d'une feuille:
Imaginons une feuille client avec les colonnes Code et Nom
Je voudrais obtenir le résultat de la fonction recherchev à partir du
VBA sans utiliser cette formule écrite dans une cellule du classeur. Quelque
chose comme:

dim strNomClient as string
dim codeClient as long

codeClient = 10
strNomClient=recherchev(codeClient,client!A1:B20,2,faux)

Evidement cette syntaxe ne fonctionne pas. D'où la question!
J'ai bien vu la fonction evaluate ou [], mais apparement dans ce cas il
faut que la formule soit associée à une cellule car des syntaxes comme
application.Evaluate("recherchev(3;Client!A1:B17;2;faux)") ou
application.Evaluate("recherchev(3,Client!A1:B17,2,faux)") renvoient une
erreur.

Merci d'avance pour vos réponses.

Rv

3 réponses

Avatar
AV
Est-il possible d'utiliser une formule comme recherchev directement dans
le VBA sans utiliser une cellule d'une feuille:


Absolument !
La méthode "Evaluate" t'ouvre les bras ! ;-)

Pour ton exemple :
codeClient = 100
strNomClient = Evaluate("VLOOKUP(" & codeClient & ",client!A1:B20,2,false)")

Pour beaucoup d'autres exemples :
http://disciplus.simplex.free.fr/classeursxl/av-evaluate.zip

AV

Avatar
Bonjour Rv,
strNomClient = WorksheetFunction.VLookup(codeClient,
Sheets("client").Range("A1:B20"), 2, 0)
Philippe

"Rv" a écrit dans le message de
news:OJ$
Bonjour,

Est-il possible d'utiliser une formule comme recherchev directement
dans

le VBA sans utiliser une cellule d'une feuille:
Imaginons une feuille client avec les colonnes Code et Nom
Je voudrais obtenir le résultat de la fonction recherchev à partir du
VBA sans utiliser cette formule écrite dans une cellule du classeur.
Quelque

chose comme:

dim strNomClient as string
dim codeClient as long

codeClient = 10
strNomClient=recherchev(codeClient,client!A1:B20,2,faux)

Evidement cette syntaxe ne fonctionne pas. D'où la question!
J'ai bien vu la fonction evaluate ou [], mais apparement dans ce cas
il

faut que la formule soit associée à une cellule car des syntaxes comme
application.Evaluate("recherchev(3;Client!A1:B17;2;faux)") ou
application.Evaluate("recherchev(3,Client!A1:B17,2,faux)") renvoient une
erreur.

Merci d'avance pour vos réponses.

Rv




Avatar
Rv
Magnifique! Tout était dans la traduction français anglais! J'y avais pensé
étant un habitué d'access mais je n'avais pas trouvé la traduction.
Un grand merci pour la réponse et pour le lien!

Rv