Problème inversion date EXCEL (+ conversion csv)

Résolu/Fermé
cruxifer Messages postés 16 Date d'inscription jeudi 16 avril 2015 Statut Membre Dernière intervention 19 mai 2015 - Modifié par Whismeril le 17/04/2015 à 19:16
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 - 21 avril 2015 à 09:24
Bonjour,

voilà mon problème :
Excel a un problème de dates, ok.

J'ai une macro qui m'exporte un fichier Excel en csv automatiquement (après avoir fait pleins de trucs dessus).
Mon problème est que ma macro qui travaille mes données est lourde et qu'elle n'est pas parfaitement adaptée à tous les fichiers sur lesquels je travaille (je peux pas faire mieux, je suis pas un pro en vba). Bref.
Dans mon fichier CSV j'ai une date en 2ème colonne, qui doit être sous format "yyyy-mm-dd". Ca c'est ok. Sauf que niais que je suis, dans la joie j'ai fait toutes les exportations en 3h et quelques, et là : mes mois et mes jours sont inversés 4 lignes sur 5...

Personne ne sait comment on stoppe ça ? J'en peux plus de ce problème.



Mon code de conversion de date + exportation en csv:

Dim newWS As Worksheet 'Fait référence à la feuille a_extraire qui servira à la création du fichier csv
Dim directory As String '[/contents/234-cvs-introduction Répertoire de travail]
Dim nom_fichier As String 'Nom du fichier csv
    Dim nbRow_x As Integer 'Nombre de lignes à exporter
    Dim nbCol_x As Integer 'Nombre de colonnes à exporter
    Dim Plage As Object, oL As Object, oC As Object, [/contents/452-fichier-tmp Tmp] As String, Sep$ 'Variables servant à la création du fichier csv



With newWS 'Conversion de la date au format aaaa-mm-jj
        .Columns("B:B").NumberFormatLocal = "aaaa-mm-jj;@"
        .Columns("B:B").FormulaLocal = Columns("B:B").Value
    End With
    
    '_____________________________________________________________
    
    '-----------------------Création du fichier CSV--------------------
    
    nbRow_x = newWS.UsedRange.Rows.Count 'Nombre de lignes de la feuille a_exporter
    nbCol_x = newWS.UsedRange.Columns.Count 'Nombre de colonnes de la feuille a_exporter
    nom_fichier = directory & "\csv\CSV_" & Application.Workbooks.Item(1).Name & ".csv" 'Nom du fichier créé de facon auto
    Sep = ";"
   
    Set Plage = newWS.Range(newWS.Cells(1, 1), newWS.Cells(nbRow_x, nbCol_x)) 'Sélection de la plage à exporter

    
    'Ecriture du csv
    Open nom_fichier For Output As #1
    For Each oL In Plage.Rows
    Tmp = ""
    For Each oC In oL.Cells
    Tmp = Tmp & CStr(oC.Text) & Sep
    Next
    Print #1, Tmp
    Next
    Close
    MsgBox "Exportation au format .csv réussie"


EDIT: Précision du langage dans la coloration syntaxique.
A voir également:

1 réponse

f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 1 712
17 avril 2015 à 16:26
Bonjour,

lignes a supprimer:
With newWS 'Conversion de la date au format aaaa-mm-jj
        .Columns("B:B").NumberFormatLocal = "aaaa-mm-jj;@"
        .Columns("B:B").FormulaLocal = Columns("B:B").Value
    End With


code pour ecriture fichier CSV:
    'Ecriture du csv
    Open nom_fichier For Output As #1
    
    For Each oL In Plage.Rows
        TMP = ""
        N_Col = 1
        For Each oC In oL.Cells
            If N_Col <> 2 Then
                TMP = TMP & CStr(oC) & Sep
            Else
                'formatage date:aaaa-mm-jj
                DatC = Right(oC, 4) & "-" & Mid(oC, 4, 2) & "-" & Left(oC, 2)
                TMP = TMP & DatC & Sep
            End If
            N_Col = N_Col + 1
        Next oC
        Write #1, TMP
    Next oL
    Close
    MsgBox "Exportation au format .csv réussie"


A+
0
cruxifer Messages postés 16 Date d'inscription jeudi 16 avril 2015 Statut Membre Dernière intervention 19 mai 2015
20 avril 2015 à 10:34
Super ! Mais par contre ça me donne des lignes entre double côtes...
Exemple : "10-S-P1;2014-01-06;2;"
Comment je les enlève ? Parce que sur l'ancien code je ne les avais pas...
0
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 1 712 > cruxifer Messages postés 16 Date d'inscription jeudi 16 avril 2015 Statut Membre Dernière intervention 19 mai 2015
21 avril 2015 à 09:24
Bonjour,

Sub conv_csv()
    Dim TMP As String, DatC As String
    
    Close
    With Worksheets("feuil1")
        nbRow_x = .UsedRange.Rows.Count 'Nombre de lignes de la feuille a_exporter
        nbCol_x = .UsedRange.Columns.Count 'Nombre de colonnes de la feuille a_exporter
        nom_fichier = "D:\_ACSV\test_date.csv"
        Sep = ";"
        Set Plage = .Range(.Cells(1, 1), .Cells(nbRow_x, nbCol_x)) 'Sélection de la plage à exporter
    End With
        
    '-----------------------Création du fichier CSV--------------------
    'Ecriture du csv
    Open nom_fichier For Output As #1
    
    For Each oL In Plage.Rows
        TMP = ""
        N_Col = 1
        For Each oC In oL.Cells
            If N_Col <> 2 Then
                TMP = TMP & CStr(oC) & Sep
            Else
                DatC = Right(oC, 4) & "-" & Mid(oC, 4, 2) & "-" & Left(oC, 4)
                TMP = TMP & DatC & Sep
            End If
            N_Col = N_Col + 1
        Next oC
        Print #1, TMP
        'Write #1, TMP
    Next oL
    Close
    MsgBox "Exportation au format .csv réussie"
End Sub
0