OVH Cloud OVH Cloud

Textbox-question facile

5 réponses
Avatar
nadine
Salut,

J'ai un textbox avec une valeur num=E9rique. Je voudrais=20
qu'il g=E9n=E9re un message d'erreur(msgbox...) =E0 la sortie=20
(lostFocus) s'il y a une valeur alpha au lieu d'une=20
numerique...

Qqu'un peut m'aider ?

Merci
nadine

5 réponses

Avatar
Pierre Gard
if not isnumeric(textbox.text) then
msgbox ""
end if

--
Pierre

"nadine" a écrit dans le message de
news:06d101c39c7a$48e4c040$
Salut,

J'ai un textbox avec une valeur numérique. Je voudrais
qu'il génére un message d'erreur(msgbox...) à la sortie
(lostFocus) s'il y a une valeur alpha au lieu d'une
numerique...

Qqu'un peut m'aider ?

Merci
nadine
Avatar
François Picalausa
Bonjour/soir,

réponse sur la faq:
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


"nadine" a écrit dans le message
de news:06d101c39c7a$48e4c040$
Salut,

J'ai un textbox avec une valeur numérique. Je voudrais
qu'il génére un message d'erreur(msgbox...) à la sortie
(lostFocus) s'il y a une valeur alpha au lieu d'une
numerique...

Qqu'un peut m'aider ?

Merci
nadine


Avatar
Zoury
Salut Nadine! :O)

J'incites généralement les gens à fuir la fonction IsNumeric. Cette évalue
si une chaine peut-être être interpréter comme étant une valeur numérique.
Hors plusieurs format de chaine peuvent être interpréter comme telle et
parfois les résutlats obtenus sont loins d'être ceux espérés.

Prend l'exemple suivant. Sur mon système, la virgule est le séparateur
décimal et l'espace le séparateur de millier.

'***
' Module1
Option Explicit

Private Sub Main()

Debug.Print "123", , IsDigitsOnly("123"), IsNumeric("123")
Debug.Print "12,3", , IsDigitsOnly("12,3"), IsNumeric("12,3")
Debug.Print "123A", , IsDigitsOnly("123A"), IsNumeric("123A")
Debug.Print "aaa", , IsDigitsOnly("aaa"), IsNumeric("aaa")
Debug.Print "", , IsDigitsOnly(""), IsNumeric("")
Debug.Print "-123", , IsDigitsOnly("-123"), IsNumeric("-123")
Debug.Print "1,28E+11", , IsDigitsOnly("1,28E+11"),
IsNumeric("1,28E+11")
Debug.Print "$(123 5,4 67E9)$", IsDigitsOnly("$(123 5,4 67E9)$"),
IsNumeric("$(123 5,4 67E9)$")

End Sub

Private Function IsDigitsOnly(ByRef s As String) As Boolean
IsDigitsOnly = Not s Like "*[!0-9]*" And LenB(s) > 0
End Function
'***


J'utilise fonc plutôt c'est 2 fonctions offertes par Rick Rothstein :

' Pour les entiers seulement
'***
Function IsDigitsOnly(Value As String) As Boolean
' Leave the next statement out if you don't
' want to provide for plus/minus signs
If Value Like "[+-]*" Then Value = Mid$(Value, 2)
IsDigitsOnly = Not Value Like "*[!0-9]*"
End Function
'***

' Pour les décimals
'***
Function IsNumber(ByVal Value As String) As Boolean
Dim DP As String
' Get local setting for decimal point
DP = Format$(0, ".")
' Leave the next statement out if you don't
' want to provide for plus/minus signs
If Value Like "[+-]*" Then Value = Mid$(Value, 2)
IsNumber = Not Value Like "*[!0-9" & DP & "]*" And _
Not Value Like "*" & DP & "*" & DP & "*" And _
Len(Value) > 0 And Value <> DP And _
Value <> vbNullString
End Function
'***

' Autre version pour les nombres avec séparateur décimal (je n'ai pas trop
regardé ce qu'elle fesait de plus..)
'***
Function IsNumber(ByVal Value As String) As Boolean
Dim DP As String
Dim TS As String
' Get local setting for decimal point
DP = Format$(0, ".")
' Get local setting for thousand's
' separator and eliminate them.
TS = Mid$(Format$(1000, "#,###"), 2, 1)
Value = Replace$(Value, TS, "")
' Leave the next statement out if you don't
' want to provide for plus/minus signs
If Value Like "[+-]*" Then Value = Mid$(Value, 2)
IsNumber = Not Value Like "*[!0-9" & DP & "]*" And _
Not Value Like "*" & DP & "*" & DP & "*" And _
Len(Value) > 0 And Value <> DP And _
Value <> vbNullString
End Function
'***

--
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,

Zoury, avant que tu n'envoie un ooppss, je le fais à ta place ;-)

"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:

Cette évalue si une chaine



Lire : Cette fonction évalue si ...

J'utilise fonc plutôt c'est 2 fonctions ...


J'utilise plutôt ces 2 fonctions ...

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
Zoury
hahaha! merci François! :O)