Table des matières
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 SubCopier 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 SubExcel 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 SubCopier 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 SubRemarque : 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 EndSousUne 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 SubCopie 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 SubLorsqu'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 SubPour 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 SubLors 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 SubVous 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 SubMacro 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 SubExcel 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.
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 SubOuvrez 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 :
- Ouvrez la feuille de calcul que vous voulez copier.
- Appuyez sur Alt + F11 pour ouvrir l'éditeur Visual Basic.
- Dans le volet de gauche, cliquez à droite sur Ce manuel de travail puis cliquez sur Insérer > ; Module .
- Collez le code dans la fenêtre Code.
- 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 :
- Ouvrez le classeur téléchargé et activez le contenu si vous y êtes invité.
- Ouvrez votre propre classeur et accédez à la feuille que vous souhaitez copier.
- 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 !