Validation de saisie

Le
Gloops
Bonjour tout le monde,

Une zone de texte, sur un formulaire, présente les propriétés "Vali=
de
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 ch=
amp
entier (donc acceptant des valeurs de -32768 à +32767), si on saisit
40000, l'utilisateur obtient le message d'erreur standard de dépassemen=
t
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'utilisa=
teur
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 ?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #23043591
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 ?
Gloops
Le #23045551
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.
Publicité
Poster une réponse
Anonyme