re
bonjour
ben l'erreur elle est simple en fait
d'abord tu fait
TextBox1.Value = Format(Date, "dd mmm yyyy", 2, 2)
la c'est ok tu formate ta date dans le textbox
maintenant apres quand tu fait
.Cells(DL, C.Column + 1).Value = Format(CDate(TextBox1.Value), "dd mmm yyyy", 2, 2)
ca ne peut fonctionner car cdate reconnais n'importe quoi car c'est un string etant donnée qu'il y a des lettres autres que le separator de date
maintenant exemple
si tu fait dans un userform vierge avec deux textbox
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Private Sub UserForm_Click()
TextBox1.Value = Format(Date, "dd mmm yyyy")
ladate = DateValue(TextBox1.Value)'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
TextBox2 = DateValue(TextBox1.Value)
MsgBox Month(ladate)
' sans formatage il y aura donc les separator en fonction de votre system( / ou - ou autre)
Cells(1, 1).Value = DateSerial(Year(ladate), Month(ladate), Day(ladate)) ' ici tu aura la date en format de ta region paramétrée dans ton systeme
Cells(2, 1).NumberFormat = "mm dd yyyy" 'format US sans separator
Cells(2, 1).Value = DateSerial(Year(ladate), Month(ladate), Day(ladate))
Cells(3, 1).NumberFormat = "yyyy mm dd" 'format canadien sans separator
Cells(3, 1).Value = DateSerial(Year(ladate), Month(ladate), Day(ladate))
End Sub |
si tu dois prendre une date avec les mois en lettre c'est datevalue!!!!! et non Cdate
je precise que malgré l'affichage différent dans les 3 cellules la date est la meme en terme de "VALUE"
je pars du principe d'injecter toujours une date par date serial ca n'inverse pas les (mois /jours)
quand au formatage c'est avec numberformat dans les cellule jamais format(une date,"le format")
sinon tu n'est pas sorti de l'auberge 
datevalue... datevalue... datevalue !!!!!
edit
pour t'en convaincre tu peut faire le test
MsgBox "mois cellule1= " & Month(CDate(Cells(1, 1))) & vbCrLf & "mois cellule2= " & Month(CDate(Cells(2, 1))) & vbCrLf & "mois cellule3= " & Month(CDate(Cells(3, 1))) & vbCrLf
Partager