TextBox Numerique Seulement

Soyez le premier à donner votre avis sur cette source.

Snippet vu 27 936 fois - Téléchargée 8 fois

Contenu du snippet

'Vérifie si la valeur saisie dans le textbox est numérique en même temps que la saisie
'Déclaration des Api
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCTYPE As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Private Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCTYPE As Long, ByVal lpLCData As String) As Long
Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
'Déclaration de la constante séparateur décimal
Private Const LOCALE_SDECIMAL = &HE
Dim Separateur As String
 Public Sub numerique(ByVal KeyAscii As MSForms.ReturnInteger, ByVal Text As String)
 
'Si le caractère n'est pas numérique ou pas le séparateur de décimal, on annule l'appui sur la touche
If Not IsNumeric(Chr(KeyAscii)) And CStr(Chr(KeyAscii)) <> Separateur Then KeyAscii = 0
'Si le caractère est le séparateur de décimal mais celui-ci a déjà été saisi, on annule l'appui sur la touche
If Chr(KeyAscii) = Separateur And InStr(1, Text, Separateur, vbTextCompare) = 2 Then KeyAscii = 0
   End Sub
'récupère le séparateur de décimal dans les options régionales
Public Property Get DecimalSeparator() As String
Dim nLength As Long
Dim nLocale As Long
    nLocale = GetUserDefaultLCID()
    nLength = GetLocaleInfo(nLocale, LOCALE_SDECIMAL, vbNullString, 0) - 1
    DecimalSeparator = Space$(nLength)
    GetLocaleInfo nLocale, LOCALE_SDECIMAL, DecimalSeparator, nLength
    
End Property
'***Exemple d'utilisation
Public Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Separateur = DecimalSeparator()
Call numerique(KeyAscii, TextBox1.Text)
End Sub

Compatibilité : VBA

Disponible dans d'autres langages :

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.