Bonjour à tous,

Ce problème étant régulière rencontré dans les demandes du forum, il pourrait être utile de l'intégrer aux Sources VBA Excel.

Partons de l'hypothèse que la date est saisie dans une TextBox nommée TextBox1 au format français (jj/mm/aa ou jj/mm/aaaa) et qu'elle est destinée à être placée dans la cellule A1 de la feuille active.
Si la date est simplement dans une variable String, il suffit de supprimer les deux premières lignes et de remplacer MaDate par le nom de la variable concernée.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Dim MaDate As String
MaDate = TextBox1.Value                                  ' Source des données
 
If Not IsDate(MaDate) Then                               ' Le contenu de TextBox ne correspond pas à une date valide
    MsgBox("La date saisie n'est pas conforme. Saisir la date au format jj/mm/aaaa")
Else If Val(Split(MaDate, "/")(1)) > 12 Then           ' le second élément de date ne correspond pas à un mois, évite les dates au format anglophone
    MsgBox("Le second élément de date n'est pas un numéro de mois. Saisir la date au format jj/mm/aaaa")
Else
    Range("A1").NumberFormat = "dd/mm/yyyy"      ' Format de la cellule
    Range("A1").Value = DateSerial(Split(MaDate, "/")(2), Split(MaDate, "/")(1), Split(MaDate, "/")(0))   ' Découpage du texte en année, jour et mois puis recomposition en Date
End If
Personnellement, je n'utilise jamais les UserForm. J'espère donc que la ligne 2 a une syntaxe correcte. Si ce n'est pas le cas, merci de le signaler.