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

Passer un argument à une fonction Vb depuis une base de données.

2 réponses
Avatar
Nekfra
Je travaille avec acess 2000
Je d=E9veloppe une petite base de donn=E9es.
J=92ai =E9crit une fonction f en visual basic qui prend pour argument un =

entier x et le r=E9sultat f(x) est une string.
Quand je teste cette fonction en lui passant un argument entier =E7a=20
marche tr=E8s bien.
Mais quand, depuis ma base de donn=E9es, dans une macro je fais appel =E0=
=20
cette fonction en employant l=92expression
f(Formulaires![F_Tampon]![Nombre]), je re=E7ois le message d=92erreur sui=
vant :
Impossible d=92analyser l=92expression =AB F(Formulaires![F_Tampon]![Nomb=
re] =BB

D=92o=F9 ma question : comment faire pour que visual basic puisse=20
interpr=E9ter cette expression ou comment m=92en sortir autrement ?

2 réponses

Avatar
Nekfra
Bonjour,

1/ Pour évaluer l'expression : f(Formulaires![F_Tampon]![Nombre]), il faut
que le formulaire soit ouvert, est-ce le cas ?
2/ Je ne comprends pas pourquoi vous faites une fonction VBA que vous t estez
avec une macro !!! Pourquoi ne pas appeler la fonction directementt dep uis
l'objet lui-même ?
3/ Si vous voulez tester la valeur renvoyée par F(x) avec l'objet fermé, il
faut interroger la base, pointer l'enregistrement (Méthode Seek ou avec un
Recordset DAO...) et ensuite passer la valeur...

Bon courage


Merci de m'avoir répondu.

Je précise:

Le formulaire est bien sur ouvert

Je teste avec une macro, car en plus de l'appel de la fonction, la macro
fait bien autre chose. Si ça marchait, je aurais converti ensuite la
macro en module.

Mais ma question est en fait un peu plus générale, comment, par une
macro, passer comme argument à une fonction VB la valeur d'une zone de
texte d'un formulaire (ouvert bien entendu) ? Est-ce possible ?

Même si ma question semble un peu tordue, j'ai de bonnes raisons de
souhaiter le faire si c'est possible.

Avatar
Argyronet
La propriété événement "Sur clic" où je sélectionne ma macro qui contient
"Exécuter code" où "Nom fonction" est défini avec :
F(Forms![MonForm]![MonChamp])
marche bien... Il faut mettre Forms et pas Formulaires...
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour,

1/ Pour évaluer l'expression : f(Formulaires![F_Tampon]![Nombre]), il faut
que le formulaire soit ouvert, est-ce le cas ?
2/ Je ne comprends pas pourquoi vous faites une fonction VBA que vous testez
avec une macro !!! Pourquoi ne pas appeler la fonction directementt depuis
l'objet lui-même ?
3/ Si vous voulez tester la valeur renvoyée par F(x) avec l'objet fermé, il
faut interroger la base, pointer l'enregistrement (Méthode Seek ou avec un
Recordset DAO...) et ensuite passer la valeur...

Bon courage


Merci de m'avoir répondu.

Je précise:

Le formulaire est bien sur ouvert

Je teste avec une macro, car en plus de l'appel de la fonction, la macro
fait bien autre chose. Si ça marchait, je aurais converti ensuite la
macro en module.

Mais ma question est en fait un peu plus générale, comment, par une
macro, passer comme argument à une fonction VB la valeur d'une zone de
texte d'un formulaire (ouvert bien entendu) ? Est-ce possible ?

Même si ma question semble un peu tordue, j'ai de bonnes raisons de
souhaiter le faire si c'est possible.