Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Onglet en fichier

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

yusukens

XLDnaute Occasionnel
Bonsoirs
en cherchant dans le forum, je n'ai pas pu trouvé la réponse à un problème.
Voila mon problème
je cherche un moyen permettant de dire à Excel de mettre chaque onglet dans des fichiers indépendants.
la solution la plus fastidieuse consiste à clique 2eme bouton de la sourie sur l'onglet souhaité et allé dans déplacer ou copier puis dans la fenetre choisir (nouveau classeur).

y'aurai t'il un autre moyen plus rapide ? car en fait j'ai 50 onglets et je fais cotidienemenet et faire ça un par un à chaque fois me prend un temps fou.

merci de votre aide
 
Re : Onglet en fichier

Bonjour,
Je pense qu'il n'y a que VBA qui te le permettra.
Tu comptes le nombre d'onglet
Tu fais une une boucle avec ce nombre pour déplacer l'onglet(en gardant une copie)
Tu actives le nouveau classeur
Enregistrer et fermer
Puis recommencer...
Utilises l'enregistreur de macros cela t'aidera pour certaines parties du code.
 
Re : Onglet en fichier

Merci de vos conseils.
j'ai commencé avec l'enregistreur pour faire la macro, et ça sonne pas mal.
maintenant il faut l'adapter. vous pouvez m'aider ?
Ci joint un fichier test
Ensuite voila la macro qui marche pour l'onglet "CCC"


Sub Macro3()
Sheets("CCC").Select
Sheets("CCC").Copy
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\DOTA-Ziou\Bureau\Ziou\CCC.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
ActiveWindow.Close
End Sub


2 requetes sur cette macro si vous acez une idée
1) Comment on pourait faire pour lui dire de prendre le nom de l'onglet, ou cas ou si je changerai le nom de l'onglet ?
2) Enregistrer dans le même répertoire que le fichier source.

En vous remerciant d'avance.
 
Re : Onglet en fichier

Bonsoir yusukens,

Voici le code modifié :

Code:
Sub Macro3()
    ActiveSheet.Select  ' Feuille active
    ActiveSheet.Copy

    Application.DisplayAlerts = False
    
    ' Le chemin du fichier en cours : ThisWorkbook.Päth
    ActiveWorkbook.SaveAs Filename:= _
        ThisWorkbook.Path & "\CCC.xls", FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
    ActiveWindow.Close

    Application.DisplayAlerts = True
End Sub

@+
 
Dernière édition:
Re : Onglet en fichier

Merci Matthieu33.
Ta macro enregistre bien dans le même répertoire que le fichier d'origine en prenant l'onglet en cours.
par contre il reprend pas le même nom que l'onglet. le fichier s'appel toujours CCC, peut t'on le modifier pour qu'il prenne le même nom que l'onglet qu'on veut extraire ?

Merci
 
Re : Onglet en fichier

Avec ce code :

Code:
Sub Macro3()
    ActiveSheet.Select  ' Feuille active
    ActiveSheet.Copy

    Application.DisplayAlerts = False
    
    ' Le chemin du fichier en cours : ThisWorkbook.Päth
    ActiveWorkbook.SaveAs Filename:= _
        ThisWorkbook.Path & "\" & ActiveSheet.Name & ".xls", FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
    ActiveWindow.Close

    Application.DisplayAlerts = True
End Sub

@+
 
Re : Onglet en fichier

Bonjour,

Je me permets d'utiliser un ancien fil

Comment adapter le code ci-dessus pour créer un onglet par fichier de tous les onglets de mon fichier ?
Là ca "n'exporte" que l'onglet sur lequel je suis placé

Par ailleurs, on verra ensuite..
les formats ne sont pas conservés
les bordures noires deviennent rouges 😱 ..
(le fichier excel de base est un export de BO)
 
Re : Onglet en fichier

Via l'enregistreur de macro, pour sélectionner tous les onglets

Sheets("global").Select
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets(Array("global", "3580", "3945", "3950", "3955", "3960", "3970", "3980", "4000", _
"4010", "4020", "4030", "4040", "4050", "4060", "4070", "4080", "4090", "4100", "4110", _
"4180", "4190", "4200", "4120", "4130")).Select
Sheets("global").Activate
Sheets(Array("4140", "4150", "4160", "4170", "4210", "4230", "4240", "non_aff", "PHRC") _
).Select Replace:=False

mais je croyais qu'il y avait une solution plus simple avec count...

merci de votre aide
 
Re : Onglet en fichier

J'ai trouvé sur le net

Code:
Sub Creer_un_fichier_par_onglet()
Dim Wko As Workbook
Dim FL1 As Worksheet
Dim NomA As String, NomN As String
Dim Chemin As String, FS As Integer
    Chemin = ThisWorkbook.Path & Application.PathSeparator
    Set Wko = ActiveWorkbook
    Application.DisplayAlerts = False
    For Each FL1 In Wko.Worksheets
        NomN = FL1.Name
        Workbooks.Add
        NomA = ActiveWorkbook.Name
        FL1.Copy Before:=Workbooks(NomA).Sheets(1)
        For FS = Workbooks(NomA).Worksheets.Count To 2 Step -1
            Workbooks(NomA).Sheets(FS).Delete
        Next FS
        Workbooks(NomA).SaveAs Chemin & NomN
        Workbooks(NomN & ".xls").Close
    Next
    Application.DisplayAlerts = True
End Sub

Mais qq saurait pourquoi mes bordures noires deviennent rouges ?
 
Re : Onglet en fichier

salut nat54

c'est moi qui ai créer ce topic.
j'aurai bien aimé t'aider mais je suis très nul en VBA.

je t'écrit pour te dire que le code que tu viens de mettre est exelent, vraiment bravo et merci pour le partage.
sinon lorsque j'extrait mes onglets, mes bordures ne deviennent pas rouge, ils sont comme sur mon fichier d'origine.

Bon courage
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
300
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…