XL 2016 Saisie unique des chiffres dans le textbox

melltel

XLDnaute Occasionnel
bonjour,
svp je cherche a bloquer la saisie des lettres et autres caractéres dans ma textbox.
tout en autorisant juste des chiffres et en signalant lorqu'on ne saisie pas les nombres, par un Msgbox ''valeur incorrete''.
mon code est:

Private Sub R08_VUE_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789:/", Chr(KeyAscii)) = 0 Then KeyAscii = 0
Else
MsgBox ("La valeur saisie n'est pas conforme")
End If
End Sub

merci!!!
 

JM27

XLDnaute Barbatruc
bonjour
pas testé m&ais cela devrait le faire
VB:
Private Sub R08_VUE_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("0123456789:/", Chr(KeyAscii)) = 0 Then
        KeyAscii = 0
        MsgBox ("La valeur saisie n'est pas conforme")
    End If
End Sub
 

job75

XLDnaute Barbatruc
Bonjour melltel,
VB:
Private Sub R08_VUE_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789:/", Chr(KeyAscii)) = 0 Then MsgBox "La valeur saisie n'est pas conforme": KeyAscii = 0
End Sub
Edit : salut JHA, JM27, pas rafraîchi, XLD ne se met pas à jour assez souvent.

A+
 
Dernière édition:

melltel

XLDnaute Occasionnel
bonjour
pas testé m&ais cela devrait le faire
VB:
Private Sub R08_VUE_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("0123456789:/", Chr(KeyAscii)) = 0 Then
        KeyAscii = 0
        MsgBox ("La valeur saisie n'est pas conforme")
    End If
End Sub
ceci affiche juste le MsgBox sans respecter la condition. au click,c'est seulement le message d'erreur qui s'affiche.
enfet je desire avoir une condition...si c'est un chiffre ca passe et remplie mon tableau sinon affiche le MsgBox "la valeur saisie n'est pas conforme" ceci avec le keyPress.
merci!
 

melltel

XLDnaute Occasionnel
bonjour
pas testé m&ais cela devrait le faire
VB:
Private Sub R08_VUE_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("0123456789:/", Chr(KeyAscii)) = 0 Then
        KeyAscii = 0
        MsgBox ("La valeur saisie n'est pas conforme")
    End If
End Sub
merci.
voici la solution que m'a proposé Job75 et ca marche

Private Sub R08_VUE_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789:/", Chr(KeyAscii)) = 0 Then MsgBox "La valeur saisie n'est pas conforme": KeyAscii = 0
End Sub
 

job75

XLDnaute Barbatruc
La macro précédente ne permet pas de voir le caractère erroné qui a été entré.

Mais surtout elle ne va pas du tout si l'on entre un texte par copier-coller.

Utilisez plutôt cette macro :
Code:
Private Sub R08_VUE_Change()
Dim t$, i%
t = R08_VUE
For i = Len(t) To 1 Step -1
    If InStr("0123456789:/", Mid(t, i, 1)) = 0 Then t = Left(t, i - 1) & Mid(t, i + 1)
Next
If t <> R08_VUE Then MsgBox "La valeur saisie n'est pas conforme": R08_VUE = t
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
315 132
Messages
2 116 587
Membres
112 798
dernier inscrit
nicoolio