Empécher la saisie du séparateur en 1ère position de la textbox

cibleo

XLDnaute Impliqué
Bonsoir le forum :)

Voilà, j'ai une textbox dans lequel j'autorise la saisie du point comme séparateur de mes décimales.
Or, j'aimerais ne pas pouvoir le saisir par inadvertance en 1ère position.
Bloquer la saisie en sorte comme pour les lettres.

VB:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Limite la saisie aux chiffres + point et limite à un seul séparateur (le point)
If InStr("0123456789.", Chr(KeyAscii)) = 0 Or InStr(TextBox1.Value, ".") <> 0 And Chr(KeyAscii) = "." Then KeyAscii = 0: Exit Sub
If InStr(1, TextBox1.Value, ".") <> 0 Then 'limite à 2 décimales
If Len(TextBox1.Value) > InStr(1, TextBox1.Value, ".") + 1 Then KeyAscii = 0
End If
End Sub

Pouvez-vous m'aider, cela doit pourtant être simple non :confused:
Cibleo
 

Pièces jointes

  • Verifier_Coherence_Saisie.xls
    39 KB · Affichages: 27

Gorfael

XLDnaute Barbatruc
Re : Empécher la saisie du séparateur en 1ère position de la textbox

Salut cibleo et le forum
Code:
Private Sub TextBox1_Change()
If Me.TextBox1 = "." Then Me.TextBox1 = ""
End Sub
Si la textBox1 commence par "", on l'efface.
Ou on peut le remplacer par "0."
Ou par "0," => mais dans ce cas, il faut remplacer le "." par "," => dépend du code utilisé, mais un simple Replace suffit dans la macro TextBox1_AfterUpdate ou dans la macro de transfert/traitement des informations
A+
 

kjin

XLDnaute Barbatruc
Re : Empécher la saisie du séparateur en 1ère position de la textbox

Bonsoir,
Je n'ai pas zieuté ton fichier, mais en continuant ton principe
Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim flag1 As Boolean, flag2 As Boolean, x%
flag1 = Len(TextBox1) = 0
flag2 = InStr(TextBox1.Value, ".") > 0
x = InStr(TextBox1.Value, ".") + 1
If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
If flag1 And Chr(KeyAscii) = "." Then KeyAscii = 0
If flag2 And Chr(KeyAscii) = "." Then KeyAscii = 0
If flag2 And Len(TextBox1) > x Then KeyAscii = 0
End Sub
A+
kjin
 

cibleo

XLDnaute Impliqué
Re : Empécher la saisie du séparateur en 1ère position de la textbox

Bonjour le forum,
Bonjour kjin, Gorfael

Je savais bien que l'on pouvait faire simple Gorfael :)
Merci pour le complément d'explications toujours bon à préciser.
J'adore aussi le style tarabiscoté de kjin :confused: :p

Bref, cela fonctionne tout ça.
Après une bonne nuit de sommeil, j'avais trouvé aussi cela :
A placer dans l'événement KeyPress
VB:
If (TextBox1.SelStart = 0 And Chr(KeyAscii) = ".") Then KeyAscii = 0
Merci à tous Cibleo
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87