La problématique s'étant posée pour moi et après avoir été fouiné un peu partout, voici la solution que j'ai implantée et que je partage avec vous.
Elle gère le point (nombre décimale). J'ai pas testé avec une virgule (mes PC ne sont pas configurés en mode "virgule").
Elle gère le copier/coller, le retour en arrière et l'espace vide.
Ne gère pas la notation scientifique (1e10 par exemple)
Voilà, si ça peut aider certains
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged 'dès que je change le text par entrée manuelle ou copier/coller TextBox1.Text = verif_nombre(TextBox1.Text) 'appelle la fonction de vérification qui renvoie un text compatible End Sub Module Module1 Public Function verif_nombre(ByVal text As String) Dim text_vérifié As String = "" Dim l As Integer = text.Length 'récupère la longueur du texte pour traiter le cas "" If l = 0 Then Return text_vérifié ' si le texte est "" ne change rien If IsNumeric(text) Then text_vérifié = text 'si le texte est numérique , cela inclut les décimales, ne change rien Else 'si le texte n'est pas numérique MsgBox("attention vous ne pouvez entrer que des nombres") 'prévient l'utilisateur text = text.Remove(l - 1) 'supprime le dernier caractère entré, généralement celui qui pose problème text_vérifié = text End If Return text_vérifié 'renvoie le texte corrigé et conforme End Function End Module
(testé sur Microsoft Visual Basic*2010 express, Windows 7 , 32 et 64 bit)
Partager