Limiter Chiffres apres Virgule

Résolu
Signaler
Messages postés
10
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
29 juillet 2008
-
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
-
salut
je suis un debutant
j'ai crée un textbox  nommé TxtCapital alors j'ai arrivé à interdire de saisir des lettres dedans en utilisant Keypress
mais je veux que l'utilisateur ne pourra saisir que 2 chiffres apres virgule.Si quelqu'un peut m aider
merci d avance

3 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Bonjour,

un exemple avec instr

Private Sub Text1_KeyPress(KeyAscii As Integer)
 If KeyAscii = 8 Then Exit Sub
 pos = InStr(Text1.Text, ",")
 If Text1.SelStart >= pos And pos > 0 Then
   deci = Mid(Text1.Text, pos + 1)
   If Len(deci & Chr(KeyAscii)) > 2 Then
     KeyAscii = 0: beep
   End If
 End If
End Sub

Bien que tu puisses également utiliser Like (ce que je préfère) ...
Messages postés
10
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
29 juillet 2008

salut
merci JMFMARQUES c vraiment utile sa marche ts bien avec ton code
c est pour la 2eme fois tu m aides
vraiment merci
@+
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Bon...

Tant qu'à faire, je préfère que tu fasses ainsi, dans ce cas :

Private Sub Text1_KeyPress(KeyAscii As Integer)
 dim sepdecimal as string, pos as integer, deci as integer
  sepdecimal = "," 'ici le séparateur décimal de ton choix
  pos = InStr(Text1.Text, sepdecimal)
  If KeyAscii = 8 Then Exit Sub  If pos 0 And Chr(KeyAscii) sepdecimal Then Exit Sub
  If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0: beep: Exit Sub  If pos > 0 And Chr(KeyAscii) sepdecimal Then KeyAscii 0: beep: Exit Sub
  If Text1.SelStart < pos Then Exit Sub
  If pos > 0 Then
     deci = Mid(Text1.Text, pos + 1)     If Len(deci) 2 Then beep: KeyAscii 0: Exit Sub
  End If
End Sub

Bien que ce ne soit pour moi pas vraiment satisfaisant (le premier coquin venu t'y collera quelque chose venant du presse papiers... sans que tu n'y puisses rien !)

Tu pourrais alors au moins rajouter cette parade au copier-coller :

Private Sub Text1_GotFocus()
  Clipboard.Clear
End Sub



Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  Clipboard.Clear
End Sub




Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  Clipboard.Clear
End Sub




Mais tu devrais plutôt faire un petit tour dans mes sources (il y en a une qui t'intéresse, me semble-t-il)