Exporter le contenu de plusieurs feuilles dans un fichier .CSV

Bonjour,

J'ai écris du code pour exporter une feuille dans un fichier .CSV qui fonctionne.

Par contre, je me demande, est-ce qu'il possible d'exporter toutes les feuilles de mon classeur dans un seul onglet d'un seul fichier .CSV

Note:

Seulement le contenu des colonnes N, O et Y à partir de la ligne 10 (Je n'ai pas besoin des contenus vides dans ces colonnes).

À côté de chacune des données, ajouter une colonne qui sera le contenu de la cellule A8 de chacune des feuilles pour identifier à qui appartient les données

Dernière chose, en haut du fichier .CSV, inscrire la date de l'extraction.

Voici mon fichier:

10exporter.xlsm (29.40 Ko)
9exporter.xlsm (29.05 Ko)
Public Sub Exportation()
Dim wb As Workbook, ws As Worksheet
Dim strPath As String, strFilename As String
    Set wb = ThisWorkbook
    Set ws = wb.Worksheets("ABC")
    strPath = wb.Path & Application.PathSeparator
    strFilename = "TEST.csv"
    ws.Copy
    With ActiveWorkbook
        .SaveAs Filename:=strPath & strFilename, _
                FileFormat:=xlCSV, _
                local:=True '? adapter
        .Close savechanges:=False
    End With
End Sub

Bonjour

Par contre, je me demande, est-ce qu'il possible d'exporter toutes les feuilles de mon classeur dans un seul onglet d'un seul fichier .CSV

Un csv n'a pas d'onglet donc c'est une seule liste

Une solution PowerQuery, intégré à Excel, ci-joint :

  • le fichier Aexporter.xlsx sans code
  • le fichier Export2_PQ.xlsx qui contient
    • une cellule dans Feuil1 où indiquer le fichier à traiter
    • l'onglet Feuil2 avec la date et le résultat de la requête qui sera l'onglet actif pour enregistrer en csv
    • on peut donc saisir le nom du fichier à traiter, puis par VBA actualiser la requête, activer l’onglet Feuil2 et enregistrer en csv (3 lignes de VBA)
  • le résultat en csv
24aexporter.xlsx (19.40 Ko)
15export2-pq.xlsx (21.04 Ko)
10export2-pq.csv (1.64 Ko)

Super merci beaucoup Chris, c'est exactement ce que je voulais !

J'essaie de comprendre ce que tu as fais pour pouvoir l'adapter à mon fichier originale.

Comment as-tu fait pour exporter ton fichier aexporter.xlsx dans le fichier export2-pq.xlsx ?

◦on peut donc saisir le nom du fichier à traiter, puis par VBA actualiser la requête, activer l’onglet Feuil2 et enregistrer en csv (3 lignes de VBA)

Tu parles de 3 lignes VBA, à quel endroit est-il ? Je ne le vois pas.

À quoi correspond la colonne ABC ? Et pourquoi le Titre1 est filtré ?

let
 Source = Excel.Workbook(File.Contents(Excel.CurrentWorkbook(){[Name="Fichier"]}[Content][Column1]{0}), null, true),
 #"Autres colonnes supprimées" = Table.SelectColumns(Source,{"Name", "Data"}),
 #"Data développé" = Table.ExpandTableColumn(#"Autres colonnes supprimées", "Data", {"Column14", "Column15", "Column25"}, {"Column14", "Column15", "Column25"}),
 #"Premières lignes supprimées" = Table.Skip(#"Data développé",2),
 #"En-têtes promus" = Table.PromoteHeaders(#"Premières lignes supprimées", [PromoteAllScalars=true]),
 #"Type modifié" = Table.TransformColumnTypes(#"En-têtes promus",{{"ABC", type text}, {"Titre1", type any}, {"Titre2", type any}, {"Titre3", type any}}),
 #"Lignes filtrées" = Table.SelectRows(#"Type modifié", each ([Titre1] <> null and [Titre1] <> "Titre1")),
 #"Colonnes renommées" = Table.RenameColumns(#"Lignes filtrées",{{"ABC", "Feuille"}})
in
 #"Colonnes renommées"
capture d ecran 2020 12 11 201413

Gros merci!

Bonjour,

J'ai réussi à mettre à jour dans l'onglet "Feuil2" du fichier "export2-pq.xlsx" mais il ne s'est pas mis à jour dans le fichier ".csv."

Qu'est-ce qu'il faut faire pour que le fichier ".csv" se mette à jour aussi ?

Je ne vois pas tes 4 lignes de codes VBA, à quel endroit se trouve t'il ?

Merci beaucoup !!

Bonjour

Pour l'instant

je n'ai pas mis de VBA (c'est un fichier xlsx et non xlsm) : pour que tu vois déjà si cela convient. Donc pour l'instant il fallait actualiser et sauvegarder à la main

