Exporter des onglets mais exclure les 5 premiers onglets

sionbeach Messages postés 2 Statut Membre -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Salut,

J'ai trouvé un code qui me permet d'exporter tous les onglets d'un document Excel et de les enregistrer séparément. Mon souci est que je souhaite exporter les onglets qu'à partir du Feuil6 jusqu'à la fin (le nombre d'onglets peut varier alors je laisse la commande en boucle) mais voilà, les 5 premiers onglets je ne souhaite pas les exporter, appelons-les : page1, page2, page3, page4, page5

Voici mon code actuel

Sub enregistrer()
Dim o As Worksheet 'déclare la variable o (Onglet)
Dim no As String 'déclare la variable no (Nom de l'Onglet)
Dim chem As String 'déclare la variable chem (CHEMin)

chem = ThisWorkbook.Path & "\" 'définit la variable chem
For Each o In Sheets 'boucle sur tous les onglets du classeur

no = o.Name 'définit la variable no
o.Copy 'copy l'onglet
'crée un nouveau classeur ayant pour nom de nom de l'onglet dans le même dossier

ActiveWorkbook.SaveAs chem & no & ".xls", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Next o 'prochain onglet de la boucle
End Sub

Merci d'avance pour vos réponses :-)
Cordialement
Sof
Configuration: Windows / Chrome 77.0.3865.90

2 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Il faut faire une boucle à partir du 6ème onglet comme ceci:

    Dim i As Integer
     For i = 6 To ThisWorkbook.Worksheets.Count
             MsgBox Worksheets(i).Name
             'mettre ton code ici en remplaçant la MsgBox par une variable
        Next i


    0
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Re,

    Sans utiliser le presse papier qui peux réserver des surprises (ni activeworkbook pour la même raison)
    Option Explicit
    Sub enregistrer()
    Dim wbk As Workbook
    Dim wsh As Worksheet
    Dim nom As String
    Dim dos As String
      dos = ThisWorkbook.Path & "\"
      For Each wsh In ThisWorkbook.Worksheets
        nom = wsh.Name
        Select Case nom
          Case "page1", "page2", "page3", "page4", "page5"
          Case Else
            Set wbk = Workbooks.Add(xlWorksheet)
            wbk.Worksheets(1).Name = nom & "0" 'pour éviter les doublons
            wsh.Copy after:=wbk.Worksheets(1)
            Application.DisplayAlerts = False
            wbk.Worksheets(1).Delete
            wbk.SaveAs dos & nom & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
            Application.DisplayAlerts = True
            wbk.Close
            Set wbk = Nothing
        End Select
      Next wsh
    End Sub 

    Il suffit de définir le nom des feuilles (quelle que soient leurs positions) à ne pas copier dans le premier Case.

    0