Probleme Avec ma sasie TEXTBOX

Bonjour,

J'ai un petit souci avec ma textBox1. En effet, j'ai appliqué une limite acceptable entre 10 et 25, et si j'applique d'autre valeurs < à 10 ou supérieur à 25, j'affiche la msg "Entry a value between 10 and 25 kg/day".

Mon problème est que quand je veux mettre 21 (par exemple), au moment que je mets 2 (avant de mettre 1), le message apparapït directement avant que je puisse mettre le 1 (c'est à dire 21).
Je voulais qu'il affiche le message à la fin de ma saisie.

Private Sub TextBox1_Change()
TextBox1.MaxLength = 2
If Not IsNumeric(TextBox1.Value) And TextBox1 <> "" Then
MsgBox "Entry a number"
TextBox1 = ""
ElseIf TextBox1.Value < 10 Or TextBox1.Value > 25 And TextBox1 <> "" Then
MsgBox "Entry a value between 10 and 25 kg/day"

End If

Sheets("Model_FA").Range("B13").Value = TextBox1.Value
End Sub

2 réponses

  1. Bonjour,

    Ajoute une condition Len(TextBox1.Value)=2.

    PS : ton stage se passe bien ?
    0
    1. Bonjour,

      Modifie :

      Private Sub TextBox1_Change()
      TextBox1.MaxLength = 2
      If Len(TextBox1.Text) < 2 Then Exit Sub
      If Not IsNumeric(TextBox1.Value) And TextBox1 <> "" Then
      MsgBox "Entry a number"
      TextBox1 = ""
      ElseIf TextBox1.Value < 10 Or TextBox1.Value > 25 And TextBox1 <> "" Then
      MsgBox "Entry a value between 10 and 25 kg/day"
      
      End If
      
      Sheets("Model_FA").Range("B13").Value = TextBox1.Value
      
      End Sub
      


      Daniel
      0
      1. Merci beacoup de votre aide, c'est presque là !!!!

        Maintenant le problème est : si l'utilisateur mets 9, il accepte. Cependant, Il ne va pas accepter si je mets 09 (c'est à dire si je saisis les 2 numéros, logique !). Idem pour 2 (il faut mettre 02, pour que je reçois une msg "Entry a value between 10 and 25 kg/day").
        Vous savez comment je peux faire si j'ajoute la valeur 2 par exemple et il envoie la message "Entry a value between 10 and 25 kg/day" seulement quand je sors de la cellule ?

        voici le fichier
        https://www.cjoint.com/c/HHxlHYoNbAg

        Merci bcpppp
        Lucas
        0
      2. Utilise cette macro :

        Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        Dim Sh As Worksheet
        If KeyCode = 13 Then
        If Not IsNumeric(TextBox1.Value) And TextBox1 <> "" Then
        MsgBox "Entry a number"
        TextBox1 = ""
        Exit Sub
        End If
        If CDbl(TextBox1.Value) < 10 Or CDbl(TextBox1.Value) > 25 And TextBox1 <> "" Then
        MsgBox "Entry a value between 10 and 25 kg/day"
        End If
        Sheets("Model_FA").Range("B13").Value = TextBox1.Value
        End If
        End Sub

        au lieu de :

        Private Sub TextBox1_Change()


        C'est la touche "Entrée qui déclenche la macro.

        Daniel
        0
      3. Merci DAniel !!!
        Ca marche très bien.

        Si je peux me permettre ;- ) ==> Je ne peux pas afficher la message lorsque je change de cellule non plus ? sans être obligé à appuyer sur la touche Entrée ?

        En tout cas, merci !!!
        0
      4. ... lorsque je saisie une valeur inférieur à 10 ou supérieur à 25.

        Merci
        0
      5. Ajout la macro :

        Private Sub TextBox1_LostFocus()
        If Not IsNumeric(TextBox1.Value) And TextBox1 <> "" Then
        MsgBox "Entry a number"
        TextBox1 = ""
        Exit Sub
        End If
        If CDbl(TextBox1.Value) < 10 Or CDbl(TextBox1.Value) > 25 And TextBox1 <> "" Then
        MsgBox "Entry a value between 10 and 25 kg/day"
        End If
        Sheets("Model_FA").Range("B13").Value = TextBox1.Value
        End Sub


        Daniel
        0