Salut Marc, Willy, Robert, Jocelyne, le Forum
Heureux d'avoir pu un peu t'orienter Willy.
Pour Marc, voici une méthode qui ne laissera pas passer ton User si il saisit autre chose qu'une date dans une TextBox de UserForm.
Matériel nécessaire pour Tester :
1 Classeur Vierge
1 UserForm
1 TextBox nommée TextBox1
1 CommandButton (ou n'importe quoi, c'est pour sortir du focus de la textbox)
Le Code à mettre dans le Private Module du UserForm en Question :
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim DateSep As Variant 'La Fonction Split retourne Variant
Dim TheDate As Date
DateSep = Split(TextBox1.Text, Application.International(xlDateSeparator))
If UBound(DateSep) <> 2 Then GoTo Fin '<<< Gestion d'erreur si NON Séparateurs des paramètres du PC
If Not IsDate(TextBox1.Value) Then GoTo Fin '<<< Gestion si NON Date
TheDate = CDate(TextBox1) '<<< Initialisation pour garder la date (pour des calculs éventuels par VBA)
On Error GoTo Fin 'si le user tape un style du truc 12/01/201
Range("A1") = TheDate '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Possibilité I
Range("B1") = CDate(Format(TheDate, "DD/MM/YYYY")) '<<<< Possibilité II
Range("C1") = CDate(Format(TextBox1, "DD/MM/YYYY")) '<<< Possibilité II
Exit Sub
Fin: 'Label de sortie si on a pas affaire à une date.
Cancel = True '<< Si on veut bloquer le User dans cette TextBox
With TextBox1 'pour Sélectionner/Surligner le text faux dans la TextBox
.SetFocus
.SelStart = 0
.SelLength = Len(TextBox1.Text)
End With
End Sub
Voilà, on peut aussi mettre un MsgBox, mais pourquoi stresser le User pour rien... De toute façon il aura vite compris !!!
Bon Apétit à tous et toutes
@+Thierry