eviter une erreur avec un cint

  • Initiateur de la discussion Initiateur de la discussion Laurent
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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?
 
re

oups escuse moi j'ai oublié un truc 😱

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
430
Réponses
6
Affichages
737
Retour