Comment dupliquer une feuille dans Excel avec VBA

  • Partage Ça
Michael Brown

Le tutoriel fournit une collection de macros pour dupliquer des feuilles dans Excel : copier et renommer en fonction de la valeur de la cellule, copier plusieurs feuilles, copier une feuille de calcul active dans un autre fichier sans l'ouvrir, et plus encore.

Copier manuellement des feuilles dans Excel est assez rapide et simple... si on ne le fait qu'une ou deux fois. Dupliquer plusieurs feuilles plusieurs fois est ennuyeux et prend du temps. Sur cette page, vous trouverez une poignée de macros utiles pour automatiser cette tâche.

    Excel VBA pour copier une feuille dans un nouveau classeur

    Cette macro d'une ligne, très simple, fait exactement ce que son nom suggère : elle copie la feuille active dans un nouveau classeur.

    Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    Copier plusieurs feuilles dans Excel avec VBA

    Si vous souhaitez copier plusieurs feuilles du classeur actif vers un nouveau classeur, sélectionnez toutes les feuilles de calcul concernées et exécutez cette macro :

    Public Sub CopySelectedSheets() ActiveWindow.SelectedSheets.Copy End Sub

    Excel VBA pour copier une feuille dans un autre classeur

    Selon l'endroit où vous souhaitez insérer la feuille copiée, utilisez l'une des macros suivantes.

    Copier une feuille au début d'un autre classeur

    Cette macro copie la feuille active avant toutes les autres feuilles de calcul dans le fichier de destination, Livre 1 Pour copier dans un autre fichier, remplacez "Livre1.xlsx" par le nom complet de votre classeur cible.

    Public Sub CopySheetToBeginningAnotherWorkbook() activeSheet.Copy Before:=Workbooks( "Book1.xlsx" ).Sheets(1) End Sub

    Copier une feuille à la fin d'un autre classeur

    Ce morceau de code duplique la feuille de calcul active et place la copie à la fin du fichier Livre 1 Encore une fois, n'oubliez pas de remplacer "Book1.xlsx" par le nom de votre classeur de destination.

    Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Book1.xlsx" ).Sheets(Workbooks( "Book1.xlsx" ).Worksheets.Count) End Sub

    Remarque : pour que les macros fonctionnent, le classeur cible doit être enregistré sur votre disque dur ou votre réseau.

    Copier une feuille dans un classeur sélectionné

    Pour pouvoir copier la feuille courante dans n'importe quel classeur ouvert, vous pouvez créer un UserForm (nommé Formulaire d'utilisateur 1 ) avec un ListBox contrôle ( nommé ListBox1 ) et deux boutons :

    Ensuite, double-cliquez sur le formulaire et collez le code ci-dessous dans la fenêtre Code :

    Public SelectedWorkbook As String Private Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Each wbk In Application.Workbooks ListBox1.AddItem (wbk.Name) Next End Sub Private Sub CommandButton1_Click() If ListBox1.ListIndex> ; -1 Then SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide EndSous

    Une fois le UserForm en place, vous pouvez utiliser l'une des macros suivantes pour copier la feuille active dans le classeur de votre choix.

    Copie de la feuille au début du classeur sélectionné :

    Public Sub CopySheetToBeginningAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End Sub

    Copie de la feuille au fin du classeur sélectionné :

    Public Sub CopySheetToEndAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserForm1.SelectedWorkbook). _ Worksheets.Count) End If Unload UserForm1 End Sub

    Lorsqu'elle est exécutée dans Excel, la macro vous montre une liste de tous les classeurs actuellement ouverts. Vous sélectionnez celui dont vous avez besoin et cliquez sur OK :

    Macro Excel pour copier une feuille et la renommer

    Lorsque vous copiez une feuille dans Excel, la réplique reçoit un nom dans un format par défaut tel que Feuille 1 (2) Les macros suivantes peuvent vous éviter de modifier manuellement le nom par défaut.

    Ce code duplique la feuille de calcul active, nomme la copie "Feuille de test" (vous êtes libre de la remplacer par tout autre nom de votre choix), et place la feuille copiée à la fin du classeur actuel.

    Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = "Test Sheet" End Sub

    Pour permettre à l'utilisateur de spécifier le nom de la feuille copiée utilisez ce code :

    Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Enter the name for the copied worksheet" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    Lors de son exécution, la macro affiche la boîte de saisie suivante, dans laquelle vous tapez le nom souhaité et appuyez sur OK :

    Macro Excel pour copier une feuille et la renommer en fonction de la valeur d'une cellule

    Dans certaines situations, il peut être plus pratique de nommer une copie avec la valeur d'une cellule spécifique, par exemple un en-tête de colonne. Pour cela, il suffit de reprendre le code ci-dessus et de fournir la valeur de l'élément cellule actuellement sélectionnée Comme dans l'exemple précédent, la copie sera placée à la fin du classeur actif.

    Le plus difficile serait de faire en sorte que vos utilisateurs sélectionnent toujours la bonne cellule avant d'exécuter la macro :)

    Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Enter the name for the copied worksheet" , "Copy worksheet" , ActiveCell.Value) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    Vous pouvez également code en dur de l'adresse de la cellule Pour nommer la feuille de calcul copiée en fonction d'une autre cellule, remplacez A1 par une référence de cellule appropriée.

    Public Sub CopySheetAndRenameByCell2() Dim wks As Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Sheets.Count) If wks.Range( "A1" ).Value "" Then On Error Resume Next activeSheet.Name = wks.Range( "A1" ).Value End If wks.Activate End Sub

    Macro pour copier une feuille de travail dans un classeur fermé

    Le nom d'un autre classeur n'est pas spécifié dans le code - la macro ouvrira la fenêtre standard de l'Explorateur Windows et vous permettra de choisir le fichier de destination :

    Après avoir sélectionné le fichier et cliqué sur Ouvrir la macro copiera la feuille active et fermera automatiquement le classeur cible.

    Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Files (*.xlsx), *.xlsx" ) If fileName False Then Application.ScreenUpdating = False Set currentSheet = Application.activeSheet Set closedBook = Workbooks. Open (fileName) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count)closedBook. Close ( True ) Application.ScreenUpdating = True End If End Sub

    Excel VBA pour copier une feuille d'un autre classeur sans l'ouvrir

    Cette macro vous permet de copier une feuille de calcul d'un autre fichier Excel sans l'ouvrir. La feuille copiée sera insérée à la fin du classeur actuel.

    N'oubliez pas de faire quelques remplacements dans le code :

    • C:\Users\XXX\Documents\Target_Book.xlsx doit être remplacé par le chemin d'accès et le nom réels du classeur à partir duquel vous souhaitez copier une feuille.
    • Sheet1 doit être remplacé par le nom de la feuille que vous voulez copier.
    Public Sub CopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False Set sourceBook = Workbooks. Open ( "C:\Users\XXX\Documents\Target_Book.xlsx" ) sourceBook.Sheets( "Sheet1" ).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) sourceBook. Close Application.ScreenUpdating = True End Sub

    Excel VBA pour dupliquer une feuille plusieurs fois

    Il peut arriver que vous ayez besoin de dupliquer plusieurs fois la même feuille, par exemple pour tester différentes formules sur le même ensemble de données, ce que vous pouvez faire facilement avec la macro suivante.

    Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "How many copies of the active sheet do you want to make ?" ) If n>= 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub

    Ouvrez la feuille d'origine, exécutez la macro, indiquez le nombre de copies de la feuille active que vous souhaitez réaliser, puis cliquez sur OK :

    Comment dupliquer des feuilles dans Excel avec VBA ?

    Pour copier une feuille dans Excel avec l'une des macros ci-dessus, vous pouvez soit insérer le code VBA dans votre propre livre, soit exécuter une macro à partir de notre exemple de classeur.

    Comment ajouter une macro à votre classeur

    Pour insérer le code dans votre classeur, procédez comme suit :

    1. Ouvrez la feuille de calcul que vous voulez copier.
    2. Appuyez sur Alt + F11 pour ouvrir l'éditeur Visual Basic.
    3. Dans le volet de gauche, cliquez à droite sur Ce manuel de travail puis cliquez sur Insérer > ; Module .
    4. Collez le code dans la fenêtre Code.
    5. Appuyez sur F5 pour exécuter la macro.

    Pour obtenir des instructions détaillées étape par étape, veuillez consulter la rubrique Comment insérer un code VBA dans Excel.

    Comment exécuter une macro à partir de notre classeur type ?

    Vous pouvez également télécharger notre exemple de classeur pour dupliquer des feuilles Excel et exécuter le code à partir de celui-ci.

    Le classeur type contient les macros suivantes :

    CopySheetToNewWorkbook - copie la feuille de calcul actuelle dans un nouveau classeur.

    CopySelectedSheets - copie plusieurs feuilles que vous sélectionnez dans un nouveau classeur.

    Copier la feuille au début d'un autre classeur - copie la feuille active au début d'un autre classeur.

    CopySheetToEndAnotherWorkbook - copie la feuille active à la fin d'un autre fichier Excel.

    CopySheetAndRename - duplique la feuille courante, la renomme comme spécifié par l'utilisateur et place la copie après toutes les autres feuilles du classeur courant.

    CopySheetAndRenamePredefined - duplique la feuille active, donne un nom codé en dur à la copie et la place à la fin du classeur actuel.

    CopySheetAndRenameByCell - fait une copie de la feuille active et la renomme en fonction de la valeur de la cellule sélectionnée.

    Copier la feuille et renommer la cellule 2 - copie la feuille active et la renomme en fonction de l'adresse de cellule codée en dur.

    CopySheetToClosedWorkbook - vous permet de copier une feuille dans un classeur fermé.

    CopySheetFromClosedWorkbook - vous permet de copier une feuille d'un autre fichier Excel sans l'ouvrir.

    DuplicateSheetMultipleTimes - vous permet de dupliquer plusieurs fois une feuille dans Excel.

    Pour exécuter la macro dans votre Excel, il suffit de procéder comme suit :

    1. Ouvrez le classeur téléchargé et activez le contenu si vous y êtes invité.
    2. Ouvrez votre propre classeur et accédez à la feuille que vous souhaitez copier.
    3. Dans votre feuille de calcul, appuyez sur Alt + F8, sélectionnez la macro qui vous intéresse, puis cliquez sur Exécuter .

    C'est ainsi que vous pouvez dupliquer une feuille dans Excel avec VBA. Je vous remercie de votre lecture et j'espère vous voir sur notre blog la semaine prochaine !

    Michael Brown est un passionné de technologie passionné par la simplification de processus complexes à l'aide d'outils logiciels. Avec plus d'une décennie d'expérience dans l'industrie de la technologie, il a perfectionné ses compétences dans Microsoft Excel et Outlook, ainsi que dans Google Sheets et Docs. Le blog de Michael est dédié au partage de ses connaissances et de son expertise avec les autres, en fournissant des conseils et des tutoriels faciles à suivre pour améliorer la productivité et l'efficacité. Que vous soyez un professionnel chevronné ou un débutant, le blog de Michael offre des informations précieuses et des conseils pratiques pour tirer le meilleur parti de ces outils logiciels essentiels.