Exporter des onglets mais exclure les 5 premiers onglets

Fermé
sionbeach Messages postés 2 Date d'inscription dimanche 6 octobre 2019 Statut Membre Dernière intervention 6 octobre 2019 - 6 oct. 2019 à 21:11
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 7 oct. 2019 à 15:08
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
A voir également:

2 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
7 oct. 2019 à 07:59
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié le 7 oct. 2019 à 15:10
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