Comment ne pas dépasser une valeur dans une textbox

Résolu/Fermé
coupidon Messages postés 98 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 23 novembre 2016 - 5 sept. 2016 à 11:11
f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 - 5 sept. 2016 à 15:20
Bonjour,

Je cherche comment dans une textbox ne pas dépasser une valeur et de recommencer la saisi.

ex: je ne veux pas dépasser une valeur supérieur à 59 par exemple que cela recommence la saisi dans une textbox.

si quelqu'un avais une proposition

4 réponses

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
5 sept. 2016 à 11:44
Bonjour,

Une idée :
Private Sub TextBox1_Change()
    If Not IsNumeric(TextBox1.Value) Or TextBox1.Value > 59 Then
        TextBox1.Value = ""
    End If
End Sub


que tu peux boucler avec
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        'codes ASCII de 0 à 9
        Case 48 To 57
        Case Else
             MsgBox "Ne saisir que des chiffres !"
     End Select
End Sub


A+
1
mrjenkins Messages postés 580 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 17 juillet 2018 102
Modifié par mrjenkins le 5/09/2016 à 11:49
Plus rapide que moi =)

Mais perso, j'utiliserai plutot

Private Sub TextBox1_AfterUpdate()
If Not IsNumeric(TextBox1.Value) Or TextBox1.Value > 59 Then
TextBox1.Value = ""
End If
End Sub


Pour vérifier à la sortie de la textbox =)
0
f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 708 > mrjenkins Messages postés 580 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 17 juillet 2018
5 sept. 2016 à 11:58
Bonjour a vous tous,*

Sur un seul evenement

'control entree
Private Sub Textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case 48 To 57
            VTx = (Val(TextBox1) * 10) + (KeyAscii - 48)
            If VTx > 59 Then
                KeyAscii = 0
                MsgBox "Nombre " & VTx & " depassant 59, recommencez saisie!!!!"
                TextBox1 = ""
            End If
        Case Else
            KeyAscii = 0
            MsgBox "Entree que des chiffres(0 a 9) !!!!"
    End Select
End Sub
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
5 sept. 2016 à 13:02
Bonjour à tous,

Perso, j'utiliserais plutôt un ComboBox avec la propriété MatchRequired True.

A+
0
coupidon Messages postés 98 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 23 novembre 2016 1
5 sept. 2016 à 14:01
Bonjour, vous avez répondu à ma question et cela fonctionne correctement, je rajoute que si je veux que des chiffres et aucune lettre lors de la saisie en modifiant le code de f894009 on peu utiliser ceci...

Private Sub Textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

' Empêche la saisi autre que numérique sur le cadre Heure

If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0

' Empêche la saisi autre que numérique et ne dépassant pas 59

Select Case KeyAscii
Case 48 To 57
VTx = (Val(TextBox1) * 10) + (KeyAscii - 48)
If VTx > 59 Then
KeyAscii = 0
MsgBox "Nombre " & VTx & " dépassant 59, recommencez saisie!!!!"
TextBox1 = ""
End If
End Select
End Sub
0
f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 708
5 sept. 2016 à 15:20
Re,

Ben, le code que j'ai mis a dispo traite deja des saisies chiffres et pas de lettres
Mais bon ...
0