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

Validation de saisie

2 réponses
Avatar
Gloops
Bonjour tout le monde,

Une zone de texte, sur un formulaire, pr=E9sente les propri=E9t=E9s "Vali=
de=20
si" et "Message si erreur", qui permettent de v=E9rifier le respect d'une=
=20
condition par la valeur saisie. Par exemple, si j'y mets respectivement=20
"<32000" et "Cette valeur n'est reconnue que jusqu'=E0 32000", et que=20
l'utilisateur saisit 32100, il obtient bien le message "Cette valeur=20
n'est reconnue que jusqu'=E0 32000.

Bon, jusque l=E0, tout va bien.
Mais maintenant, =E0 supposer que la zone de saisie soit li=E9e =E0 un ch=
amp=20
entier (donc acceptant des valeurs de -32768 =E0 +32767), si on saisit=20
40000, l'utilisateur obtient le message d'erreur standard de d=E9passemen=
t=20
de taille, et pour peu qu'on ait install=E9 une version anglaise, la=20
petite nana accourt me voir affol=E9e, "la machine m'a lanc=E9 des=20
insultes". C'est vrai qu'on peut faire mieux comme clart=E9.

Je m'en suis sorti comme =E7a :

Private Sub txtNbColis_Change()
If Val(txtNbColis.Text) > 32767 Then
MsgBox "Le nombre de colis n'est reconnu que jusqu'=E0 32767"
txtNbColis =3D ""
End If
End Sub

Ce qui veut dire que si l'utilisateur met quelque chose qui d=E9passe la =

capacit=E9, on efface tout, et on recommence.

Si je ne fais pas =E7a, dans la mesure o=F9 les BeforeUpdate tant du=20
contr=F4le que du formulaire ne sont pas ex=E9cut=E9s tant que la valeur =

saisie d=E9passe la capacit=E9, si apr=E8s avoir eu mon message l'utilisa=
teur=20
demande quand m=EAme la validation, il obtient cette fois le message=20
standard. On a fait un progr=E8s en fournissant d'abord un message plus=20
clair, mais c'est dommage de s'arr=EAter en route.

Est-ce qu'on peut faire encore mieux ? Est-ce vraiment obligatoire=20
d'effacer le champ de saisie pour =E9viter que la commande de validation =

d=E9clenche le message standard ?

2 réponses

Avatar
3stone
Salut,


Je trouve que l'erreur renvoyée n'est pas si bizarre que ca...

Si on demande l'age ou lun taux de TVA et que l'on saisi
36478, il faut bien s'attendre à ramasser une injurebox ;-)

Cela dit, dans la table, tu peux également spécifier un
message d'erreur pour le cas où...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)




Gloops wrote:
Bonjour tout le monde,

Une zone de texte, sur un formulaire, présente les propriétés "Valide
si" et "Message si erreur", qui permettent de vérifier le respect
d'une condition par la valeur saisie. Par exemple, si j'y mets
respectivement "<32000" et "Cette valeur n'est reconnue que jusqu'à
32000", et que l'utilisateur saisit 32100, il obtient bien le message
"Cette valeur n'est reconnue que jusqu'à 32000.

Bon, jusque là, tout va bien.
Mais maintenant, à supposer que la zone de saisie soit liée à un champ
entier (donc acceptant des valeurs de -32768 à +32767), si on saisit
40000, l'utilisateur obtient le message d'erreur standard de
dépassement de taille, et pour peu qu'on ait installé une version
anglaise, la petite nana accourt me voir affolée, "la machine m'a
lancé des insultes". C'est vrai qu'on peut faire mieux comme clarté.

Je m'en suis sorti comme ça :

Private Sub txtNbColis_Change()
If Val(txtNbColis.Text) > 32767 Then
MsgBox "Le nombre de colis n'est reconnu que jusqu'à 32767"
txtNbColis = ""
End If
End Sub

Ce qui veut dire que si l'utilisateur met quelque chose qui dépasse la
capacité, on efface tout, et on recommence.

Si je ne fais pas ça, dans la mesure où les BeforeUpdate tant du
contrôle que du formulaire ne sont pas exécutés tant que la valeur
saisie dépasse la capacité, si après avoir eu mon message
l'utilisateur demande quand même la validation, il obtient cette fois
le message standard. On a fait un progrès en fournissant d'abord un
message plus clair, mais c'est dommage de s'arrêter en route.

Est-ce qu'on peut faire encore mieux ? Est-ce vraiment obligatoire
d'effacer le champ de saisie pour éviter que la commande de validation
déclenche le message standard ?
Avatar
Gloops
3stone a écrit, le 22/01/2011 14:44 :
Salut,


Je trouve que l'erreur renvoyée n'est pas si bizarre que ca...

Si on demande l'age ou lun taux de TVA et que l'on saisi
36478, il faut bien s'attendre à ramasser une injurebox ;-)

Cela dit, dans la table, tu peux également spécifier un
message d'erreur pour le cas où...




Ah ben oui, c'est ce que j'ai fait.
Si la valeur saisie est entre la limite que j'ai saisie et la limite
imposée par le type de champ, c'est bien mon message, qui s'affiche.

Si on est au-dessus, effectivement quand on dit à l'utilisateur que ç a
fait trop il s'en rend bien compte, mais si on lui dit ça dans une
langue qui n'est pas la sienne, il se demande si la base est plantée.

Alors, j'efface tout ...
C'est pour ça que je me demandais si il y avait plus fin comme réacti on,
mais effectivement on devrait s'y faire.