Private Sub Siret_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Nombre(KeyAscii.Value) <> "" Then
KeyAscii = Asc(Nombre(KeyAscii.Value))
Else
KeyAscii = 0
MsgBox "Caractère interdit !", vbCritical
Cancel = True
'Siret.SelStart = 0 'positionne le curseur au début du textbox
'Siret.SelLength = Len(Siret) 'sélectionne le texte déjà entré
End If
End Sub
With TextBox1
.SelStart = Len(.Text)
.SetFocus
End With
Private Sub Siret_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
MsgBox "Caractère interdit !", vbCritical
End If
End Sub
Private Sub Siret_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Nombre(KeyAscii.Value) <> "" Then
KeyAscii = Asc(Nombre(KeyAscii.Value))
Else
KeyAscii = 0
MsgBox "Caractère interdit !", vbCritical
Cancel = True
[B]SendKeys "{TAB}"
SendKeys "{BACKSPACE}"
SendKeys "{UP}"[/B]
End If
End Sub
Bon, il y a surement plus simple mais cela apparemment fonctionne.
Papou: merci pour ton intervention et je note ta remarque judicieuse.
Merci et A+
Option Explicit
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789", Chr(KeyAscii)) = 0 Then
KeyAscii = 0
MsgBox "Caractère interdit !", vbCritical
With TextBox1
.SelStart = Len(.Text)
.SetFocus
End With
End If
End Sub
Merci de l'info. Une erreur sans doute due à mes tests mutiples et que je n'ai pas effacée (tu sais pour l'instant je tâtonne...d'autre part comprends pas ton "Cancel = True", pour moi pas un argument de l'événement en question....
est-ce que chez toi tu as le curseur qui se positionne à la suite des nombres déjà rentrés lorsque tu fermes la boîte de dialogue lorsque tu utilises ta macro ?
J'ai 5 procédures : change, KeyDown, KeyPress, KeyUp, Exit.Ce textbox est géré par différentes procédures événementielles, dont, entre autres un événement Keypress
KeyDown
KeyPress
Change
KeyUp
Exit
Private Sub Siret_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Re Papou
Le code en lui-même fonctionne mais lorsque je fais une erreur de saisie en rentrant une lettre à la place d'un nombre et que le message "Caractère interdit !" apparait et que je ferme cette boîte de dialogue, je suis obligé de re cliquer dans la textbox pour continuer à rentrer ma suite de nombres. Je n'ai donc pas le curseur qui apparaît et qui se place à la suite des nombres déjà rentrés.
C'est pour cela que je suis passé par SendKeys et là c'est ok.
Pourquoi, chez toi tu as le curseur qui se positionne à la suite des nombres déjà rentrés lorsque tu fermes la boîte de dialogue ?
Edit : Pierrot : je teste et te dis ce qu'il en est.