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

controler la saisie d'un nombre dans une variable texte à l'écran

9 réponses
Avatar
thierry
Bonjour,

j'ai fais un écran dans lequel il y a des text box.
Dans 1 de ces text box, l'utilisateur doit rentrer une somme avec deux
décimales. Pour être sur que la somme soit correcte, je fais une
conversion avec détection d'erreur:


On Error GoTo 0
montant = CVar(txt_montant.Text)
On Error GoTo erreur_convertion


Exit Sub

erreur_convertion:
MsgBox ("le montant est incorrect") & Err.Number



si je rentre un chiffre correcte, cela se passe bien.
Par contre, si je rentre un chiffre incorrecte (par exemple un point
au lieu de la virgule), cela me met :
Erreur d'exécution 13
Type incompatible

je pensais que normalement ce genre d'erreur était vu par le ON ERROR
ce qui apparement ne fonctionne pas.

De plus, comment puis je imposer un format de saisie?

Cordialement

Thierry

9 réponses

Avatar
marcel Bultez
On Error GoTo erreur_convertion
montant = CVar(txt_montant.Text)
On Error GoTo 0
Avatar
ng
Salut,

Essaye en employant IsNumeric pour véfifier.

If Not IsNumeric(MaValeur) Then MsgBox "Valeur incorrecte !"

On peut aussi tester/convertir avec Val(), Val converti une chaine en nombre
(renvoit 0 si la chaine n'est pas numérique), plus d'infos dans l'aide de
VB.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


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

Bonjour,

j'ai fais un écran dans lequel il y a des text box.
Dans 1 de ces text box, l'utilisateur doit rentrer une somme avec deux
décimales. Pour être sur que la somme soit correcte, je fais une
conversion avec détection d'erreur:


On Error GoTo 0
montant = CVar(txt_montant.Text)
On Error GoTo erreur_convertion


Exit Sub

erreur_convertion:
MsgBox ("le montant est incorrect") & Err.Number



si je rentre un chiffre correcte, cela se passe bien.
Par contre, si je rentre un chiffre incorrecte (par exemple un point
au lieu de la virgule), cela me met :
Erreur d'exécution 13
Type incompatible

je pensais que normalement ce genre d'erreur était vu par le ON ERROR
ce qui apparement ne fonctionne pas.

De plus, comment puis je imposer un format de saisie?

Cordialement

Thierry




Avatar
Bonjour,

Pourquoi ne pas gérer l'appui des touches autorisées à
partir de l'évènement KeyPress afin d'éviter ce genre de
problème.

Par exemple, pour n'autoriser que les chiffres et la
virgule, dans l'évènement KeyPress txtText1 :

If (KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii <>
vbKeyDelete Or InStr(1, txtText1, ",") <> 0) And KeyAscii
<> 8 Then KeyAscii = 0

Christophe

-----Message d'origine-----
Bonjour,

j'ai fais un écran dans lequel il y a des text box.
Dans 1 de ces text box, l'utilisateur doit rentrer une


somme avec deux
décimales. Pour être sur que la somme soit correcte, je


fais une
conversion avec détection d'erreur:


On Error GoTo 0
montant = CVar(txt_montant.Text)
On Error GoTo erreur_convertion


Exit Sub

erreur_convertion:
MsgBox ("le montant est incorrect") & Err.Number



si je rentre un chiffre correcte, cela se passe bien.
Par contre, si je rentre un chiffre incorrecte (par


exemple un point
au lieu de la virgule), cela me met :
Erreur d'exécution 13
Type incompatible

je pensais que normalement ce genre d'erreur était vu par


le ON ERROR
ce qui apparement ne fonctionne pas.

De plus, comment puis je imposer un format de saisie?

Cordialement

Thierry


.



Avatar
thierry
ok, je viens d'essayer en changeant de place mon on error et ça
marche. apparement c'est le fait de mettre un on error qui génère un
gestionaire d'erreur actif .

Par contre, je garde les 2 autres méthodes sous le coude pour les
utiliser plus tard

Le Thu, 19 Feb 2004 12:34:24 +0100, thierry
a écrit :

Bonjour,

j'ai fais un écran dans lequel il y a des text box.
Dans 1 de ces text box, l'utilisateur doit rentrer une somme avec deux
décimales. Pour être sur que la somme soit correcte, je fais une
conversion avec détection d'erreur:


On Error GoTo 0
montant = CVar(txt_montant.Text)
On Error GoTo erreur_convertion


Exit Sub

erreur_convertion:
MsgBox ("le montant est incorrect") & Err.Number



si je rentre un chiffre correcte, cela se passe bien.
Par contre, si je rentre un chiffre incorrecte (par exemple un point
au lieu de la virgule), cela me met :
Erreur d'exécution 13
Type incompatible

je pensais que normalement ce genre d'erreur était vu par le ON ERROR
ce qui apparement ne fonctionne pas.

De plus, comment puis je imposer un format de saisie?

Cordialement

Thierry



Avatar
ng
Cette méthode comporte une petite vulnérabilité : il suffit de copier du
texte dans le presse papier puis d'utiliser le menu contextuel pour le
coller !

Cependant, couplée avec un IsNumeric (ou autre méthode de vérification lors
de la validation), cela peut s'avèrer assez pratique.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


a écrit dans le message de news:
130ce01c3f6e3$7403c8c0$
Bonjour,

Pourquoi ne pas gérer l'appui des touches autorisées à
partir de l'évènement KeyPress afin d'éviter ce genre de
problème.

Par exemple, pour n'autoriser que les chiffres et la
virgule, dans l'évènement KeyPress txtText1 :

If (KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii <>
vbKeyDelete Or InStr(1, txtText1, ",") <> 0) And KeyAscii
<> 8 Then KeyAscii = 0

Christophe

-----Message d'origine-----
Bonjour,

j'ai fais un écran dans lequel il y a des text box.
Dans 1 de ces text box, l'utilisateur doit rentrer une


somme avec deux
décimales. Pour être sur que la somme soit correcte, je


fais une
conversion avec détection d'erreur:


On Error GoTo 0
montant = CVar(txt_montant.Text)
On Error GoTo erreur_convertion


Exit Sub

erreur_convertion:
MsgBox ("le montant est incorrect") & Err.Number



si je rentre un chiffre correcte, cela se passe bien.
Par contre, si je rentre un chiffre incorrecte (par


exemple un point
au lieu de la virgule), cela me met :
Erreur d'exécution 13
Type incompatible

je pensais que normalement ce genre d'erreur était vu par


le ON ERROR
ce qui apparement ne fonctionne pas.

De plus, comment puis je imposer un format de saisie?

Cordialement

Thierry


.



Avatar
François Picalausa
Bonjour/soir,

IsNumeric est à déconseiller.
Voir l'explication ici:
http://groups.google.be/groups?selm=%23c4VQqb4CHA.2392%40TK2MSFTNGP09.phx.gbl

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com

"ng" a écrit dans le message de
news:
Essaye en employant IsNumeric pour véfifier.


Avatar
Christophe QUEVAL
Bonjour,

Voilà une super remarque à laquelle je n'avais pas pensé. J'utilise cette
méthode en permanence dans mes développements, et je n'avais pas du tout
pensé à ce petit problème. Merci de me l'avoir fait remarquer. Comme quoi on
apprend beaucoup à consulter les newsgroups.

Merci bien :-)

