Macro VBA - Problème format date

ldesurmo

XLDnaute Nouveau
Bonjour à tous,

Je sais que le sujet qui me pose problème a été maintes fois discuté, mais je n'ai pas trouvé la solution qui me convient.

J'ai un fichier csv avec quelques colonnes qui comportent des dates, au format texte évidemment, dd.mm.yyyy

Une des premières chose que je demande à ma macro est de sélectionner les colonnes concernées et de remplacer les points (.) par des slash (/). Ceci ayant pour effet de transformer le format texte en format date.

Si j'effectue cette opération manuellement, (ctrl+H et remplacer) cela ne pose aucun problème, j'obtiens une liste de dates au format dd/mm/yyyy.

Si j'effectue cette tâche via le code suivant:

'Range("D:D,E:E,AF:AF,AH:AH,AJ:AJ,AN:AN,AP:AP,AR:AR").Select
'Selection.NumberFormat = "dd/mm/yyyy"
'Selection.Replace What:=".", Replacement:="/", LookAt:=xlPart, _
' SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
' ReplaceFormat:=False

J'obtiens:
- pour les dates avant le 13 des mois: une date équivalente à mm/dd/yyyy, mais au format dd/mm/yyyy. Exemple: au départ ma date est 03.05.2010 (3 mai 2010). Après l'éxécution de la macro, elle est 05/03/2010 au format "francais" => 5 mars 2010....
- pour les dates après les 13 des mois: un texte dd/mm/yyyy ! (et non pas un format date, mais à la limite ca ne me gêne pas du tout)

Savez vous si le problème vient du code ?
Si oui que changer ?
Si non, y a-t-il une possibilité de faire ce que je souhaite autrement que manuellement ?

Merci d'avance à tous !
Louis
 

pierrejean

XLDnaute Barbatruc
Re : Macro VBA - Problème format date

bonjour Louis

teste ceci

Code:
Range("D:D,E:E,AF:AF,AH:AH,AJ:AJ,AN:AN,AP:AP,AR:AR").SpecialCells(xlCellTypeConstants, 3).Select
For Each cel In Selection
  If idate(cel.Value) Then cel.Value = CDate(cel.Value)
Next
 

ldesurmo

XLDnaute Nouveau
Re : Macro VBA - Problème format date

Merci Pierre Jean pour ta réponse.
Ta proposition transforme effectivement les dates postérieures à un 12 du mois en date (alors qu'elles étaient en texte jusqu'alors), mais ca ne fonctionne toujours pas pour le reste: le 03.05.2010 (3 mai) est toujours transformé en 05/03/2010 (5 mars)...

Merci d'avance pour votre aide
Louis
 

pierrejean

XLDnaute Barbatruc
Re : Macro VBA - Problème format date

Re

Veux-tu tester ceci qui fonctionne chez moi

Code:
Sub test()
Dim ladate As Date
Range("D:D,E:E,AF:AF,AH:AH,AJ:AJ,AN:AN,AP:AP,AR:AR").SpecialCells(xlCellTypeConstants, 3).Select
For Each cel In Selection
  cel.NumberFormat = "General"
   On Error Resume Next
    ladate = Replace(cel.Value, ".", "/")
   On Error GoTo 0
  cel.Value = ladate
Next
End Sub
 

ldesurmo

XLDnaute Nouveau
Re : Macro VBA - Problème format date

Merci Pierre Jean

Cela fonctionne aussi ! Entre temps, j'avais utilisé, sur la colonne A, restreinte aux cellules utilisées ("ligne" est la première ligne vide):

Range("A4:A" & ligne - 1).Select
For Each cel In Selection
cel.Value = CDate(Left(cel.Value, 2) & "/" & Mid(cel.Value, 4, 2) & "/" & Right(cel.Value, 4))
Next

Cela marchait aussi !

Quoi qu'il en soit merci pour ton aide !
A bientot

Louis
 

Discussions similaires

Statistiques des forums

Discussions
312 393
Messages
2 087 959
Membres
103 686
dernier inscrit
maykrem