Bonjour ,
J'ai besoin d'aide pour la problématique suivante.
J'ai trouvé pas mal de solutions mais je n'ai pas su adapter à mon cas.
je voudrais saisir dans une textbox des nombres relatifs entiers ou décimaux.
- Si nombre négatif doit être unique et au début
- ne pouvoir insérer qu'une seule fois le séparateur de décimales (point ou virgule)
- uniquement 2 chiffres après le séparateur de décimales
Le code ci-dessous fonctionne mais il est incomplet.
J'ai ajouté le signe '-' avec les nombres mais ne fonctionne pas (InStr("1234567890-", strpass) .
c-à-d le signe moins ne s'inscrit pas.
Option Explicit
'''pour gestion saisie numerique textbox'''''''''''''''''''''''''''''''''
Const entrees_decimales_permises = "-.,0123456789" & vbCr & vbBack '
Const entrees_entieres_permises = "0123456789" & vbCr & vbBack '
Const Point = "." '
Const Virgule = ","
Const Moins = "-"
Private Function ChainePasOK(strpass As String) As Boolean
If strpass = "" Then Exit Function
If Len(Replace(strpass, ".", "")) <> Len(strpass) Then ChainePasOK = True: Exit Function
If Len(strpass) = 1 And InStr("1234567890", strpass) = 0 Then ChainePasOK = True: Exit Function
strpass = Replace(strpass, ",", ".")
If Len(CStr(Val(strpass))) <> Len(strpass) Then ChainePasOK = True
End Function
'-----DECIMAL----------------------------------------------------------------------------------------
Private Sub textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim Pos As Long
If KeyAscii = Asc(Point) Then
If InStr(TextBox1, Virgule) = 0 Then
KeyAscii = Asc(Virgule)
Else
KeyAscii = 0: Beep
End If
ElseIf InStr(entrees_decimales_permises, Chr(KeyAscii)) = 0 Then '1
KeyAscii = 0: Beep
ElseIf InStr(TextBox1, Virgule) > 0 And KeyAscii = Asc(Virgule) Then
ElseIf InStr(TextBox1, Moins) > 0 And KeyAscii = Asc(Moins) Then
KeyAscii = 0: Beep
ElseIf InStr(TextBox1, Virgule) > 0 Then
Pos = InStr(TextBox1.Text, Virgule)
If Len(TextBox1.Text) = Pos + 2 Then
TextBox1.Text = Left$(TextBox1.Text, Len(TextBox1.Text) - 1): Beep
End If
End If
If KeyAscii = 13 Then SendKeys "{TAB}": KeyAscii = 0
End Sub
En vous remerciant par avance.
Bon week-end
Edit: Merci beaucoup mais j'ai trouvé la solution. (code corrigé)