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