MsgBox avec condition

Résolu

Bonjour ;

J’aimerai qu’un MsgBox apparaisse  si la valeur dans la TextBox33 et supérieur ou égale à 6 Mois, sur internet j’ai trouvé ce code que j’essaie d’adapter à mon cas.

    If Me.TextBox33.Value >= 6 Then

  MsgBox "Attention produit anti-crevaison route dépassé"

  End If

Le message apparait bien  mais je pense que la condition n’est pas prise en compte, le message apparait quel que soit le contenu de la TextBox.

Pouvez-vous m’aider

Private Sub TextBox33_Change()
Application.ScreenUpdating = False
TextBox33.Value = Format(TextBox33.Value, "0 Mois")

           Dim test As Boolean
With TextBox33
    test = Val(Replace(.Text, ",", ".")) >= 6
    .BackColor = IIf(test, vbRed, vbGreen)
    .ForeColor = IIf(test, vbWhite, vbBlack)
    .Font.Bold = test
End With

    If Me.TextBox33.Value >= 6 Then
  MsgBox "Attention produit anti-crevaison route dépassé"
  End If

Application.ScreenUpdating = True
End Sub

4 réponses

  1. Bonjour Via

    Merci d'avoir pris du temps pour me répondre 

    0
    1. Le code est le tien

      J'ai seulement modifié 2 choses

      1) la ligne "If Right(TextBox33.Value, 1) = "s" Then Exit Sub" vérifie le dernier caractère à droite dans le textbox et si c'est s sort de la Sub. Ceci afin d'éviter lors de la mise au format dans la ligne qui suit dan sla macro elle s'applique à nouveau et que cela renvoie éventuellement une 2eme fois le message de dépassement

      2) Pour faire afficher la Mgsbox au lieu de le faire après le premier test pour changement de couleur je le groupe dans le With


      0
      1. Merci Via ;

        votre code fonctionne parfaitement, si vous avez le temps pourriez-vous mettre des commentaires dans votre code afin que je puisse le comprendre pour pouvoir le reproduire. Bien sûr si vous avez le temps. Merci de votre patience

        0
        1. Bonjour

          Essaie ainsi

          Private Sub TextBox33_Change()
          If Right(TextBox33.Value, 1) = "s" Then Exit Sub
          Application.ScreenUpdating = False
          TextBox33.Value = Format(TextBox33.Value, "0 Mois")
                     Dim test As Boolean
          With TextBox33
              test = Val(Replace(.Text, ",", ".")) >= 6
                  If test = True Then MsgBox "Attention produit anti-crevaison route dépassé"
              .BackColor = IIf(test, vbRed, vbGreen)
              .ForeColor = IIf(test, vbWhite, vbBlack)
              .Font.Bold = test
          End With
          
          Application.ScreenUpdating = True
          End Sub

          Cdlmnt

          Via


          0