VBA AddWorkbook au format CSV

Bonjour à tous,

Je souhaite copier une feuille d'un classeur Excel au format .xlsm vers un nouveau classeur au format .CSV (en gardant la mise en forme originelle).

Cette manipulation est activée par une macro et par des utilisateurs qui ne sont pas très à l'aise en informatique.

C'est pourquoi je souhaite pouvoir pré-définir le format du fichier en .CSV pour qu'il n'y ai plus qu'à "Enregistrer sous (...)"

Voici le code pour le moment :

Sub Export()

Dim objWorkbookCible As Workbook
Dim objworkbooksource As Workbook
Dim TEMP As Object

Set TEMP = Sheets("Temp_SAVE")
Set objworkbooksource = ActiveWorkbook
TEMP.Copy
Set objWorkbookCible = ActiveWorkbook

End Sub

Ci-joint un fichier exemple !

Merci d'avance !

93exemple-export.xlsm (15.68 Ko)

Bonjour,

Ci-joint ton fichier ... avec macro à tester ...

89exemple-export.xlsm (16.05 Ko)

Bonjour,

Un autre exemple.

Le nom du fichier est le nom de la feuille exportée et l'enregistrement s'effectue dans le répertoire courant (myPath).

(A supprimer si on veut enregistrer sous c:\user\xxx\Documents)

J'ai ajouté le paramètre 'Local' à l'enregistrement sous (séparateur csv!!).

Cdlt.

Option Explicit
Public Sub Export_CSV()
Dim myPath As String, myFile As String
Dim wb As Workbook
Dim ws As Worksheet

    Application.ScreenUpdating = False

    myPath = ActiveWorkbook.Path & Application.PathSeparator

    Set wb = ThisWorkbook
    Set ws = wb.ActiveSheet
    myFile = ws.Name & Format(Now, "ddmmyy hhmm")
    ws.Cells(1, 1).CurrentRegion.Copy

    Workbooks.Add (xlWBATWorksheet)
    Worksheets(1).Cells(1, 1).PasteSpecial xlPasteValuesAndNumberFormats

    ActiveWorkbook.SaveAs _
            Filename:=myPath & myFile, _
            FileFormat:=xlCSV, _
            CreateBackup:=False, _
            Local:=True
    ActiveWorkbook.Close False

    Set ws = Nothing: Set wb = Nothing

End Sub

Bonjour à vous deux,

Je vais tester ces deux codes dans la journée et vous tiendrai informé !

Merci de vos réponses !

Par contre, une petite précision, je souhaite que ce soit à l'utilisateur de choisir le dossier d'empalcement de l'enregistrement via une boîte de dialogue..

Je ne suis pas sûr que ces codes répondent à ce critère, mais peut-être que je me trompe !

Merci encore !

Re-bonjour,

J'ai testé les deux, et le code proposé Jean-Eric marche à merveille !

Du coup je vais essayer de modifier le mypath par une boite de dialogue pour choisir l'emplacement !

Merci encore !

Après réflexion, si je souhaite garder le nouveau fichier (.csv) ouvert après la sauvegarde que serait le code?

Parce que la ligne est sensée ne pas fermer le fichier, ou ai-je tort?

 ActiveWorkbook.Close False

Re,

A tester

Option Explicit
Public Sub Export_2()
Dim wb As Workbook
Dim ws As Worksheet
Dim strInitialFilename As String
Dim myFile

    Application.ScreenUpdating = False

    Set wb = ThisWorkbook
    Set ws = wb.ActiveSheet
    strInitialFilename = ws.Name & Format(Now, "ddmmyy hhmm")
    ws.Cells(1, 1).CurrentRegion.Copy

    Workbooks.Add (xlWBATWorksheet)
    Worksheets(1).Cells(1, 1).PasteSpecial xlPasteValuesAndNumberFormats
    Application.CutCopyMode = 0

    myFile = Application.GetSaveAsFilename _
             (InitialFileName:=strInitialFilename, _
              filefilter:="Fichiers csv (*.csv),*.csv", _
              Title:="Enregistrer fichier csv")

    If myFile = False Then
        ActiveWorkbook.Close False
        Exit Sub
    End If

    ActiveWorkbook.SaveAs myFile

    Set ws = Nothing: Set wb = Nothing

End Sub

Bonjour Jean-Eric,

Merci pour ta solution, cela fonctionne parfaitement !

tout à fait ce que j'attendais !

Bonne journée,

Jay

Rechercher des sujets similaires à "vba addworkbook format csv"