Forcer la valeur numérique dans le textbox

Bonjour à tous,

Je vous souhaite tous mes meilleurs vœux pour cette année 2013, bonne année et santé à toutes les personnes du forum.

Alors mon problème est que j'ai un userform avec plusieurs textbox. Je souhaite que mes textbox n'accepte que les valeurs numériques. Si on tape autre chose qu'un nombre, supprimer ce qui a été écrit et afficher le message " entrer une valeur numérique "

Si la textbox est vide ne rien afficher.

J'ai réussi à trouver une macro que j'ai bidouillé mais elle ne fonctionne pas très bien.

Elle m'affiche à chaque fois le message "entrer une valeur numérique" quand la case est vide

Je ne veux pas que ça affiche le message quand la case est vide.

LE CODE :

Private Sub txt_bras_Change()
   On Error Resume Next

    If Not IsNumeric(Right(txt_bras, 1)) Then
        MsgBox "Entrez une valeur numérique"
        txt_bras = Left(txt_bras, Len(txt_bras) - 1)
    End If

End Sub

Merci d'avance pour votre aide

Samm

Bonjour

Au lieu d'envoyer un message tu peux juste interdire la saisie

Private Sub txt_bras_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  ' Si la valeur n'est pas comprise entre 0 et 9 et qu'elle n'est pas un backspace
  If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 8) Then
    KeyAscii = 0 'on annule la pression sur la touche
  End If
End Sub

Mais si tu veux vraiment un message essayes

Private Sub txt_bras_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  ' Si la valeur n'est pas comprise entre 0 et 9 et qu'elle n'est pas un backspace
  If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 8) Then
    MsgBox "Caractère non autorisé"
    KeyAscii = 0 'on annule la pression sur la touche
  End If
End Sub

Merci Banzai64.

Ton code fonctionne nikel mais j'ai oublié de te dire que je voudrais mettre aussi une virgule flottante.

J'ai esseye de modifier ton second code mais rien a faire j'ai plein de message d'erreur.

Est-ce posssible de rajouter une virgule flottante.

Merci d'avance pour ta réponse.

Samm

Bonjour

A tester

Private Sub txt_bras_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 If InStr(1, "0123456789.,", Chr(KeyAscii)) = 0 And KeyAscii <> 8 Then
    MsgBox "Caractère non autorisé"
    KeyAscii = 0
 End If
End Sub

Merci Banzai64.

Ton code fonctionne bien.

Est ce que tu pourrais m'expliquer rapidement tes lignes de code.

Je serais incapable de refaire cette même macro.

Et encore merci de ton aide.

Bonjour

samm a écrit :

m'expliquer rapidement

C'est comme ça et pas autrement

Sinon on recherche si dans la chaîne de caractères "0123.." en incluant la , (virgule) et le . (point) on retrouve le caractère (code ASCII transmis - Variable KeyAscii ) que l'on vient de frapper

Si oui on accepte la touche

Si on ne le trouve pas et que le code n'est pas "Retour Arrière" on n'accepte pas : On annule la touche en mettant KeyAscii à 0

Cette macro est appelée quand tu appuies sur une touche, elle intervient avant l'écriture de ladite touche dans le contrôle

merci pour ces explications.

Rechercher des sujets similaires à "forcer valeur numerique textbox"