Exporter plusieurs feuilles d'un classeur Excel en Excel séparé

Bonjour,

J'ai un fichier avec plus d'une vingtaine de feuilles.

Je souhaite à l'aide d'une macro,exporter séparemment certains onglets de mon classeur dans un format excel. Chacunes des feuilles exportées doit être enregistré dans un emplacement que je choisis ou dans le même dossier que le classeur principal. Les feuilles enregistrées également doivent garder le nom de l'onglet.

(toutes les feuilles de mon classeur, ne devront pas être exportés. Les Feuilles qui ne seront pas exportés sont les mêmes à chaque utilisation de l'outil : Menu, Import, Paramètres, Traitement. Toutes les autres seront exportées)

Quelqu'un pourrait il m'aider svp.

Merci

Bonjour,

Il est possible de partir d'ici https://www.excel-pratique.com/fr/telechargements/utilitaires/dispatcher-compiler-excel-no466 et l'adapter assez facilement à des onglets multiples.

Pour cela, il faudrait avoir une maquette de fichier de ta part ...

Bonjour Steelson

Merci pour ta réponse et pour ton aide. Ci-joint un fichier. Pour résumer :

Les feuilles qui ne seront jamais exportées: Menu,Import,Traitement,Paramètres

Les feuilles à exporter dans un format excel:

- Analyse Globale,Répartition par entité, Parc à remplacer : doivent être enregistrées ensemble dans le même fichier sous le nom Analyse Globale

- Les feuilles: Alpes, Corse, Ile de france, charentes, Pyrenées, Var, Cote d'azur, Finistère : sont à exportées séparement chacune. Le nom ne chaque fichier sera celui de l'onglet.

J'espère que tu pourras m'aider.

Merci encore à toi.

12test.xlsx (16.98 Ko)

- Les feuilles: Alpes, Corse, Ile de france, charentes, Pyrenées, Var, Cote d'azur, Finistère : sont à exportées séparement chacune. Le nom ne chaque fichier sera celui de l'onglet.

1er point ...

Sub exporter()
Dim f As Worksheet
Dim xl As Excel.Application, wb As Excel.Workbook
Dim MonRepertoire, Repertoire As FileDialog

    feuilles = Array("Alpes", "Corse", "Ile de france", "Charentes", "Pyrenées", "Val", "Cote d'azur", "Finistère")

    Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
    Application.FileDialog(msoFileDialogFolderPicker).Title = "Choix du répertoire de stockage des fichiers générés"
    Repertoire.Show
    If Repertoire.SelectedItems.Count = 0 Then Exit Sub
    MonRepertoire = Repertoire.SelectedItems(1)

    Set xl = CreateObject("Excel.Application")
    xl.SheetsInNewWorkbook = 1

    For i = 0 To UBound(feuilles)
        Set f = Sheets(feuilles(i))
        f.Cells.Copy
        Debug.Print f.Name, f.Range("A1")
        Set wb = xl.Workbooks.Add
        wb.Sheets(1).Paste
        wb.SaveAs (MonRepertoire & "\" & f.Name & ".xlsx")
        wb.Close
        Set wb = Nothing
    Next
    xl.Quit
    Set xl = Nothing
    MsgBox "Terminé !"

End Sub
17test.xlsm (26.58 Ko)

et avec ceci

- Analyse Globale,Répartition par entité, Parc à remplacer : doivent être enregistrées ensemble dans le même fichier sous le nom Analyse Globale

Sub exporter()
Dim f As Worksheet
Dim xl As Excel.Application, wb As Excel.Workbook, ws As Excel.Worksheet
Dim MonRepertoire, Repertoire As FileDialog

' paramètres #############
feuilles = Array("Alpes", "Corse", "Ile de france", "Charentes", "Pyrenées", "Val", "Cote d'azur", "Finistère")

    Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
    Application.FileDialog(msoFileDialogFolderPicker).Title = "Choix du répertoire de stockage des fichiers générés"
    Repertoire.Show
    If Repertoire.SelectedItems.Count = 0 Then Exit Sub
    MonRepertoire = Repertoire.SelectedItems(1)

    Set xl = CreateObject("Excel.Application")
    xl.SheetsInNewWorkbook = 1

    For i = 0 To UBound(feuilles)
        Set f = Sheets(feuilles(i))
        f.Cells.Copy
        Set wb = xl.Workbooks.Add
        wb.Sheets(1).Paste
        wb.SaveAs (MonRepertoire & "\" & f.Name & ".xlsx")
        wb.Close
        Set wb = Nothing
    Next

' paramètres #############
feuilles = Array("Analyse Globale", "Répartition par entité", "Parc à remplacer")

    Set wb = xl.Workbooks.Add
    For i = 0 To UBound(feuilles)
        Set f = Sheets(feuilles(i))
        Debug.Print f.Name
        f.Cells.Copy
        With wb
            If i > 0 Then .Worksheets.Add After:=.Worksheets(.Worksheets.Count)
            .Sheets(i + 1).Paste
            .Sheets(i + 1).Name = feuilles(i)
        End With
    Next
    wb.SaveAs (MonRepertoire & "\" & feuilles(0) & ".xlsx")
    wb.Close
    Set wb = Nothing

    xl.Quit
    Set xl = Nothing
    MsgBox "Terminé !"

End Sub
24test.xlsm (28.20 Ko)

Merci à toi Steelson. Vraiment merci. Tu gères.

ça marche très bien.

Rechercher des sujets similaires à "exporter feuilles classeur separe"