Valeur maximale d'un textbox

Résolu
SpcCwb Messages postés 67 Statut Membre -  
SpcCwb Messages postés 67 Statut Membre -
Bonjour,

Je cherche à bloquer la valeur maximale du textbox3 de mon userform à 100.

Si jamais l'utilisateur tape une valeur supérieure alors MsgBox l'avertissant et effacer le contenu du textbox.

J'ai également une règle concernant la casse autorisée, celle-ci fonctionne très bien.

Mon problème est que lorsque j'efface le contenu de mon textbox, le MsgBox apparaît. Lorsqu'une valeur supérieure à 100 est saisie, le textbox ne se vide pas. Et lorsque je commence à saisir dans le textbox le MsgBox apparaît..

Je vous joint le fichier, et voici le code que j'utilise.

Merci d'avance du coup de main
Private Sub Textbox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

TextBox3.MaxLength = 3
Select Case KeyAscii
    Case 44, 46 ' que l'on frappe une virgule ou un point
      If InStr(TextBox3.Text, ",") Then 'si déjà une virgule présent
         KeyAscii = 0 'on ne permet pas deux virgules
      Else ' sinon
        KeyAscii = 44 'on force la une virgule
      End If
    Case 48 To 57
      'on laisse passer car ce sont des chiffres
    Case Else
      KeyAscii = 0 'on ne laisse pas passer
 End Select
 
    If TextBox3.Value > 100 Then
        MsgBox "Valeur maximale = 100"
        TextBox3.Value = ""
        Exit Sub
    End If
End Sub

Le fichier: https://www.cjoint.com/c/HHCn2OKz3EI

1 réponse

  1. Zoul67 Messages postés 2001 Statut Membre 149
     
    Bonjour,

    Tu peux essayer
    Private Sub Textbox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    
    TextBox3.MaxLength = 3
    Select Case KeyAscii
     Case 44, 46 ' que l'on frappe une virgule ou un point
     If InStr(TextBox3.Text, ",") Then 'si déjà une virgule présent
     KeyAscii = 0 'on ne permet pas deux virgules
     Else ' sinon
     KeyAscii = 44 'on force la une virgule
     End If
     Case 48 To 57
     'on laisse passer car ce sont des chiffres
         If CDbl(TextBox3.Value & (KeyAscii - 48)) > 100 Then
            MsgBox "Valeur maximale = 100"
            KeyAscii = 0 'on ne permet pas de valeur supérieure à 100
        End If
     Case Else
     KeyAscii = 0 'on ne laisse pas passer
     End Select
    End Sub


    Je ne suis pas sûr que MaxLength=3 soit judicieux avec des nombres décimaux
    A+
    1
    1. SpcCwb Messages postés 67 Statut Membre 1
       
      Ca marche du feu de Dieu! Merci infiniment, je m'arrachais les cheveux..
      J'ai juste changer le numéro de la textbox de cette ligne:
      If InStr(TextBox1.Text, ",") Then
      en
      If InStr(TextBox3.Text, ",") Then

      Parfait!
      Effectivement maintenant je peux retirer MaxLength=3
      Merci encore!
      0