Export onglet Excel au format csv

Bonjour,

Je me permets de reprendre ce sujet déjà traité dans une discussion résolue, alors je ne sais pas si ma demande était visible le sujet étant résolu...

J'ai repris ce code de Galopin01 car je dois faire un export régulier de 8 onglets au formats csv.

Pour l'instant je teste sur l'onglet 1 : l'export fonctionne très bien mais il y a un décalage dans les colonnes qui sont générées.

Je vous joints mon fichier d'origine (Fichier test export csv) et le résultat (TestADE) pour que vous puissiez voir le format de mes colonnes.

Est-ce le fait qu'il y ait des saut de paragraphes dans certaines cellules ?

Lorsque je le fais manuellement avec exporter au format csv ça fonctionne bien et les colonnes restent correctes...

Je vous remercie par avance de votre aide.

Arnaud

13testade.zip (31.56 Ko)

Bonjour Dooody,

Pour exporter les feuilles visibles de ton classeur, je propose le code VBA suivant :

Sub ExportCSV_GVS()
    Dim oSheet As Worksheet
    Dim sPath As String
    Dim oFolder As FileDialog

    ThisWorkbook.Save
    'On demande dans quel dossier exporter les csv
    Set oFolder = Application.FileDialog(msoFileDialogFolderPicker)
    'On indique le dossier par défaut = le dossier contenant ce classeur
    oFolder.InitialFileName = ThisWorkbook.Path & "\"
    oFolder.Title = "Indiquez le dossier pour les CSV à exporter"
    If oFolder.Show = -1 Then
        sPath = oFolder.SelectedItems(1)
        For Each oSheet In Application.ActiveWorkbook.Worksheets
            'Si la feuille est visible, on l'exporte en csv
            If oSheet.Visible Then
                oSheet.SaveAs sPath & "\" & oSheet.Name, xlCSVUTF8
            End If
        Next
        MsgBox "Toutes les feuilles visibles ont été exportées en CSV!"
        ThisWorkbook.Close False
    End If
End Sub

Bonjour,

Merci de ta réponse GVIALLES.

Je viens de tester.

Il me demande bien de choisir le dossier de destination puis il y a un message d'erreur dans la macro :

"La méthode 'SaveAs' de l'objet '_Worksheet' a échoué"

et quand je fais débogage j'arrive à la ligne suivante :

oSheet.SaveAs sPath & "\" & oSheet.Name, xlCSVUTF8

C'est dommage, j'étais heureux d'avoir peut-être une solution...

Tu l'as testé avec mon fichier ?

Arnaud

Bonjour Dooody,

Oui, le code fourni a été testé sur ton classeur et ne produit pas l’erreur que tu obtiens.

Qu’indiques-tu dans le chemin?

As-tu bien compilé le projet après ajout du code?

Bonjour,

Essaie ainsi (version Excel 2007 !?) :

If oSheet.Visible Then
         oSheet.SaveAs Filename:=sPath & "\" & oSheet.Name & ".csv", _
         FileFormat:=xlCSVUTF8, _
        local:=True
End If

Local n'est peut-être utile.

Cdlt.

Dooody,

Le pb que tu rencontres doit provenir de la version 2007 d’EXCEL ne supportant pas encore l’UTF8.

Je te propose la macro modifiée ainsi:

[Sub ExportCSV_GVS()

Dim oSheet As Worksheet

Dim sPath As String

Dim oFolder As FileDialog

ThisWorkbook.Save

'On demande dans quel dossier exporter les csv

Set oFolder = Application.FileDialog(msoFileDialogFolderPicker)

'On indique le dossier par défaut = le dossier contenant ce classeur

oFolder.InitialFileName = ThisWorkbook.Path & "\"

oFolder.Title = "Indiquez le dossier pour les CSV à exporter"

If oFolder.Show = -1 Then

sPath = oFolder.SelectedItems(1)

For Each oSheet In Application.ActiveWorkbook.Worksheets

'Si la feuille est visible, on l'exporte en csv

If oSheet.Visible Then

oSheet.SaveAs sPath & "\" & oSheet.Name, xlCSV

End If

Next

MsgBox "Toutes les feuilles visibles ont été exportées en CSV!"

ThisWorkbook.Close False

End If

End Sub/code]

Bonjour,

Non je suis sur Excel 2016, désolé j’avais pas mis mon profil à jour depuis la dernière fois où je suis venu.

Par contre j’ai essayé en enlevant UTF8 dans le format d’export et ça fonctionne.

Mais ça ne me va pas car j’ai besoin d’avoir les fichiers CSV en UTF8, avec des ; comme séparateurs.

Je regarde ça demain matin au boulot.

Merci

Arnaud

Bonjour Dooody,

Pour obtenir le séparateur ";" essais la modification suivante :

                oSheet.SaveAs sPath & "\" & oSheet.Name, xlCSV, , , , , , , , True

Bonjour,

J'obtiens bien l'export csv avec le ; comme séparateur.

Mais c'est encore en ANSI.

Il faut donc que j'ouvre chaque fichier csv dans notepad+ pour le convertir au format UTF8 et là c'est le bon format de fichier que j'obtiens.

J'ai essayé en regardant les propriété/méthodes que vba me propose dans Excel pour le format de sortie en CSV il me propose :

  • xlCSV
  • xlCSVWindows
  • xlCSVMSDOS
  • xlCSVMAC

Il n'y a pas xlCSVUTF8

Dooody,

Je suis en EXCEL 2016 WINDOWS 32 bits et j'ai la valeur "xlCSVUTF8" dans l'énumération "xlFileFormat".

Peut-être dois-tu effectuer une mise à jour Office?

Bonjour,

Je viens de regarder sur mon ordinateur perso j'ai bien à disposition xlCSVUTF8 dans Excel 2016.

Apparemment en regardant sur internet c'est peut-être une référence à une bibliothèque qu'il me manque au boulot...

Il faudra que j'aille voir en vba dans outils => Références ce que j'ai car je pense que ça vient de là...

Je ferai ça le 27 mars car je suis en congés maintenant

Merci je reviendrai pour dire si j'ai trouvé.

Rechercher des sujets similaires à "export onglet format csv"