Exporter des onglets mais exclure les 5 premiers onglets

Messages postés
2
Date d'inscription
dimanche 6 octobre 2019
Statut
Membre
Dernière intervention
6 octobre 2019
- - Dernière réponse : Patrice33740
Messages postés
7828
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
11 octobre 2019
- 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
Afficher la suite 

2 réponses

Messages postés
6276
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
17 octobre 2019
399
0
Merci
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


Commenter la réponse de cs_Le Pivert
Messages postés
7828
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
11 octobre 2019
1220
0
Merci
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.

Cordialement
Patrice

Personne ne peut détenir le savoir, c'est pour ça qu'on le partage.
Commenter la réponse de Patrice33740