Bonjour,
La macro dont le code sera présenté effectue pour chaque fichier du dossier "Dossier" les operations suivantes:
Prenons une cellule A1 d'un des fichiers A1= 9,48,39,1.175e+005,0.194,-0.334
La macro transforme le 1.175e+005 en 11750 puis éclate la cellule de telle manière à ce que "9" soit dans une colonne , "48" soit dans une autre colonne ... "-0.334" soit dans la dernière colonne. Le résultat est sauvegardé en ".xls" pour justement conserver la mise en forme (chaque valeur dans une colonne).
J'ai besoin que le fichiers soit sauvegardé en .csv.
J'ai tout esseyé mais je n'y parviens pas.
J'ai tenté ".SaveAs Replace(.FullName, ".csv", ".csv"), xlWorkbookNormal" mais à l'ouverture du fichiers Excel m'indique que l'extension .csv n'est pas l'extension d'origine du fichier.
J'éspère que vous pourrez m'aider.
Je vous remercie infiniment pour le temps et l'attention accordés à ce problème.
Voici le code de la macro
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Sub TRANSFORM() Dim FolderName As String, FName As String Dim Wbk As Workbook Dim LastLig As Long Application.ScreenUpdating = False FolderName = "C:\Users\SONY\Desktop\Dossier\" FName = Dir(FolderName & "*.csv") Do While Len(FName) Set Wbk = Workbooks.Open(FolderName & FName) With Wbk With .Worksheets(1) LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row .Range("A1:A" & LastLig).TextToColumns Destination:=.Range("A1"), Comma:=True .Range("A1:F" & LastLig).NumberFormat = "General" .Range("G1:G" & LastLig) = 0 .Rows(1).Insert .Range("A1:G1").Value = Array("Att1", "Att2", "Att3", "Att4", "Att5", "Att6", "Class") End With Application.DisplayAlerts = False .SaveAs Replace(.FullName, ".csv", ".xls"), xlWorkbookNormal Application.DisplayAlerts = True .Close False End With Set Wbk = Nothing FName = Dir Loop End Sub
Partager