Msgbox_entre deux valeur

Salut

svp comment faire pour afficher msg d'erreur si la valeur inférieur de 5 et supérieur de 50

Bonjour,

comment faire pour afficher msg d'erreur si la valeur inférieur de 5 et supérieur de 50

... Et cette valeur, elle figurerait où? Dans une cellule, dans un UserForm, dans une zone de texte issue des contrôles de formulaire, etc.

Quand tu écris inférieur de 5 et supérieur de 50 , tu veux dire inférieur à 5 et supérieur à 50

Si c'est dans une cellule, as-tu déjà regardé du côté des Validations de données (onglet Données) ?

pardon j'ai oublié les valeurs dans une zone de texte

pardon j'ai oublié les valeurs dans une zone de texte

Sous quelle forme ? un exemple ?

Bonjour lembmc, le forum,

je te propose cette formule, si ta valeur à tester est dans A1 :

=SI(OU(A1<5;A1>50);"Erreur";"OK")

je te laisse adapter à ta TextBox.

dhany

Merci mais je veux pas formule je veux un code vba :

Ex

sub text1_change

Code

End sub

@lembmc

en VBA, ça donne :

Sub Essai
  If [A1] < 5 Or [A1] > 50 Then MsgBox "Erreur" Else MsgBox "OK"
End Sub

pour ta valeur qui est dans TextBox1 :

Option Explicit

Sub TextBox1_Change()
  Dim vx%: vx = Val(TextBox1) ' vx : valeur x
  If vx < 5 Or vx > 50 Then MsgBox "Erreur" Else MsgBox "OK"
End Sub

dhany

salut

Merci, mais ce code ne donne pas l'espace pour écrire les deux chiffres au même temp, puis le message d'erreur apparaît.

ex:

quand j'écris 10 le message "erreur" apparaît parce que j'ai saisi 1 puis 0 mais moi je veux le msgbox apparait apres la fin de la frappe du deux numéros

oui, j'ai compris c'que tu veux dire, mais la solution est pas évidente ! si tu veux saisir 50, tu dois taper 5, puis 0 ; or après la frappe du 5, on peut pas savoir d'avance que si tu voulais saisir 5 tu as terminé la saisie ! donc ça oblige à attendre la frappe de 2 caractères avant de faire le test ➯ pour 5 à 9, tu dois saisir un zéro devant : 05 ; 06 ; 07 ; 08 ; 09 ; cela avec ce nouveau code VBA :

Option Explicit

Sub TextBox1_Change()
  Dim chn$, lng As Byte, vx%
  lng = Len(TextBox1): If lng < 2 Then Exit Sub '1 seul caractère ; ou 0 caractère si Suppr
  chn = "Erreur" 'valeur par défaut, qui sera mise à "OK" si c'est bon
  If lng = 2 Then
    vx = Val(TextBox1): If vx >= 5 And vx <= 50 Then chn = "OK"
  End If
  MsgBox chn 'si longueur >= 2 : affichage de "Erreur" ou "OK"
End Sub

comme tu n'as pas de raison de saisir 0 devant 10 à 50, un nombre sur 3 chiffres (ou plus) sera forcément une erreur car du fait que le nombre minimum sur 3 chiffres est 100, il est forcément > 50 !

dhany

.... mais moi je veux le msgbox apparait apres la fin de la frappe du deux numéros

Bonjour,

Au lieu d'utilser l'évènement Change, utilises Exit :

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  Dim vx%: vx = Val(TextBox1) ' vx : valeur x
  If vx < 5 Or vx > 50 Then
    MsgBox "Erreur" 
    Cancel = True
  Else
    MsgBox "OK"
  End If
End Sub

merci les gars vous êtes merveilleux je vous remercie infiniment, C'est ça qu'est ce que je le recherche

Rechercher des sujets similaires à "msgbox entre deux valeur"