Problème dates VBA

Bonjour à tous,

J'ai une macro pour convertir pas moins de 500 fichiers .cvs en .xlsx :

Sub CSVtoXLS()
'csv_en_xlsx
    Dim xFd As FileDialog
    Dim xSPath As String
    Dim xCSVFile As String
    Dim xWsheet As String
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.StatusBar = True
    xWsheet = ActiveWorkbook.Name
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    xFd.Title = "Choisissez le dossier des fichiers à convertir :"
    If xFd.Show = -1 Then
        xSPath = xFd.SelectedItems(1)
    Else
        Exit Sub
    End If
    If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
    xCSVFile = Dir(xSPath & "*.csv")
    Do While xCSVFile <> ""
        Application.StatusBar = "Conversion en cours : " & xCSVFile
        Workbooks.Open Filename:=xSPath & xCSVFile
        Columns("A:A").Select
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True
        ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xlsx", vbTextCompare), xlWorkbookDefault
        ActiveWorkbook.Close
        Windows(xWsheet).Activate
        xCSVFile = Dir
    Loop
    Application.StatusBar = False
    Application.DisplayAlerts = True

    MsgBox "Fichiers convertis en .xlsx"

    Sheets("procédure").Select
    Range("D1").Select

End Sub

Problème! j'ai des dates qui passent du format "JJ/MM/AAAA" à "MM/JJ/AAAA"

Donc ma question est la suivante : y a t-il un moyen de contrôler le format de date et que la macro évite de le changer? :)

Merci d'avance!

fifou

Bonjour,

Je ne suis pas un expert en dates > mais j'ai constaté que l'on a moins de souci si le format de date courte dans les paramètres Windows correspond à la présentation désirée dans Excel ...

Quand des données brutes sont collées dans des plages où le format est standard > les dates prennent le format de date courte de Windows ...

Par contre, avant de changer le format de date courte dans Windows > il faut s'assurer que cela ne posera pas problème ailleurs dans Windows ou dans d'autres applications ...

ric

Bonjour,

essaie en remplaçant le 2nd 1 de :=Array(1, 1) par xlDMYFormat (ou 4)

Voir ici : https://docs.microsoft.com/fr-fr/office/vba/api/excel.range.texttocolumns
(plus particulièrement le paramètre FieldInfo)
et là : https://docs.microsoft.com/fr-fr/office/vba/api/excel.xlcolumndatatype
eric

Merci Éric pour ton temps!

Jai effectivement mis du array 1, 4 sur les colonnes concernées, avant l’enregistrement et la fermeture du fichier, et cela fonctionne parfaitement!

Merci beaucoup !!

Rechercher des sujets similaires à "probleme dates vba"