Problème inversion date EXCEL (+ conversion csv)
Résolu
cruxifer
Messages postés
16
Statut
Membre
-
f894009 Messages postés 17413 Statut Membre -
f894009 Messages postés 17413 Statut Membre -
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:
EDIT: Précision du langage dans la coloration syntaxique.
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:
- Problème inversion date EXCEL (+ conversion csv)
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Nombre de jours entre deux dates excel - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
1 réponse
Bonjour,
lignes a supprimer:
code pour ecriture fichier CSV:
A+
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+
Exemple : "10-S-P1;2014-01-06;2;"
Comment je les enlève ? Parce que sur l'ancien code je ne les avais pas...
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