Exporter tous les onglets mais exclure les 5 premiers

Salut

J'ai un code pour sauvegarder tous mes onglets Excel en document xls séparés mais je souhaite exclure les 5 premiers onglets de mon code VBA, pouvez-vous m'aider?

Code actuel qui sauvegarde tous les onglets

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

Je vous joints aussi mon document pour que vous puissiez faire des tests, les onglets évoluent mais pas les 5 premiers

Le bouton sauvegarde se trouve dans l'onglet Stats

Merci tout plein pour votre aide et belle soirée à tous!

Sophie

7save.xlsm (761.57 Ko)

Bonsoir,

Remplacer :

For Each o In Sheets

Par :

For i = 6 To Sheets.Count
   Set o = Sheets(i)

Bonjour Pedro22,

J'ai tenté de remplacer la ligne mais cela me génère une erreur...

J'ai supprimé la ligne Next o pour voir si l'erreur disparaissait mais à ce moment là, rien ne se passe

Je t'ai mis le code et l'erreur en pièce jointe, peux-tu regarder ?

Merci tout plein

Sof

erreur

Bonjour,

Ta variable de boucle est désormais i et pas o.

Il faut donc mettre "Next i".

Si tu veux des modifications sur ton code, autant le joindre directement en texte, plutôt qu'une impressions écran...

Hello Pedro22,

oui bonne remarque, je remettrai le code en pièce jointe la prochaine fois

j'ai testé en mettant Next i mais cela ne fonctionne toujours pas....

J'ai quelqu'un qui m'a proposé de modifier un peu autrement et avec ce code ci-dessous tout est passé :

Option Explicit

Sub enregistrer()

Dim wbk As Workbook 'déclare la variable wbk (Fichier)

Dim wsh As Worksheet 'déclare la variable wsh (Onglet)

Dim nom As String 'déclare la variable nom (Nom de l'Onglet)

Dim dos As String 'déclare la variable dos (chemin d'accès)

dos = ThisWorkbook.Path & "\" 'définit la variable dos

For Each wsh In ThisWorkbook.Worksheets 'boucle sur tous les onglets du classeur

nom = wsh.Name

Select Case nom 'liste des onglets qu'on ne souhaite pas sauvegarder

Case "Médicaments", "Protocoles", "Stats", "Modèle", "Infos", "Mail"

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 & ".xls", FileFormat:=xlOpenXMLWorkbookMacroEnabled

Application.DisplayAlerts = True

wbk.Close

Set wbk = Nothing

End Select

Next wsh

End Sub

Encore merci pour ton aide

Tu as un bouton bien pratique pour la mise en forme du code : </>

Une autre proposition :

Option Explicit
Sub enregistrer()

Dim wsh As Integer 'déclare la variable wsh (n° onglet)
Dim dos As String 'déclare la variable dos (chemin d'accès)

dos = ThisWorkbook.Path & "\" 'définit la variable dos
For wsh = 6 To Worksheets.Count 'boucle sur les onglets du classeur >5
    With Worksheets(wsh)
        If Not ClasseurExiste(dos & .Name) Then 
            Workbooks.Add
            .Cells.Copy Range("A1")
            SaveAs Filename:=.Name, FileFormat:=-4143 
            Close 
        Else MsgBox "Le fichier existe déjà !"
        End If
    End With
Next wsh

End Sub
Public Function ClasseurExiste(NomComplet As String) As Boolean 'Vérifie si le fichier existe déjà

    Dim Rep As Boolean
    If Len(Dir(MonFichier)) > 0 Then Rep = True
    ClasseurExiste = Rep

End Function
Rechercher des sujets similaires à "exporter tous onglets exclure premiers"