Passer un argument à une fonction Vb depuis une base de données.
2 réponses
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 ?
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.
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.
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.
Même si ma question semble un peu tordue, j'ai de bonnes raisons de souhaiter le faire si c'est possible.
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.
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.
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.