IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Exporter plusieurs onglets vers un nouveau classeur Excel [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Septembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2014
    Messages : 33
    Par défaut Exporter plusieurs onglets vers un nouveau classeur Excel
    Bonjour à tous,

    Malgré plusieurs recherches, je n'arrive pas à exporter plusieurs onglets sélectionnés vers un nouveau classeur Excel que je sauvegarde ensuite vers un répertoire et avec un nom paramétrables.
    J'ai utilisé un bout de code que j'arrive à faire tourner lorsqu'il s'agit d'exporter un seul onglet, mais ça ne fonctionne pas dans ce cas-ci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    MoisRapport = Sheets("TDB").Range("H2").Value
     
    CheminMois = ThisWorkbook.Path & MoisRapport
    If Dir(CheminMois, 16) = "" Then MkDir (CheminMois)
     
    NomFichier = ThisWorkbook.Name
     
    Domaine = Sheets("TDB").Range("E4").Value
    NomIGS = Sheets("TDB").Range("B4").Value
     
    [...]
     
    Dim NwBk As Workbook
     
    Sheets(Array(Right(Domaine, 1) & "1.1", Right(Domaine, 1) & "1.2", Right(Domaine, 1) & "2", Right(Domaine, 1) & "3", _
         Right(Domaine, 1) & "4", Right(Domaine, 1) & "5", Right(Domaine, 1) & "6", Right(Domaine, 1) & "7")).Select
     
    Selection.Copy: Set NwBk = ActiveWorkbook
    NwBk.SaveAs CheminMois & "\" & NomIGS & " - Annexes " & Domaine & " - " & MoisRapport & ".xlsx", FileFormat:=xlOpenXMLWorkbook: NwBk.Close False
     
    Windows(NomFichier).Activate
    Pour information, j'utilise 3 domaines (MEM, EER et EES) et les onglets qui se rapportent à chaque domaine se nomment M1.1, M2, ... M7 (pour MEM), R1.1, R2, ... R7 (pour EER), etc.
    Lorsque je déroule la macro, elle sélectionne bien les onglets concernés mais sauvegarde ensuite, avec le bon nom et dans le bon répertoire, l'ensemble des onglets de mon fichier de génération...
    De plus, il ferme mes deux fichiers (le fichier généré ainsi que mon fichier de génération, sans sauvegarder ce dernier...).

    Pourriez-vous me donner quelques indications pour mener à bien ma macro ?

    D'avance, je vous remercie.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La copie d'une ou plusieurs feuilles d'un classeur source vers un classeur cible est relativement simple

    Dans les deux exemples ci-dessous, on copie les feuilles du classeur où se trouve le code VBA (ThisWorkbook)

    Exemple 1 : Copie des feuilles nommées "Planning", "Question", "Feuil1" vers un nouveau classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub T_Copy()
     With ThisWorkbook
     .Sheets(Array("Planning", "Question", "Feuil1")).Copy
     End With
    End Sub
    Exemple 2 : Copie des feuilles nommées "Planning", "Question", "Feuil1" vers un classeur nommé Toto.xlsx avant la première feuille (le classeur est évidemment ouvert)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub T_Copy()
     With ThisWorkbook
     .Sheets(Array("Planning", "Question", "Feuil1")).Copy Before:=Workbooks("Toto.xlsx").Sheets(1)
     End With
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Septembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2014
    Messages : 33
    Par défaut
    Bonjour.
    Et merci pour ces quelques éléments.
    Malheureusement, les onglets sélectionnés servent à générer un nouveau fichier (qui n'est donc créé qu'au moment de l'export).
    J'ai en effet 90 fichiers Excel à créer ainsi (la génération des fichiers se trouve au sein d'une boucle).
    Si vous, ou d'autres, avez de nouvelles propositions, j'en serais ravi !

    Edit: Finalement, par curiosité, j'ai quand même adapté mon code avec vos éléments et... cela fonctionne.

    Je suis passé directement à .copy (plutôt que .select puis selection.copy) et cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim NwBk As Workbook
     
    With ThisWorkbook
     .Sheets(Array(Right(Domaine, 1) & "1.1", Right(Domaine, 1) & "1.2", Right(Domaine, 1) & "2", Right(Domaine, 1) & "3", _
         Right(Domaine, 1) & "4", Right(Domaine, 1) & "5", Right(Domaine, 1) & "6", Right(Domaine, 1) & "7")).Copy
    End With
     
    Set NwBk = ActiveWorkbook
    NwBk.SaveAs CheminMois & "\" & NomIGS & " - Annexes " & Domaine & " - " & MoisRapport & ".xlsx", FileFormat:=xlOpenXMLWorkbook: NwBk.Close False
     
    Windows(NomFichier).Activate
    Merci beaucoup à vous. Effectivement, pour vous paraphraser, c'était relativement simple !

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Malheureusement, les onglets sélectionnés servent à générer un nouveau fichier (qui n'est donc créé qu'au moment de l'export)
    C'est ce que montre mon premier exemple
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre averti
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Septembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2014
    Messages : 33
    Par défaut
    Certes, oui. Encore eût-il fallu que je le comprisse !

    Merci à vous, donc.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Encore eût-il fallu que je le comprisse !
    Il y avait pourtant un titre "Exemple 1 : Copie des feuilles nommées "Planning", "Question", "Feuil1" vers un nouveau classeur"
    Mais peut-être eut-il fallut que l'exprimasse autrement
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2019] Copie d'un onglet vers un nouveau classeur avec le bouton et la macro associée
    Par BenoitL77 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 28/09/2020, 09h39
  2. [XL-2019] Exporter une feuille dans un nouveau classeur excel
    Par El ambari dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/05/2020, 08h30
  3. [XL-2013] Exporter un tableau vers X nouveaux classeurs Excel en filtrant sur une colonne
    Par Ours_en_feu dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/09/2019, 14h40
  4. [AC-2010] Exporter une requête vers un nouveau fichier Excel
    Par franckb74 dans le forum Macros Access
    Réponses: 9
    Dernier message: 07/02/2015, 09h10
  5. Copier un onglet vers un autre classeur excel
    Par saigon dans le forum VBScript
    Réponses: 0
    Dernier message: 16/10/2012, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo