eviter une erreur avec un cint

L

Laurent

Guest
Bonjour à tous,

Je tente d'utiliser une TextBox pour récupérer un int, que je voudrais évaluer à chaque changement.

J'utilise donc une instruction du style
taxiID = CInt(TextBox1.Value)
qui marche, mais qui génère une erreur (incompatibilité de type) si on écrit n'importe quoi dans le champ. Or j'aimerais bien pouvoir me tromper d'un caractère sans tout de suite afficher un message d'erreur.

Si je tente un
If TypeName(TextBox1.Value) = 'Integer' Then ...
Ca ne marche pas, ce test est toujours false même si mon expression est numérique. Et si je tente un
If TypeName(CInt(TextBox1.Value)) = 'Integer' Then
Ca plante bien sur, puisque je tente la conversion avant d'avoir testé.

Existe-t-il un équivalent de try...catch comme en C, ou un moyen de tester si une expression est numérique sans risquer de planter?

Merci beaucoup à ceux qui voudront bien s'intéresser à mon problème.

Private Sub TextBox1_Change()
Dim taxiID As Integer
If TypeName(CInt(TextBox1.Value)) = 'Integer' Then
taxiID = CInt(TextBox1.Value)
(...)
End If
End Sub
 

PascalXLD

XLDnaute Barbatruc
Modérateur
RE

Ajoutes peut-être en fin une ligne

comme ceci

Private Sub TextBox1_Change()
Dim taxiID As Integer
on error goto fin
taxiID = CInt(TextBox1.Value)
(...)

fin:
msgbox 'vous devez entrer un entier'
textbox1.value=''
End Sub
 
L

Laurent

Guest
Pascal,

Encore une fois merci, ça marche très bien... sauf que pour l'instant je ne traite pas l'erreur, je n'utilise pas ton code

fin:
msgbox 'vous devez entrer un entier'
textbox1.value=''
End Sub

Ceci dit comme j'ai essayé je vois que les instructions entre fin: et End Sub sont éxécutées à coup sur. Comment éviter d'avoir un message d'erreur dans le cas où il n'y a pas d'erreur?

J'imagine qu'un truc comme

...
goto vraiefin
fin:
traitement d'erreur
vraiefin:
End Sub

Permettrait de ne traiter l'erreur que s'il y a vraiment eu une erreur, mais c'est un peu crado. Peut-être utiliser une variable de statut?
 

PascalXLD

XLDnaute Barbatruc
Modérateur
re

oups escuse moi j'ai oublié un truc :eek:

le exit sub

Private Sub TextBox1_Change()
Dim taxiID As Integer
on error goto fin
taxiID = CInt(TextBox1.Value)
(...)
exit sub
fin:
msgbox 'vous devez entrer un entier'
textbox1.value=''
End Sub
 

Statistiques des forums

Discussions
312 753
Messages
2 091 674
Membres
105 043
dernier inscrit
Gum110