Christophe

"ng" a écrit dans le message de
news:
Cette méthode comporte une petite vulnérabilité : il suffit de copier du
texte dans le presse papier puis d'utiliser le menu contextuel pour le
coller !

Cependant, couplée avec un IsNumeric (ou autre méthode de vérification


lors
de la validation), cela peut s'avèrer assez pratique.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


a écrit dans le message de news:
130ce01c3f6e3$7403c8c0$
Bonjour,

Pourquoi ne pas gérer l'appui des touches autorisées à
partir de l'évènement KeyPress afin d'éviter ce genre de
problème.

Par exemple, pour n'autoriser que les chiffres et la
virgule, dans l'évènement KeyPress txtText1 :

If (KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii <>
vbKeyDelete Or InStr(1, txtText1, ",") <> 0) And KeyAscii
<> 8 Then KeyAscii = 0

Christophe

>-----Message d'origine-----
>Bonjour,
>
>j'ai fais un écran dans lequel il y a des text box.
>Dans 1 de ces text box, l'utilisateur doit rentrer une
somme avec deux
>décimales. Pour être sur que la somme soit correcte, je
fais une
>conversion avec détection d'erreur:
>
>
> On Error GoTo 0
> montant = CVar(txt_montant.Text)
> On Error GoTo erreur_convertion
>
>
>Exit Sub
>
>erreur_convertion:
>MsgBox ("le montant est incorrect") & Err.Number
>
>
>
>si je rentre un chiffre correcte, cela se passe bien.
>Par contre, si je rentre un chiffre incorrecte (par
exemple un point
>au lieu de la virgule), cela me met :
>Erreur d'exécution 13
>Type incompatible
>
>je pensais que normalement ce genre d'erreur était vu par
le ON ERROR
>ce qui apparement ne fonctionne pas.
>
>De plus, comment puis je imposer un format de saisie?
>
>Cordialement
>
>Thierry
>
>
>.
>




Avatar
Zoury
Salut à vous! :O)

Il y a deux façon de palier à ce problème..

par APIs :
http://groups.google.com/groups?selm=O7E1JabDDHA.584%40TK2MSFTNGP12.phx.gbl&rnum=9

standard :
http://groups.google.com/groups?selm=%23CKXkveDDHA.28568%40TK2MSFTNGP10.phx.gbl

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
François Picalausa
Bonjour/soir,

La fiche suivante de la faq en parle aussi:
http://faq.vb.free.fr/index.php?question€

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:u%
Il y a deux façon de palier à ce problème..