Probleme Avec ma sasie TEXTBOX

Ofeu Messages postés 26 Statut Membre -  
Ofeu Messages postés 26 Statut Membre -
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. Zoul67 Messages postés 2001 Statut Membre 149
     
    Bonjour,

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

    PS : ton stage se passe bien ?
    0
  2. danielc0 Messages postés 2193 Date d'inscription   Statut Membre Dernière intervention   287
     
    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. Ofeu Messages postés 26 Statut Membre
       
      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. danielc0 Messages postés 2193 Date d'inscription   Statut Membre Dernière intervention   287
       
      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. Ofeu Messages postés 26 Statut Membre
       
      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. Ofeu Messages postés 26 Statut Membre
       
      ... lorsque je saisie une valeur inférieur à 10 ou supérieur à 25.

      Merci
      0
    5. danielc0 Messages postés 2193 Date d'inscription   Statut Membre Dernière intervention   287
       
      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