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

Saisie d'un nombre avec décimales dans une zone de texte

6 réponses
Avatar
Alain Ménard
Bonjour à tous,

J'utilisais le code suivant pour contraindre à écrire un nombre dans une
zone de texte, mais je viens de m'apercevoir que cela n'accepte pas les
nombres avec décimales comme 9,1

Private Sub Cote6_Validate(Cancel As Boolean)

If Not IsNumber(Me.Cote6.Text) And Me.Cote6.Text <> "" Then
MsgBox "Ce nombre n'est pas valide", 48, "Erreur"
Me.Cote6.Text = ""
Cancel = True
End If

End Sub


Private Function IsNumber(ByVal Value As String) As Boolean
' If Value Like "[+-]*" Then Value = Mid$(Value, 2)
IsNumber = Not Value Like "*[!0-9" & GetDecimalNotation & "]*" And Not _
Value Like "*" & GetDecimalNotation & "*" & GetDecimalNotation & "*"
And _
Len( _
Value) > 0 And Value <> GetDecimalNotation And Value <> vbNullString
And _
Not Value Like GetDecimalNotation & "*" And Not Value Like "*" & _
GetDecimalNotation
End Function

Private Function GetDecimalNotation() As String
GetDecimalNotation = Format$(0, ".")
End Function

J'hésite à changer la dernière fonction car je ne sais pas quoi y mettre

Merci de vos éclaircissements ou idées

Alain

6 réponses

Avatar
Philippe HALET
Alain,

Tu peux également utiliser IsNumeric() pour valider le contenu de ta
textBox...

IsNumeric("12.34") -> True
IsNumeric("12,34") -> True
IsNumeric("Abcdef") -> False

Bien à toi,

Philippe


"Alain Ménard" wrote in message
news:4577fa46$0$10071$
Bonjour à tous,

J'utilisais le code suivant pour contraindre à écrire un nombre dans une
zone de texte, mais je viens de m'apercevoir que cela n'accepte pas les
nombres avec décimales comme 9,1

Private Sub Cote6_Validate(Cancel As Boolean)

If Not IsNumber(Me.Cote6.Text) And Me.Cote6.Text <> "" Then
MsgBox "Ce nombre n'est pas valide", 48, "Erreur"
Me.Cote6.Text = ""
Cancel = True
End If

End Sub


Private Function IsNumber(ByVal Value As String) As Boolean
' If Value Like "[+-]*" Then Value = Mid$(Value, 2)
IsNumber = Not Value Like "*[!0-9" & GetDecimalNotation & "]*" And Not
_
Value Like "*" & GetDecimalNotation & "*" & GetDecimalNotation &
"*" And _
Len( _
Value) > 0 And Value <> GetDecimalNotation And Value <>
vbNullString And _
Not Value Like GetDecimalNotation & "*" And Not Value Like "*" & _
GetDecimalNotation
End Function

Private Function GetDecimalNotation() As String
GetDecimalNotation = Format$(0, ".")
End Function

J'hésite à changer la dernière fonction car je ne sais pas quoi y mettre

Merci de vos éclaircissements ou idées

Alain





I choose Polesoft Lockspam to fight spam, and you?
http://www.polesoft.com/refer.html
Avatar
Alain Ménard
Bonjour Philippe,

Merci beaucoup ta fonction fonctionne. Il fallait en plus retirer le on
error resume next

Alain

"Philippe HALET" a écrit dans le message de news:
4577fcbc$0$5534$
Alain,

Tu peux également utiliser IsNumeric() pour valider le contenu de ta
textBox...

IsNumeric("12.34") -> True
IsNumeric("12,34") -> True
IsNumeric("Abcdef") -> False

Bien à toi,

Philippe


"Alain Ménard" wrote in message
news:4577fa46$0$10071$
Bonjour à tous,

J'utilisais le code suivant pour contraindre à écrire un nombre dans une
zone de texte, mais je viens de m'apercevoir que cela n'accepte pas les
nombres avec décimales comme 9,1

Private Sub Cote6_Validate(Cancel As Boolean)

If Not IsNumber(Me.Cote6.Text) And Me.Cote6.Text <> "" Then
MsgBox "Ce nombre n'est pas valide", 48, "Erreur"
Me.Cote6.Text = ""
Cancel = True
End If

End Sub


Private Function IsNumber(ByVal Value As String) As Boolean
' If Value Like "[+-]*" Then Value = Mid$(Value, 2)
IsNumber = Not Value Like "*[!0-9" & GetDecimalNotation & "]*" And Not
_
Value Like "*" & GetDecimalNotation & "*" & GetDecimalNotation &
"*" And _
Len( _
Value) > 0 And Value <> GetDecimalNotation And Value <>
vbNullString And _
Not Value Like GetDecimalNotation & "*" And Not Value Like "*" & _
GetDecimalNotation
End Function

Private Function GetDecimalNotation() As String
GetDecimalNotation = Format$(0, ".")
End Function

J'hésite à changer la dernière fonction car je ne sais pas quoi y mettre

Merci de vos éclaircissements ou idées

Alain





I choose Polesoft Lockspam to fight spam, and you?
http://www.polesoft.com/refer.html



Avatar
jm
"Alain Ménard" wrote in message
news:4577fa46$0$10071$
Bonjour à tous,

J'utilisais le code suivant pour contraindre à écrire un nombre dans une
zone de texte, mais je viens de m'apercevoir que cela n'accepte pas les
nombres avec décimales comme 9,1



Hello,

Je te conseille la lecture de cet article de la FAQ:
http://faq.vb.free.fr/index.php?question3

