Enregistrer un fichier au format CSV dans une macro

Painghou

XLDnaute Nouveau
Bonjour,

Je suis sous Excel 2010.

Je dois enregistrer une feuille d'un classeur au format CSV.

Lorsque je le fait manuellement, cela fonctionne, mais si je le fais dans la macro, mon fichier se retrouve pollué de ","...

Voici les ligne que j'utilise :

Sheets("importtrace").Select
Sheets("importtrace").Move
ActiveWorkbook.SaveAs Filename:=NomFichier & ".csv", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
ActiveWorkbook.Save
ActiveWindow.Close Savechanges:=True

J'ai vérifié, dans mes paramètres régionaux, il y a bien le ";" en séparateur.

Je me casse la tête sur cette macro, merci de votre aide
 

Lone-wolf

XLDnaute Barbatruc
Re : Enregistrer un fichier au format CSV dans une macro

Bonsoir Painghou et bienvenue sur XLD.

C'est par-ce que tu à mis une variable(NomFichier) sans l'initialier. Il faut écrire comme ceci

Code:
Dim NomFichier, Chemin as String

Chemin = "C:\Users\Painghou\Desktop\"
NomFichier = "importtrace"

ActiveWorkbook.SaveAs Filename:=Chemin & NomFichier & ".csv", _
        FileFormat:=xlCSV, CreateBackup:=False

A+ :cool:
 
Dernière édition:

Painghou

XLDnaute Nouveau
Re : Enregistrer un fichier au format CSV dans une macro

Bonjour,

En fait je télécharge un fichier *.ascii que je mets en forme dans l'onglet du classeur que je nomme "importtrace"
Et ensuite cet onglet je veux le sauvegarder en CSV.
 

cathodique

XLDnaute Accro
Re : Enregistrer un fichier au format CSV dans une macro

Vois si ça te conviens
VB:
Option Explicit
Sub CréerFichierCSV_BD()
    Dim Plage As Range, Fichier As String, Chaine As String
    Dim L As Long, F As Integer, C As Integer
    
    NomFichier = "Mon fichier" & ".csv"     'à adapter
    Fichier = ThisWorkbook.Path & "\" & NomFichier
    
    Application.ScreenUpdating = False
    With Worksheets("feuil1")
        Set Plage = .UsedRange
        F = FreeFile()
        Open Fichier For Output As #F
        For L = 1 To Plage.Rows.Count
            Chaine = Plage.Cells(L, 1)
            For C = 2 To Plage.Columns.Count
                Chaine = Chaine & ";" & Plage.Cells(L, C)
            Next C
            Print #F, Chaine
        Next L
        Close #F
        
    End With
    Application.ScreenUpdating = True
MsgBox "Transfert terminé!"

End Sub
 

Discussions similaires


Haut Bas