OVH Cloud OVH Cloud

formule dans un champ numérique

5 réponses
Avatar
jd
Bonjour,

J'ai un champ numérique dans un formulaire.
je voudrais que l'opérateur puisse rentrer dans le champ soit un nombre (ex
:15) soit une formule (ex :10+5)

ensuite avec vba je remplace le contenu par EVAL(10+5) et ça marche.

mon problème c'est d'empêcher access d'envoyer le message "Valeur incorrecte
pour ce champ".
Dans quel événement de contrôle je dois faire mon opération, "aprés maj",
"sur sortie", "sur perte focus"

Merci

5 réponses

Avatar
Raymond [mvp]
Bonsoir.

je ne sais pas si ça fonctionne mais si tu le mets sur l'événement
BeforeUpdate du champ tu devrais pouvoir le convertir par ton eval.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"jd" a écrit dans le message de
news:%23qGq$
Bonjour,

J'ai un champ numérique dans un formulaire.
je voudrais que l'opérateur puisse rentrer dans le champ soit un nombre
(ex

:15) soit une formule (ex :10+5)

ensuite avec vba je remplace le contenu par EVAL(10+5) et ça marche.

mon problème c'est d'empêcher access d'envoyer le message "Valeur
incorrecte

pour ce champ".
Dans quel événement de contrôle je dois faire mon opération, "aprés maj",
"sur sortie", "sur perte focus"

Merci







Avatar
jd
Non, j'ai testé aussi, mais apparemment cela ne fonctionne pas
access me met toujours le message "Valeur incorrecte pour ce champ".

je cherche ...


"Raymond [mvp]" a écrit dans le message de
news:
Bonsoir.

je ne sais pas si ça fonctionne mais si tu le mets sur l'événement
BeforeUpdate du champ tu devrais pouvoir le convertir par ton eval.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"jd" a écrit dans le message de
news:%23qGq$
Bonjour,

J'ai un champ numérique dans un formulaire.
je voudrais que l'opérateur puisse rentrer dans le champ soit un nombre
(ex

:15) soit une formule (ex :10+5)

ensuite avec vba je remplace le contenu par EVAL(10+5) et ça marche.

mon problème c'est d'empêcher access d'envoyer le message "Valeur
incorrecte

pour ce champ".
Dans quel événement de contrôle je dois faire mon opération, "aprés
maj",


"sur sortie", "sur perte focus"

Merci











Avatar
Yann
Salut,
Cela pourrait-il être du au fait que ta zone texte est
liée à un champ numérique dans une table ? Si oui, alors
met une zone de texte indépendante que tu mets à la
valeur de ton champ sur l'évènement Form_Current et tu
fais le calcule dans ton champ indépendant :o)

Private Sub Form_Current()
Me.MyCalc = Me.MyNum
End Sub

Private Sub MyCalc_AfterUpdate()
Me.MyCalc = Eval(Me.MyCalc)
Me.MyNum = Me.MyCalc
End Sub


Bye
Yann

-----Message d'origine-----
Non, j'ai testé aussi, mais apparemment cela ne
fonctionne pas

access me met toujours le message "Valeur incorrecte
pour ce champ".


je cherche ...


"Raymond [mvp]" a écrit
dans le message de

news:
Bonsoir.

je ne sais pas si ça fonctionne mais si tu le mets sur
l'événement


BeforeUpdate du champ tu devrais pouvoir le convertir
par ton eval.



--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"jd" a écrit dans
le message de


news:%23qGq$
Bonjour,

J'ai un champ numérique dans un formulaire.
je voudrais que l'opérateur puisse rentrer dans le
champ soit un nombre



(ex
:15) soit une formule (ex :10+5)

ensuite avec vba je remplace le contenu par EVAL
(10+5) et ça marche.




mon problème c'est d'empêcher access d'envoyer le
message "Valeur



incorrecte
pour ce champ".
Dans quel événement de contrôle je dois faire mon
opération, "aprés



maj",
"sur sortie", "sur perte focus"

Merci











.





Avatar
jd
Effectivement, il s'agit d'une zone de texte liée à un champ numérique de ma
table (dépendant)

J'ai bien pensé à la solution que vous évoquez, un contrôle indépendant dont
le résultat est envoyé au champ numérique.

