Sub convertir_en_date()
With Sheets(1)
For i = 1 To 7
x = InStr(.Cells(i, 1).Value, " ")
.Cells(i, 2).Value = CDate(Mid(.Cells(i, 1).Value, x, Len(.Cells(i, 1).Value) - x + 1))
Next i
End With
End Sub
[SIZE=2][COLOR=GRAY][B][I]DANS UN MODULE DE CODE STANDARD[/I][/B][/COLOR]
[COLOR=NAVY]Sub[/COLOR] convertir_en_date()
[COLOR=NAVY]With[/COLOR] Sheets(1)
[COLOR=NAVY]For[/COLOR] i = 1 [COLOR=NAVY]To[/COLOR] 7
.Cells(i, 2) = DateValue(Mid(.Cells(i, 1), InStr(.Cells(i, 1), " ")))
[COLOR=NAVY]Next[/COLOR] i
[COLOR=NAVY]End With
End Sub[/COLOR][/SIZE]
C'est la mention du jour de la semaine (lundi, mardi, etc...) qui empêche le code de convertir l'expression chaîne de caractère en vraie valeur Date. Il convient donc de supprimer cet élément de la chaîne avant de la convertir.
Une remarque supplémentaire :
Tu devrais réserver le module de code de la Feuil1 aux seules procédures évènementielles et insérer tes propres procédures dans un module de code standard.
Très bien, mais au risque de te décevoir, si tu utilises Format(), tu n'obtiens plus une Date mais simplement une nouvelle chaîne de caractères...
Si tu veux qu'Excel affiche la date avec la mention du jour de la semaine, tout en conservant la notion de Date, ce n'est pas en macro qu'il faut voir le pb mais avec le format de cellule directement.