Voir aussi celui-ci:
http://faq.vb.free.fr/index.php?question1


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
David
Bonjour Alain,

Voila ce que j'utilise depuis toujours, sans soucis :

Private Sub Text2_KeyPress(KeyAscii As Integer)

If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
If KeyAscii = Asc(",") And InStr(Text2, ",") > 0 Then KeyAscii = 0

If (KeyAscii < Asc("0") Or KeyAscii > Asc("9")) And KeyAscii <> 8 And
KeyAscii <> 13 And KeyAscii <> Asc(",") And KeyAscii <> 0 Then
MsgBox "Que des chiffres et le point ", vbExclamation, "Encodage"
KeyAscii = 0
End If
End Sub

a+
Jean-Pol DAVID

"Alain Ménard" a écrit dans le message de news:
4577fa46$0$10071$
Bonjour à tous,

J'utilisais le code suivant pour contraindre à écrire un nombre dans une
zone de texte, mais je viens de m'apercevoir que cela n'accepte pas les
nombres avec décimales comme 9,1

Private Sub Cote6_Validate(Cancel As Boolean)

If Not IsNumber(Me.Cote6.Text) And Me.Cote6.Text <> "" Then
MsgBox "Ce nombre n'est pas valide", 48, "Erreur"
Me.Cote6.Text = ""
Cancel = True
End If

End Sub


Private Function IsNumber(ByVal Value As String) As Boolean
' If Value Like "[+-]*" Then Value = Mid$(Value, 2)
IsNumber = Not Value Like "*[!0-9" & GetDecimalNotation & "]*" And Not
_
Value Like "*" & GetDecimalNotation & "*" & GetDecimalNotation &
"*" And _
Len( _
Value) > 0 And Value <> GetDecimalNotation And Value <>
vbNullString And _
Not Value Like GetDecimalNotation & "*" And Not Value Like "*" & _
GetDecimalNotation
End Function

Private Function GetDecimalNotation() As String
GetDecimalNotation = Format$(0, ".")
End Function

J'hésite à changer la dernière fonction car je ne sais pas quoi y mettre

Merci de vos éclaircissements ou idées

Alain



Avatar
Driss HANIB
salut Alain,

voici un bout de prog vu sur PSC aujourd'hui qui permet de gérer cela en 4
lignes

http://www.planet-source-code.com/vb/default.asp?lngCIdg329&lngWId=1

Driss

"Alain Ménard" a écrit dans le message de
news:4577fa46$0$10071$
Bonjour à tous,

J'utilisais le code suivant pour contraindre à écrire un nombre dans une
zone de texte, mais je viens de m'apercevoir que cela n'accepte pas les
nombres avec décimales comme 9,1

Private Sub Cote6_Validate(Cancel As Boolean)

If Not IsNumber(Me.Cote6.Text) And Me.Cote6.Text <> "" Then
MsgBox "Ce nombre n'est pas valide", 48, "Erreur"
Me.Cote6.Text = ""
Cancel = True
End If

End Sub


Private Function IsNumber(ByVal Value As String) As Boolean
' If Value Like "[+-]*" Then Value = Mid$(Value, 2)
IsNumber = Not Value Like "*[!0-9" & GetDecimalNotation & "]*" And Not


_
Value Like "*" & GetDecimalNotation & "*" & GetDecimalNotation &


"*"
And _
Len( _
Value) > 0 And Value <> GetDecimalNotation And Value <>


vbNullString
And _
Not Value Like GetDecimalNotation & "*" And Not Value Like "*" & _
GetDecimalNotation
End Function

Private Function GetDecimalNotation() As String
GetDecimalNotation = Format$(0, ".")
End Function

J'hésite à changer la dernière fonction car je ne sais pas quoi y mettre

Merci de vos éclaircissements ou idées

Alain




Avatar
Alain Ménard
Merci Driss

Alain

"Driss HANIB" a écrit dans le message de news:
%
salut Alain,

voici un bout de prog vu sur PSC aujourd'hui qui permet de gérer cela en 4
lignes

http://www.planet-source-code.com/vb/default.asp?lngCIdg329&lngWId=1

Driss

"Alain Ménard" a écrit dans le message de
news:4577fa46$0$10071$
Bonjour à tous,

J'utilisais le code suivant pour contraindre à écrire un nombre dans une
zone de texte, mais je viens de m'apercevoir que cela n'accepte pas les
nombres avec décimales comme 9,1

Private Sub Cote6_Validate(Cancel As Boolean)

If Not IsNumber(Me.Cote6.Text) And Me.Cote6.Text <> "" Then
MsgBox "Ce nombre n'est pas valide", 48, "Erreur"
Me.Cote6.Text = ""
Cancel = True
End If

End Sub


Private Function IsNumber(ByVal Value As String) As Boolean
' If Value Like "[+-]*" Then Value = Mid$(Value, 2)
IsNumber = Not Value Like "*[!0-9" & GetDecimalNotation & "]*" And
Not


_
Value Like "*" & GetDecimalNotation & "*" & GetDecimalNotation &


"*"
And _
Len( _
Value) > 0 And Value <> GetDecimalNotation And Value <>


vbNullString
And _
Not Value Like GetDecimalNotation & "*" And Not Value Like "*" &
_
GetDecimalNotation
End Function

Private Function GetDecimalNotation() As String
GetDecimalNotation = Format$(0, ".")
End Function

J'hésite à changer la dernière fonction car je ne sais pas quoi y mettre

Merci de vos éclaircissements ou idées

Alain