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

calcul dans un champ formulaire et resultat dans champ suivant

5 réponses
Avatar
jean
Bonjour,
désolé, j'ai déjà vu la réponse à cette question quelque part, mais je
ne la retrouve pas dans les archives.
Mon problème : j'ai une table, avec deux champs : "texte1" et "montant1".
Dans le formulaire basé sur cette table, je saisis du texte dans
"texte1" et la valeur dans "montant1". Parfois, je souhaite saisir : "+1
+6 -2 " dans "texte1" et lorsque je valide, je veux passer au champ
"montant1" qui m'affichera le résultat "+ 5". Le champ "montant1" doit
pouvoir être modifié.

Merci d'avance si vous pouvez me dépanner

JP

5 réponses

Avatar
jean
Bonjour,
J'ai trouvé quelque chose, mais ça ne marche pas vraiment comme je le
souhaite :
Dans la zone "texte1", j'ai ajouté sur l'évènement "perte focus" :

Private Sub texte1_LostFocus()
Me.montant1 = Eval(Me.texte1)
End Sub

si je saisis "10+3" dans texte1, j'obtiens "13" dans montant1, OK. Je
valide montant1 par "entrée" (je peux le modifier si je veux), je passe
à l'enregistrement suivant, toujours OK.
Par contre, là, si je veux retourner en arrière dans "montant1" de
l'enregistrement précédent, j'obtiens un message d'erreur :

Erreur d'exécution "94":
Utilisation incorrecte de Null

Merci d'avance pour votre réponse.


JP
Avatar
Fabien
Bonjour,
J'ai trouvé quelque chose, mais ça ne marche pas vraiment comme je le
souhaite :
Dans la zone "texte1", j'ai ajouté sur l'évènement "perte focus" :

Private Sub texte1_LostFocus()
Me.montant1 = Eval(Me.texte1)
End Sub

si je saisis "10+3" dans texte1, j'obtiens "13" dans montant1, OK. Je
valide montant1 par "entrée" (je peux le modifier si je veux), je passe
à l'enregistrement suivant, toujours OK.
Par contre, là, si je veux retourner en arrière dans "montant1" de
l'enregistrement précédent, j'obtiens un message d'erreur :

Erreur d'exécution "94":
Utilisation incorrecte de Null

Merci d'avance pour votre réponse.


JP
Bonjour,

Avec un petit eval(nz(me.texte1,0)) ça devrait passer :-)
@+

Avatar
jean
Avec un petit eval(nz(me.texte1,0)) ça devrait passer :-)


merci pour la réponse rapide. En effet, ça marche, mais si je mets du
texte dans texte1, j'ai l'erreur suivante :

erreur d'exécution 2482 :
Impossible pour Access de trouver le nom 'xxx' entré dans l'expression.

Une idée ?

Merci d'avance

JP

Avatar
Fabien

Avec un petit eval(nz(me.texte1,0)) ça devrait passer :-)


merci pour la réponse rapide. En effet, ça marche, mais si je mets du
texte dans texte1, j'ai l'erreur suivante :

erreur d'exécution 2482 :
Impossible pour Access de trouver le nom 'xxx' entré dans l'expression.

Une idée ?

Merci d'avance

JP
Salut,

Quand tu dis du texte c'est .... du texte, genre 'toto est parti a la
plage' ?
ou une expression mathématique genre '5+2' ?
Si c'est la premiére option alors je ne vois pas comment contourner le
probléme autrement qu'en testant ton expression avant de la soumettre a
la fonction eval().


Avatar
jean
Bonjour,

Avec un petit eval(nz(me.texte1,0)) ça devrait passer :-)



ça marche, mais si je mets du
texte dans texte1, j'ai l'erreur suivante :

erreur d'exécution 2482 :
Impossible pour Access de trouver le nom 'xxx' entré dans l'expression.


Quand tu dis du texte c'est .... du texte, genre 'toto est parti a la

plage' ?
ou une expression mathématique genre '5+2' ?
Si c'est la premiére option alors je ne vois pas comment contourner le
probléme autrement qu'en testant ton expression avant de la soumettre a
la fonction eval().


En effet, c'est du texte pur (désignation d'une vente). J'ai donc résolu
le problème avec un test un peu brutal, mais ça marche parfaitement
dans tous les sens.

Private Sub texte1_AfterUpdate()
On Error GoTo fin
Me.montant = Eval(Nz(Me.Texte1, 0))
fin:
End Sub

Merci beaucoup pour ton aide.

JP