Comment exporter une feuille dans un classeur (ouvert ou fermé) sur Excel ?

Pour ce nouveau chapitre nous allons découvrir plusieurs méthodes simples pour exporter une feuille Excel dans un autre classeur. Nous verrons ainsi qu’il est possible en quelques lignes de VBA seulement de dupliquer une feuille dans un classeur, même si celui-ci est fermé.

 

Téléchargement

 

Vous pouvez obtenir le fichier d'exemple de cet article et découvrir la méthode d'apprentissage de VBA pas-à-pas en cliquant sur le lien suivant :

APPRENDRE VBA POUR LES GRANDS DEBUTANTS

 

Tutoriel Vidéo

 

 

1. Exporter une feuille dans un autre classeur

La manipulation qui permet d’exporter une feuille de calcul dans un autre classeur sur Excel est très simple.

Il suffit en effet de sélectionner la feuille de calcul en question, puis d’effectuer un clic droit avec le bouton de la souris sur l’onglet de la feuille.

Ensuite, nous choisissons l’option Déplacer ou Copier.

Excel formation - exporter feuille - 01

Dans le menu déroulant, nous pouvons choisir dans quel classeur nous souhaitons exporter la feuille.

Excel formation - exporter feuille - 02

Par défaut, Excel sélectionne le classeur actif, ce qui permet de pouvoir déplacer rapidement la feuille active à l’intérieur de celui-ci en choisissant avant quelle feuille nous souhaitons l’insérer.

Si nous sélectionnons un autre classeur, la feuille sera transférée à l’intérieur de cet autre classeur.

Nous pouvons également choisir de déplacer la feuille de calcul au sein d’un nouveau classeur créé pour l’occasion.

Ensuite, si nous activons l’option Créer une copie, alors la feuille active sera dupliquée à l’endroit désiré et l’originale restera inchangée.

Excel formation - exporter feuille - 03

Il existe également une méthode encore plus rapide, qui permet de déplacer une feuille en faisant glisser son onglet, ou encore de le dupliquer en maintenant la touche [Ctrl] enfoncée lors de ce déplacement :

Excel formation - exporter feuille - 04

Comme vous pouvez le constater, ces méthodes sont rapides à mettre en place, mais présentent l’inconvénient de ne pouvoir transférer la feuille de calcul qu’à l’intérieur d’un classeur actuellement ouvert.

Pour contourner cette limitation, nous allons développer une petite macro en VBA.

 

2. Dupliquer une feuille de calcul en VBA

Pour évoluer progressivement, nous allons commencer par découvrir comment dupliquer une feuille de calcul dans le classeur actif En VBA

Nous pourrons ensuite découvrir dans un second temps comment l’envoyer un classeur fermé.

Dans ce tutoriel, nous ne découvrirons que rapidement l’utilisation des macro-commandes VBA, mais si vous souhaitez aller plus loin dans la découverte de ce langage, vous pouvez évidemment consulter la formation disponible sur le blog en cliquant ici.

Pour commencer, nous allons lancer l’éditeur de code VBE (pour Visual Basic Editor), qui est l’éditeur de code intégré dans les différentes applications de la suite Office et qui permet de développer des macro-commandes en VBA.

Pour cela, nous appuyons simplement sur les touches [Alt]+[F11] :

Excel formation - exporter feuille - 05

VBE s’ouvre alors et nous allons commencer par créer un nouveau module.

Un module est une feuille de saisie de code dans laquelle nous allons pouvoir saisir nos macros et fonctions.

Pour insérer un nouveau module, nous nous rendons dans le menu Insertion > Module :

Excel formation - exporter feuille - 06

Une fois le module inséré, nous pouvons créer une macro-commande en utilisant le mot clé Sub, suivi du nom de la macro :

Excel formation - exporter feuille - 07

VBE ajouter alors la fin de la macro (la ligne End Sub).

Toutes les lignes que nous allons saisir entre ces deux lignes seront exécutées automatiquement à chaque fois que nous lancerons la macro dupliquerFeuille.

Maintenant, pour dupliquer la feuille de calcul active, nous simplement pouvoir utiliser la méthode Copy de l’objet ActiveSheet.

La particularité de cette méthode, c’est qu’elle attend deux arguments facultatifs ET exclusifs. C’est-à-dire que nous ne pouvons utiliser que l’un seul de ces deux arguments.

Ce qui est logique puisqu’ils permettent de sélectionner la feuille avant (Before) ou après (After) laquelle nous voudrons insérer la nouvelle feuille.

Ici pour l’exemple, nous allons souhaiter insérer la feuille en toute fin de classeur.

Nous utiliserons donc l’argument After, auquel nous affecterons la dernière feuille du classeur que nous obtenons avec l’instruction ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count) :

Sub dupliquerFeuille()
    ActiveSheet.Copy after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
End Sub

Nous pouvons maintenant tester cette toute petite macro-commande en revenant dans la feuille de calcul, puis en appuyant sur les touches [Alt]+[F8] :

