Bonsoir Ours masqué,
Si j'ai bien compris, tu voudrais vérifier la saisie lors de la perte du focus par le TextBox et effectuer le traitement si c'est OK ou revenir au TextBox si c'est KO. C'est bien ça ?
Il te faut donc choisir un évènement qui intervient au sortir du curseur... Il en existe effectivement plusieurs pour les TextBox : BeforeUpdate(), AfterUpdate() et Exit(). Lequel choisir ?
Tout d'abord, si tu souhaites empêcher la perte de focus par le contrôle si la saisie n'est pas bonne (pour permettre à l'utilisateur de rectifier sa saisie par exemple), il te faut choisir un évènement qui possède un argument
Cancel. Or, dans ce cas, tu n'as pas choisi le bon évènement car AfterUpdate() est le seul des 3 qui ne possède pas d'argument ! Il te reste donc le choix entre BeforeUpdate() et Exit().
J'ai testé les 2 et ça semble fonctionner correctement. Ci-dessous, l'exemple avec Exit() :
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With TextBox1
If .Text Like '##/##/##' Or _
.Text Like '#/##/#' Or _
.Text Like '##/#/#' Or _
.Text Like '#/#/#' Then
Call Couleurs.InitPiloteCouleur(DonnéesPilote.Caption)
TextBox1.BackColor = Range('A6').Interior.Color
Else
Cancel = True 'Empêche la perte du focus
End If
End With
End Sub
Pour info, avec l'opérateur
Like, il existe des caractères
jokers (voir l'aide) : '#' est l'un d'entre eux et il est équivalent à '[0-9]'.
Si ça peut t'être utile, je te joins un exemple de contrôle de date dans un TextBox que j'avais réalisé il y a quelques temps...
Cordialement,
[file name=mDF_txtDATE_20051117013941.zip size=12552]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/mDF_txtDATE_20051117013941.zip[/file]