Limiter Chiffres apres Virgule

Résolu
zodiaque11 Messages postés 10 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 29 juillet 2008 - 25 mai 2008 à 17:10
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 25 mai 2008 à 21:05
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

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
25 mai 2008 à 18: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) ...
3
zodiaque11 Messages postés 10 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 29 juillet 2008
25 mai 2008 à 20:21
salut
merci JMFMARQUES c vraiment utile sa marche ts bien avec ton code
c est pour la 2eme fois tu m aides
vraiment merci
@+
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
25 mai 2008 à 21:05
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)
0
Rejoignez-nous