Re : Création en auto d'un fichier texte à partir d'un fichier CSV
Bonjour,
Voici les lignes de codes avec mes commentaires Ouille, c'est peut être inexacte !
En tous cas bizarre, après rajout de lignes qui permet de rajouter les espaces, le fichier final comporte bien maintenant des espaces mais entre chaque tabulations. Cela a pour conséquence d'allonger les positions.
Ouppps j'ai relu l'ensemble des lignes de codes, franchement je pêche
Sub EONIATEST_IV()
'crédits à Docmarti pour l'ouverture du CSV ;o)
'Déclarations des variables
Dim Chemin$, fCSV As Workbook, NewTxtFile As Workbook, fic, dl&, ncol, arrFor
'Définition du nom du dossier où sera le fichier Texte
Chemin = ThisWorkbook.Path & "\"
'Ouverture de la boite de dialogue pour ouvrir le *.csv
fic = Application.GetOpenFilename("Fichiers CSV (*.csv), *.csv")
If fic = False Then
' test si fic correspond bien à un fichier
Exit Sub
End If
Application.ScreenUpdating = False
'fige écran
Set fCSV = Workbooks.Open(fic, , , 2, , , True, , , , , , False, local:=True)
'Ouvre le fichier CSV
Set NewTxtFile = Workbooks.Add(xlWBATWorksheet)
'Ouvre le nouveau fichier texte
fCSV.Sheets(1).Copy After:=NewTxtFile.Sheets(1): fCSV.Close False
With NewTxtFile
.Sheets(1).Name = "EXPORT_TXT"
'Nom de la feuille 1
With .Sheets(2)
'Feuille 2
.Name = "eonia"
'Nom de la feuille
.Columns("C:G").Delete: .Rows("1:8").Delete
'Suppression des 8 lignes
dl = .Cells(Rows.Count, 1).End(xlUp).Row
End With
With .Sheets("EXPORT_TXT")
' Utilisation de la Feuille 1 --> Export_Txt
.Activate
'Activation cette feuille
.Range("A1:BX1").FormulaR1C1 = "=CHAR(32)"
'Sélection de la plage de données A1:BX1 puis placement des espaces dans colonnes vides
ncol = Array(1, 9, 50, 61, 76)
'Déclaration du tableau avec Les differentes positions des colonnes concernées
arrFor = Array("=""IN""", "=""EON""", "=TEXT(eonia!RC[-49],""aaaammjj"")", "=eonia!RC[-59]", "=eonia!RC[-74]")
For i = 0 To 4
.Cells(1, ncol(i)).FormulaR1C1 = arrFor(i)
'FormulaR1C1 => Plage qui contient toutes les cellules de la feuille, nombre de colonne puis place la formule dans la cellule
Next i
.Range("A1:BX1").AutoFill Destination:=Range("A1:BX" & dl), Type:=xlFillDefault
'Sélection de la plage de données puis recopie la formule
.UsedRange.Value = .UsedRange.Value
'Plage qui contient toutes les cellules utilisés
End With
Application.DisplayAlerts = False
'inhibe alert message
.Sheets(2).Delete
'Suppression de la feuille 2
.SaveAs Chemin & "Export_Test" & Format(Date, "ddmmyyyy") & ".txt", xlText, False
'Enregistement du fichier "Export_Test + date" dans le même chemin que le fichier CSV
.Close True
'Il fermera si la condition est respectait
Application.DisplayAlerts = True
End With
MsgBox "Traitement terminé mais c'est pas beau à voir ;o) "
'Affiche un message dans une boîte de dialogue,
Application.ScreenUpdating = True
End Sub