Problème conversion csv et formats de date

Bonjour,

Je vous explique mon problème. Regardez le fichier suivant, qui l'illustre:

Alors en gros, en prérequis j'ai importé un fichier csv qui apparait tel quel dans l'onglet "Data".

Le souci:

Lorsque manuellement, je fais convertir mon fichier : Données --> Convertir --> Délimité --> Autre "|", Excel me met très bien les dates en colonne 6 comme il faut. Lorsque je filtre sur les dates, j'ai bien le 2 octobre et le 24 septembre.

Par contre, lorsque je fais exactement la meme chose en VBA :

Columns("A:A").Select

Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _

TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _

Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _

:="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _

1), Array(6, 1)), TrailingMinusNumbers:=True

Et bien il me fait n'importe quoi avec les dates. Il me transforme le 2 octobre en 10 février, et le 24 septembre passe au format texte, il n'est plus reconnu comme une date.

Je vois bien qu'il y'a un souci de format US / Européen mais je n'arrive pas à le résoudre. Il faut imaginer que le fichier contient environ 1000 lignes de ce type donc il faut que j'arrive à l'automatiser.

Merci pour votre aide !!!

Je désespère...

Julien

Bonjour actaris51,

Le problème que tu soumets est connu de Microsoft mais semble ne pas avoir trop de solutions...

Cependant, je te propose une alternative. Il s'agit de lire ton fichier CSV ligne à ligne en VBA, et de rapatrier les lignes dans ton fichier.

Je ne sais pas encore s'il y aura un problème avec les dates mais ça vaut le coup d'essayer si tu souhaites automatiser.

Pour ça joins un fichier CSV avec quelques lignes ça suffit. Si tu souhaites explorer cette voix-là...

Bonjour,

Si les dates d'origine sont au format texte dans le fichier cvs (délimitées par des "), tu peux les conserver

au format texte : Array(6 ,2) et les convertir ensuite :

Sub Formatercsv()
  With Sheets("Data").UsedRange
    .Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
      TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
      Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="|", _
      FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), _
      Array(6, 2)), TrailingMinusNumbers:=True
    .Columns("F:F").NumberFormatLocal = "jj/mm/aaaa hh:mm:ss;@"
    .Columns("F:F").FormulaLocal = Columns("F:F").Value
    .Columns("F:F").EntireColumn.AutoFit
  End With
End Sub

Ah ça marche nickel chez moi ta solution Patrice !

Super ça marche.

Merci beaucoup !

Rechercher des sujets similaires à "probleme conversion csv formats date"