Empecher la saisie de LETTRES dans TextBox

yadla

XLDnaute Occasionnel
Bonjour le forum,

J'ai dans un formulaire des Textboxes qui sont intialisés à chaque ouverture du formulaire, mais l'utilisateur peut modifier ces valeurs en double cliquant sur le TextBox. Ainsi, il peut modifier la valeur de départ.

Ce que je voudrais c'est interdire la saisie de lettres. Qu'on puisse entrer uniquement des chiffres et des "/" ou ":" parce qu'il y a des textboxes avec des dates et des heures aussi... :p eh, je cherche toujours au plus simple :D

Si vous avez une idée, je vous remercie d'avance, je ne pense pas que ce soit trop compliqué ce que je demande... si :confused:
 

Staple1600

XLDnaute Barbatruc
Re : Empecher la saisie de LETTRES dans TextBox

Bonjour


Tu peux utiliser

IsNumeric

et IsDate

Ou t'inspirer de cet exemple

Private Sub TextBox1_Change()
Dim Char As String
Char = UCase(Right(TextBox1.Text, 1))
Select Case Len(TextBox1.Text)
Case 1 To 3
If Char Like "[A-Z]" Then Exit Sub
Case 4 To 6
If Char Like "#" Then Exit Sub
End Select
Beep
On Error Resume Next
TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 1)
TextBox1.SelStart = Len(TextBox1.Text)
End Sub
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Empecher la saisie de LETTRES dans TextBox

Bonjour Yadla, Spitnolan, Staple

une autre solution :

Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("0123456789:/", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

bonne fin d'après midi
@+
 

yadla

XLDnaute Occasionnel
Re : Empecher la saisie de LETTRES dans TextBox

Bonsoir Pierrot, Staple, Spitnoland,

Je vous remercie tous les trois pour vos réponse ultra-rapides ;)

J'ai trouvé mon bonheur dans toutes vos suggestions.

Ce forum est vraiment génial... très contente d'en faire partie :D
 

TheProdigy

XLDnaute Impliqué
Bonjour,

Comment lors de la saisie du Texbox afficher le nombre du texbox1 sous le format Format(textbox1.Value, "#,##0.00")
tout respectant par exemple le code de Pierrot93
VB:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("0123456789:/", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

Merci
 

GEfull

XLDnaute Nouveau
Bonjour,

Comment lors de la saisie du Texbox afficher le nombre du texbox1 sous le format Format(textbox1.Value, "#,##0.00")
tout respectant par exemple le code de Pierrot93
VB:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("0123456789:/", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

Merci
Merci beaucoup ça marche sa marche très bien
 

patricktoulon

XLDnaute Barbatruc
Bonjour
juste pour le fun
on formate dynammico au taper des touches
des que tu tape la virgule ou ENTER ou TAB
2 DECIMALES MAX
VB:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    With TextBox1
        v = Replace(.Value, " ", "")
        Select Case KeyCode
        Case 96 To 105, 48 To 57
            If KeyCode < 96 Then KeyCode = KeyCode + 48
            If InStr(1, v, ",") > 0 Then If Len(Split(v, ",")(1)) = 2 Then KeyCode = 0: Exit Sub

        Case 110, 188: KeyCode = 188
            If InStr(1, .Value, ",") > 0 Or .Value = "" Then KeyCode = 0
            v = Split(Format(v, "#,##0.00"), ",")(0)
            .Value = v & ",": KeyCode = 0

        Case 8    'ON LAISSE FAIRE LA TOUCHE BACK
        Case 13, 9
            .Value = Format(.Value, "#,##0.00")

        Case Else: KeyCode = 0    'Toutes les autres touches sont bloquées

        End Select
    End With
End Sub
 

Discussions similaires

Réponses
93
Affichages
2 K

Statistiques des forums

Discussions
312 098
Messages
2 085 265
Membres
102 844
dernier inscrit
atori2