Ci-joint le fichier modifié :

  • Correction du problème pour la colonne ABC
  • Ajout du code VBA et d'un bouton. Pour éviter d'écraser par erreur le csv, j'ai prévu la fermeture du classeur à la fin du traitement
27export2-pq.xlsm (28.91 Ko)

Salut Chris,

J'ai réussi à importer mes données originales.

Dernière chose…

Par contre, rendu à l'étape "Type modifié", il ne trouve pas la colonne "Titre1"

Que fait l'étape "Type modifié" ?

Merci…

capture1 capture2

Bonjour

Il est important de fournir au départ un fichier représentatif.

PowerQuery travaille avec une logique Base de données, comme Excel avec les tableaux structurés.

Ce qui compte ce sont les titres de colonnes.

SI tes fichiers réels ont d'autres titres que Titre 1, etc, cela n'impacte pas que le typage des données mais aussi le filtre qui élimine la répétition des en-tête

Le typage est important car, si Excel ne récupère pas correctement les dates, nombres et textes, le csv sera pourri

Bonjour,

En fait, je suis allée tranquillement pour comprendre les étapes.

J'ai travaillé avec ton fichier : aexporter.xlsx et j'ai renommé avec mes bons titres. Je n'ai pas fait d'autres modifications.

Ensuite, j'ai actualisé, et j'ai l'erreur de type.

Quel est le problème ?

Merci!

Voici les fichiers:

11export2-pq.xlsm (27.53 Ko)

8aexporter.xlsx (19.60 Ko)

RE

Comme je l'ai dit 2 étapes de la requête PowerQuery ne trouvent plus les titres qui existaient dans l'exemple fourni et pour PowerQuery les titres sont LES repères

"Si tes fichiers réels ont d'autres titres que Titre 1, etc, cela n'impacte pas que le typage des données mais aussi le filtre qui élimine la répétition des en-tête"

Ci-joint fichier modifié : requête et aussi la ligne export du VBAafin d'avoir un ; plutôt qu'une virgule et les dates au format français

20export3-pq.xlsm (27.83 Ko)

Merci Chris !!!!!!

Ci-joint fichier modifié : requête et aussi la ligne export du VBAafin d'avoir un ; plutôt qu'une virgule et les dates au format français

Est-ce que c'est possible de mettre un point virgule au lieu d'une virgule ?

RE

C'est justement ce que fait le VBA modifié comme je l'ai indiqué

Avec le fichier que tu m'as envoyé, j'obtiens:

capture1

J'aimerais avoir ce format dans la même cellule séparé par des points-virgules , est-ce que c'est possible ?

capture2

RE

Si tu ouvres un csv acec EXCEL tu ne vois pas le csv mais ce qu'Excel décide d'en faire

Pour vérifier un csv on utilise le bloc notes pour l'ouvrir, pas Excel

Est-ce qu'on peut enlever les 2 points-virgules de trop à la fin de chaque ligne:

capture3

J'ai perdu la fenêtre sur le côté avec la liste des actions associés à la requête , comment je fais pour la retrouver!!

capture d ecran 2020 12 15 114156

RE

De rien !

Dans un csv chaque colonne est matérialisée : donc si un en-tête existe, la colonne même vide est matérialisée : c'est le principe de base non modifiable

Mais tu as peut-être des colonnes pas propres dans la source, donc pas vraiment vides.
Si c'est le cas dans tes sources, il faut adapter la requête pour éliminer les colonnes superfétatoires

A priori ta requête n'est pas active (la sélectionner à gauche) sinon 1er bouton à gauche de l'onglet Affichage

Et tu procèdes comment pour enlever les ";" superflus à la fin de chaque ligne ?

Merci!!

Bonjour

Mais tu as peut-être des colonnes pas propres dans la source, donc pas vraiment vides.

Si c'est le cas dans tes sources, il faut adapter la requête pour éliminer les colonnes superfétatoires

Après l'étape Colonnes renommées, sélectionner les colonnes utiles puis, clic droit, Supprimer les autres colonnes

capture d ecran 2020 12 16 093006

J'ai effacé les autres colonnes et j'ai encore 4 " ; " à la fin

J'aimerais qu'il en aille aucun

Rechercher des sujets similaires à "exporter contenu feuilles fichier csv"