Excel formation - exporter feuille - 08

Nous pouvons ici sélectionner la macro dupliquerFeuille et cliquer sur le bouton Exécuter :

Excel formation - exporter feuille - 09

La feuille est maintenant dupliquée !

 

3. Dupliquer la feuille active dans un autre classeur

Pour dupliquer la feuille dans un autre classeur ouvert, il suffit de sélectionner ce dernier lors de la sélectionnons du classeur de destination.

Ici par exemple, nous avons un autre classeur ouvert qui est le Classeur1 (nouveau classeur par défaut d’Excel).

Pour y insérer la feuille de calcul, nous reprenons la macro-commande précédente, en modifiant les appels à ActiveWorkbook par Workbooks("Classeur1") :

Sub dupliquerFeuille()
    …
    ' dupliquer la feuille active dans le  Classeur1
    ActiveSheet.Copy after:=Workbooks("Classeur1").Sheets(Workbooks("Classeur1").Sheets.Count)
End Sub

 

4. Dupliquer la feuille active dans un nouveau classeur

Pour dupliquer la feuille dans un nouveau classeur vide c’est encore plus simple, il suffit en effet de ne spécifier aucun argument à la méthode Copy !

Sub dupliquerFeuille()
   …
    ' dupliquer la feuille active dans un nouveau  classeur
    ActiveSheet.Copy
End Sub

Une fois le nouveau classeur créé, nous pouvons l’enregistrer en utilisant la méthode SaveAs :

    Dim nomFichier As String
    nomFichier = ActiveWorkbook.Path &  "\" & ActiveWorkbook.Name & "_" & ActiveSheet.Name  & Format(Now, "_yyyymmdd") & ".xlsx"
    
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs nomFichier 

Nous devons commencer par enregistrer le nom du nouveau classeur dans la variable nomFichier car lorsque nous aurons effectué la copie, le classeur actif sera le nouveau classeur et donc les caractéristiques (chemin et nom) ne sont plus récupérable directement.

Ensuite, nous enregistrons le classeur.

 

5. Dupliquer la feuille active dans un classeur fermé

Nous en arrivons maintenant à ce qui nous intéresse dans le cadre de ce tutoriel : découvrir comment dupliquer une feuille de calcul dans un classeur existant, mais qui est actuellement fermé !

Pour cela, nous allons devoir fonctionner par étape : tout d’abord, nous commençons par ouvrir le classeur, puis y insérerons la feuille de calcul et fermons celui-ci, tout en y enregistrant les modifications.

Mais encore avant cela, nous allons créer deux variables pour y stocker le nom des deux classeurs utilisés : le classeur actif et le nouveau :

    ' dupliquer la feuille active dans un  classeur fermé
    Dim classeurActif as String, classeurCible As String
    classeurActif = ActiveWorkbook.Name
    classeurCible = "Classeur fermé.xlsx"
 

Cela étant fait, nous pouvons ouvrir le classeur en utilisant la méthode Workbooks.Open :

    ' ouvrir le classeur
    Workbooks.Open Filename:=ActiveWorkbook.Path &  "\" & classeurCible

Une fois le classeur cible ouvert, celui-ci devient le classeur actif de l’instance Excel.

Pour effectuer la duplication, nous devons donc revenir dans le classeur d’origine et pour cela, nous utilisons la méthode Activate de l’objet Windows :

    ' on revient au classeur d'origine
    Windows(classeurActif).Activate 

Nous pouvons maintenant dupliquer la feuille active dans le classeur cible :

    ' dupliquer la feuille
    ActiveSheet.Copy after:=Workbooks(classeurCible).Sheets(Workbooks(classeurCible).Sheets.Count) 

 

Et pour finir, nous fermons le classeur cible, en utilisant l’argument SaveChanges auquel nous donnons la valeur True, ce qui permet d’enregistrer les modifications apportées :

    ' fermer et enregistrer le classeur
    Workbooks(classeurCible).Close True

 

 

 



Articles qui pourraient vous intéresser

Comment écrire un nombre en toutes lettres avec une fonction Excel ?
Comment compter le nombre de mots contenus dans une cellule Excel ?
Comment comparer automatiquement deux feuilles de calcul sur Excel – On développe une mini-application ensemble
56 astuces pour grands débutants sur Excel !
Comment lancer les dés sur Excel ?
Comment créer une frise chronologique à partir d’un graphique Excel ?
Suivre les matchs de l’Euro 2020 sur Excel, le fichier !
Comment mélanger une liste de manière aléatoire sur Excel ?
Comment obtenir des informations sur l’utilisateur du fichier Excel avec la fonction INFORMATIONS() ?
Faut-il utiliser les macro-commandes VBA sur Excel ?
Comment exporter une feuille dans un classeur (ouvert ou fermé) sur Excel ?
Sortez du lot : comment créer un CV moderne et impactant avec Excel

Contact - Plan du site - À propos - Contact

© Excel-Formation 2018 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.