Scinder un classeur

Sassy

XLDnaute Nouveau
Bonjour à tous,

J'ai besoin de votre aide pour la réalisation d'une macro.

J'ai un classeur qui comporte énormément de feuilles et que j'aimerais diviser.

Au final, je souhaiterais créer autant de classeurs que j'ai de feuilles dans le classeur d'origine.

Chaque classeur doit avoir comme nom, le nom de la feuille dans le classeur d'origine. (Dans mon exemple en attachement, création de 3 classeurs appelés Dossier1, Dossier2, Dossier3).

Merci d'avance pour votre aide.

Sassy
 

Pièces jointes

  • scinderclasseur.xls
    17 KB · Affichages: 44
D

Denis

Guest
Re : Scinder un classeur

Bonjour Sassy et le Forum

met ceci dans un module de ton classeur
(n'oublie pas de faire une sauvegarde avant car ton classeur d'origine n'existera plus!)
Sub Macro1()
'
Dim i%, Nom
'commencer par la dernière feuille
For i = ThisWorkbook.Sheets.Count To 2
Nom = ThisWorkbook.Sheets(i).Name
Sheets(i).Move
ActiveWorkbook.SaveAs Filename:= _
"C:\LeChemin\" & "Nom" & ".xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Workbooks(Nom & ".xls").Close False
Next
'il ne reste plus que la première feuille
Nom = ThisWorkbook.Sheets(1).Name
ActiveWorkbook.SaveAs Filename:= _
"C:\LeChemin\" & "Nom" & ".xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub

Bon courage et à +
Denis
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Scinder un classeur

Bonjour Sassy, bonjour le forum,

La macro ci-dessous récupère le chemin d'accès de ton fichier d'origine et crée les nouveaux classeurs dans le même dossier :
Code:
Sub Macro1()
Dim chem As String 'déclare la variable chem (CHEMin)
Dim o As Worksheet 'déclare la variable o (Onglet)
Dim n As String 'déclare la variable n (Nom)
 
chem = ThisWorkbook.Path & "\" 'définit le chemin d'accès
 
For Each o In Sheets 'boucle sur tous les onglets du classeur
    n = o.Name & ".xls" 'définit le nom du classeur
    o.Copy 'copie l'onglet sur un classeur vierge
    ActiveWorkbook.SaveAs (chem & n) 'nomme le nouveau classeur crée
    'ActiveWorkbook.Close 'ferme le nouveau classeur (à toi de voir ??? Supprime l'apostrophe au debut de ligne pour activer)
Next o 'prochain onglet de la boucle
End Sub

Édition :

Salut Denis on s'est crosé. Nos codes sont similaires sauf que le mien Copy au lieu de Move et donc garde le classeur d'origine car je n'étais pas sûr que Sassy veuille le supprimer...
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 523
Messages
2 089 319
Membres
104 119
dernier inscrit
karbone57