Malheureusement mon formulaire est affiché en mode continu, ce qui fait que
ce contrôle indépendant est affiché sur chaque enregistrement avec la même
valeur (la dernière saisie).
Pour l'instant cela ne répond pas vraiment à mon souhait qui est
d'intercepter l'erreur access et de tenter de renvoyer une valeur
correcte...

je cherche



"Yann" a écrit dans le message de news:
969c01c4971b$a808b2b0$
Salut,
Cela pourrait-il être du au fait que ta zone texte est
liée à un champ numérique dans une table ? Si oui, alors
met une zone de texte indépendante que tu mets à la
valeur de ton champ sur l'évènement Form_Current et tu
fais le calcule dans ton champ indépendant :o)

Private Sub Form_Current()
Me.MyCalc = Me.MyNum
End Sub

Private Sub MyCalc_AfterUpdate()
Me.MyCalc = Eval(Me.MyCalc)
Me.MyNum = Me.MyCalc
End Sub


Bye
Yann

-----Message d'origine-----
Non, j'ai testé aussi, mais apparemment cela ne
fonctionne pas

access me met toujours le message "Valeur incorrecte
pour ce champ".


je cherche ...


"Raymond [mvp]" a écrit
dans le message de

news:
Bonsoir.

je ne sais pas si ça fonctionne mais si tu le mets sur
l'événement


BeforeUpdate du champ tu devrais pouvoir le convertir
par ton eval.



--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"jd" a écrit dans
le message de


news:%23qGq$
Bonjour,

J'ai un champ numérique dans un formulaire.
je voudrais que l'opérateur puisse rentrer dans le
champ soit un nombre



(ex
:15) soit une formule (ex :10+5)

ensuite avec vba je remplace le contenu par EVAL
(10+5) et ça marche.




mon problème c'est d'empêcher access d'envoyer le
message "Valeur



incorrecte
pour ce champ".
Dans quel événement de contrôle je dois faire mon
opération, "aprés



maj",
"sur sortie", "sur perte focus"

Merci











.





Avatar
Yann
Re-,
Alors superpose les 2 champs et tu rends visible ton
champ indépendant et cache ton champ numérique sur
Form_Current... Et voilà, le tour est joué.. ;o)

Bye
Yann

-----Message d'origine-----
Effectivement, il s'agit d'une zone de texte liée à un
champ numérique de ma

table (dépendant)

J'ai bien pensé à la solution que vous évoquez, un
contrôle indépendant dont

le résultat est envoyé au champ numérique.

Malheureusement mon formulaire est affiché en mode
continu, ce qui fait que

ce contrôle indépendant est affiché sur chaque
enregistrement avec la même

valeur (la dernière saisie).
Pour l'instant cela ne répond pas vraiment à mon souhait
qui est

d'intercepter l'erreur access et de tenter de renvoyer
une valeur

correcte...

je cherche



"Yann" a écrit dans le message
de news:

969c01c4971b$a808b2b0$
Salut,
Cela pourrait-il être du au fait que ta zone texte est
liée à un champ numérique dans une table ? Si oui, alors
met une zone de texte indépendante que tu mets à la
valeur de ton champ sur l'évènement Form_Current et tu
fais le calcule dans ton champ indépendant :o)

Private Sub Form_Current()
Me.MyCalc = Me.MyNum
End Sub

Private Sub MyCalc_AfterUpdate()
Me.MyCalc = Eval(Me.MyCalc)
Me.MyNum = Me.MyCalc
End Sub


Bye
Yann

-----Message d'origine-----
Non, j'ai testé aussi, mais apparemment cela ne
fonctionne pas

access me met toujours le message "Valeur incorrecte
pour ce champ".


je cherche ...


"Raymond [mvp]" a écrit
dans le message de

news:
Bonsoir.

je ne sais pas si ça fonctionne mais si tu le mets sur
l'événement


BeforeUpdate du champ tu devrais pouvoir le convertir
par ton eval.



--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"jd" a écrit dans
le message de


news:%23qGq$
Bonjour,

J'ai un champ numérique dans un formulaire.
je voudrais que l'opérateur puisse rentrer dans le
champ soit un nombre



(ex
:15) soit une formule (ex :10+5)

ensuite avec vba je remplace le contenu par EVAL
(10+5) et ça marche.




mon problème c'est d'empêcher access d'envoyer le
message "Valeur



incorrecte
pour ce champ".
Dans quel événement de contrôle je dois faire mon
opération, "aprés



maj",
"sur sortie", "sur perte focus"

Merci











.




.