- Copier la feuille de calcul dans le nouveau classeur
- Copier plusieurs feuilles dans un nouveau classeur
- Copier la feuille dans le même classeur
- Déplacer la feuille
- Copie et feuille de nom
- Copier la feuille de calcul dans un autre classeur
- Copier la feuille de calcul dans un classeur fermé
- Copier la feuille d'un autre classeur sans l'ouvrir
- Dupliquer une feuille Excel plusieurs fois
Ce didacticiel expliquera comment copier une feuille ou une feuille de calcul à l'aide de VBA.
Copier la feuille de calcul dans le nouveau classeur
Pour copier une feuille de calcul dans un nouveau classeur :
1 | Feuilles("Feuille1").Copier |
Copier ActiveSheet dans un nouveau classeur
Pour copier l'ActiveSheet dans un nouveau classeur :
1 | ActiveSheet.Copy |
Copier plusieurs feuilles dans un nouveau classeur
Pour copier plusieurs feuilles dans un nouveau classeur :
1 | ActiveWindow.SelectedSheets.Copy |
Copier la feuille dans le même classeur
Nous avons commencé par vous montrer l'exemple de copie de feuilles le plus simple : copier des feuilles dans un nouveau classeur. Ces exemples ci-dessous vous montreront comment copier une feuille dans le même classeur. Lors de la copie d'une feuille dans un classeur, vous devez spécifier un emplacement. Pour spécifier un emplacement, vous direz à VBA de déplacer la feuille de travail AVANT ou APRÈS une autre feuille de travail.
Copier la feuille avant une autre feuille
Ici, nous allons spécifier de copier et coller la feuille avant Sheet2
1 | Sheets("Sheet1").Copier avant :=Sheets("Sheet2") |
Copier la feuille avant la première feuille
Au lieu de spécifier le nom de la feuille, vous pouvez également spécifier la position de la feuille. Ici, nous copions et collons une feuille avant la première feuille du classeur.
1 | Feuilles("Feuille1").Copier avant :=Feuilles(1) |
La feuille nouvellement créée sera désormais la première feuille du classeur.
Copier la feuille après la dernière feuille
Utilisez la propriété After pour dire à VBA de coller la feuille APRÈS une autre feuille. Ici, nous allons copier et coller une feuille après la dernière feuille du classeur :
1 | Sheets("Sheet1").Copier après :=Sheets(Sheets.Count) |
Notez que nous avons utilisé Sheets.Count pour compter le nombre de feuilles dans le classeur.
Déplacer la feuille
Vous pouvez également déplacer une feuille dans un classeur en utilisant une syntaxe similaire. Ce code déplacera Sheet1 à la fin du classeur :
1 | Sheets("Sheet1").Déplacer après :=Sheets(Sheets.Count) |
Copie et feuille de nom
Après avoir copié et collé une feuille, la feuille nouvellement créée devient la feuille active. Donc, pour renommer notre nouvelle feuille, utilisez simplement ActiveSheet.Name :
123456 | Sub CopySheetRename1()Sheets("Sheet1").Copier après :=Sheets(Sheets.Count)ActiveSheet.Name = "LastSheet"Fin du sous-marin |
Si le nom de la feuille existe déjà, le code ci-dessus générera une erreur. Au lieu de cela, nous pouvons utiliser « On Error Resume Next » pour dire à VBA d'ignorer le nom de la feuille et de poursuivre le reste de la procédure :
12345678 | Sub CopySheetRename2()Sheets("Sheet1").Copier après :=Sheets(Sheets.Count)En cas d'erreur Reprendre ensuiteActiveSheet.Name = "LastSheet"En cas d'erreur GoTo 0Fin du sous-marin |
Ou utilisez notre fonction RangeExists pour tester si le nom de la feuille existe déjà avant d'essayer de copier la feuille :
123456789101112131415161718 | Sub CopySheetRename3()Si RangeExists("LastSheet") AlorsMsgBox "La feuille existe déjà."AutreSheets("Sheet1").Copier après :=Sheets(Sheets.Count)ActiveSheet.Name = "LastSheet"Fin siFin du sous-marinFunction RangeExists (WhatSheet As String, Facultatif ByVal WhatRange As String = "A1") As BooleanTest de gradation en tant que plageEn cas d'erreur Reprendre ensuiteDéfinir le test = ActiveWorkbook.Sheets(WhatSheet).Range(WhatRange)RangeExists = Err.Number = 0En cas d'erreur GoTo 0Fonction de fin |
Copie et feuille de nom en fonction de la valeur de la cellule
Vous pouvez également vouloir copier et nommer une feuille en fonction d'une valeur de cellule. Ce code nommera la feuille de calcul en fonction de la valeur de la cellule en A1
12345678 | Sub CopySheetRenameFromCell()Sheets("Sheet1").Copier après :=Sheets(Sheets.Count)En cas d'erreur Reprendre ensuiteActiveSheet.Name = Range("A1").ValeurEn cas d'erreur GoTo 0Fin du sous-marin |
Copier la feuille de calcul dans un autre classeur
Jusqu'à présent, nous avons travaillé avec la copie de feuilles dans un classeur. Nous allons maintenant couvrir des exemples pour copier et coller des feuilles dans d'autres classeurs. Ce code copiera une feuille au début d'un autre classeur :
1 | Sheets("Sheet1").Copier avant :=Workbooks("Example.xlsm").Sheets(1) |
Cela copiera une feuille de calcul à la fin d'un autre classeur.
1 | Sheets("Sheet1").Copier après :=Workbooks("Example.xlsm").Sheets(Workbooks("Example.xlsm").Sheets.Count) |
Remarquez que nous avons remplacé 1 avec Classeurs ("Example.xlsm").Sheets.Count pour obtenir la dernière feuille de travail.
Copier la feuille de calcul dans un classeur fermé
Vous pouvez également vouloir copier une feuille de calcul dans un classeur fermé. Ce code ouvrira un classeur fermé afin que vous puissiez y copier une feuille.
123456789 | Sous CopySheetToClosedWB()Application.ScreenUpdating = FauxDéfinir closedBook = Workbooks.Open("D:\Dropbox\excel\articles\example.xlsm")Feuilles("Feuille1").Copier avant :=Livre fermé.Feuilles(1)closedBook.Close SaveChanges:=TrueApplication.ScreenUpdating = TrueFin du sous-marin |
Copier la feuille d'un autre classeur sans l'ouvrir
Inversement, ce code copiera une feuille de calcul À PARTIR d'un classeur fermé sans que vous ayez besoin d'ouvrir manuellement le classeur.
123456789 | Sous CopySheetFromClosedWB()Application.ScreenUpdating = FauxDéfinir closedBook = Workbooks.Open("D:\Dropbox\excel\articles\example.xlsm")CloseBook.Sheets("Sheet1").Copy Before:=ThisWorkbook.Sheets(1)CloseBook.Close SaveChanges:=FalseApplication.ScreenUpdating = TrueFin du sous-marin |
Notez que dans ces deux exemples, nous avons désactivé ScreenUpdating afin que le processus s'exécute en arrière-plan.
Dupliquer une feuille Excel plusieurs fois
Vous pouvez également dupliquer une feuille Excel plusieurs fois en utilisant une boucle.
1234567891011121314 | Sous CopySheetMultipleTimes()Dim n en tant qu'entierDiminuer en tant qu'entierEn cas d'erreur Reprendre ensuiten = InputBox("Combien de copies voulez-vous faire ?")Si n > 0 AlorsPour i = 1 à nActiveSheet.Copy After :=ActiveWorkbook.Sheets(Worksheets.Count)ProchainFin siFin du sous-marin |