Problème date lors import CSV

bsuge

XLDnaute Nouveau
Bonjour,
J'ai problème avec les dates lors de l'import de fichiers .csv via vba.
En effet, les jours et les mois sont intervertis dans mes colonnes dates ex: j'ai "03/01/2011" au lieu de "01/03/2011"
J'ai l'impression qu'à l'ouverture des fichiers .csv, vba n'interprete pas du tout mes colonnes comme des dates.
Comment y remédier ??? ci-joint le code que j'utilise:

Sub importFichiersTextesRepertoire()
Dim Fichier As String, Direction As String
Dim Ws As Worksheet
Dim ligneTxt As String
Dim i As Integer, x As Integer
Dim Tableau() As String
Dim Madate As String

'Ouverture nouveau classeur
Workbooks.Add

'Formate la date "yyyy - mm"
Madate = "Règlements XXX" & "_" & Year(Date) & "-" & Month(Date)

'Répertoire de stockage des fichiers txt
Direction = "V:\Statistiques\Stat_reglements\XXX\" 'adapter le nom du répertoire
Application.ScreenUpdating = False

Fichier = Dir(Direction & "*.csv")
Do While Fichier <> "" 'boucle sur tous les fichiers csv du repertoire
i = 0
Set Ws = ActiveWorkbook.Sheets.Add 'ajout d'une feuille pour importer les données
ActiveSheet.Name = Split(Fichier, "_", -1)(1) 'définit la nom de l'onglet

Open Direction & Fichier For Input As #1 'ouverture fichier csv pour récupération infos
Do While Not EOF(1) 'boucle sur toutes les lignes du fichier csv
Line Input #1, ligneTxt
i = i + 1
Tableau = Split(ligneTxt, ";") 'dans cet exemple le séparateur est le point virgule
For x = 0 To UBound(Tableau)
Ws.Cells(i, x + 1) = Tableau(x)
Next
Loop
Close #1

Set Ws = Nothing
Fichier = Dir
Loop

Application.ScreenUpdating = True

'Suppression des feuilles vides
Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
ActiveWindow.SelectedSheets.Delete

'Classement des onglets par odre alphabétique
Sheets("BDF").Move Before:=Sheets(1)
Sheets("CAL").Move Before:=Sheets(2)
Sheets("GME").Move Before:=Sheets(3)
Sheets("KAR").Move Before:=Sheets(4)

'Sauvegarde du fichier
ActiveWorkbook.SaveAs Filename:=Direction & Madate & ".xls" _


End Sub

Merci d'avance pour votre aide.
 

MJ13

XLDnaute Barbatruc
Re : Problème date lors import CSV

Re

Si tu renommes ton fichier en .txt, tu peux normalement tester cette macro en plaçant ton fichier en C:\temp:

Code:
Sub Importe_CSV_TXT()
'Henry
    Workbooks.OpenText Filename:= _
        "C:\temp\XXX_BDF_RGLT_2011-04.txt", _
        Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, _
        Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
        Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 4)), TrailingMinusNumbers _
        :=True
End Sub
 

bsuge

XLDnaute Nouveau
Re : Problème date lors import CSV

Oui ça marche !!!!
Merci !
Par contre, j'aimerais bien ajouter cette partie dans mon code mais je ne sais pas ou la mettre.
En fait mon code me permet d'ouvrir plusieurs fichiers csv (ou txt ça peut facilement être modifié), de copier le contenu dans plusieurs onglets d'un classeur xls et d'enregistrer le fichier.
Puis-je te solliciter une dernière fois ?
 

bsuge

XLDnaute Nouveau
Re : Problème date lors import CSV

Il est en citation dans mon premier message mais je le remet ici avec la bonne balise :
Code:
Sub importFichiersTextesRepertoire()
 Dim Fichier As String, Direction As String
 Dim Ws As Worksheet
 Dim ligneTxt As String
 Dim i As Integer, x As Integer
 Dim Tableau() As String
 Dim Madate As String
 
'Ouverture nouveau classeur
 Workbooks.Add
 
'Formate la date "yyyy - mm"
 Madate = "Règlements Figaro" & "_" & Year(Date) & "-" & Month(Date)
 
'Répertoire de stockage des fichiers txt
 Direction = "V:\Statistiques\Stat_reglements\FIGARO\" 'adapter le nom du répertoire
 Application.ScreenUpdating = False

 Fichier = Dir(Direction & "*.csv")
 Do While Fichier <> "" 'boucle sur tous les fichiers csv du repertoire
 i = 0
 Set Ws = ActiveWorkbook.Sheets.Add 'ajout d'une feuille pour importer les données
 ActiveSheet.Name = Split(Fichier, "_", -1)(1) 'définit la nom de l'onglet

 Open Direction & Fichier For Input As #1 'ouverture fichier csv pour récupération infos
 Do While Not EOF(1) 'boucle sur toutes les lignes du fichier csv
 Line Input #1, ligneTxt
 i = i + 1
 Tableau = Split(ligneTxt, ";") 'dans cet exemple le séparateur est le point virgule
 For x = 0 To UBound(Tableau)
 Ws.Cells(i, x + 1) = Tableau(x)
 Next
 Loop
 Close #1

 Set Ws = Nothing
 Fichier = Dir
 Loop

 Application.ScreenUpdating = True

'Suppréssion des feuilles vides
 Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
 ActiveWindow.SelectedSheets.Delete

'Classement des onglets par odre alphabétique
 Sheets("BDF").Move Before:=Sheets(1)
 Sheets("CAL").Move Before:=Sheets(2)
 Sheets("GME").Move Before:=Sheets(3)
 Sheets("KAR").Move Before:=Sheets(4)
 
 ActiveWorkbook.SaveAs Filename:= _
        Direction & Madate & ".xls" _
        , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False

End Sub
 

MJ13

XLDnaute Barbatruc
Re : Problème date lors import CSV

Re

J'avoue que la cela me dépasse un peu :eek:. Mais il suffit de suivre la logique de la macro et de faire référence au nom de fichier en variable ici que tu peux récupérer du nom de ton fichier (il vaut mieux le faire en txt)

Code:
Workbooks.OpenText Filename:= _
        NomFichAOuvrir

Puis tu déboggues ton code et tu utilises l'enregisteur de macros (Henry) pour t'aider quand il faut copier d'un fichier à un autre par exemple.

Pour apprendre, je ne vois que cela :eek:.

Bon courage :).
 

Discussions similaires

Statistiques des forums

Discussions
312 163
Messages
2 085 860
Membres
103 005
dernier inscrit
gilles.hery