VBA Copier une Feuille de Calcul
In this Article
- Copier une Feuille de Calcul dans un Nouveau Classeur
- Copie de Plusieurs Feuilles dans un Nouveau Classeur
- Copier une Feuille dans un Même Classeur
- Déplacer une Feuille
- Copier et Nommer une Feuille
- Copier une Feuille de Calcul dans un Autre Classeur
- Copie d’une Feuille de Calcul dans un Classeur Fermé
- Copier la Feuille d’un Autre Classeur sans l’Ouvrir
- Dupliquer une Feuille Excel Plusieurs Fois
Ce tutoriel explique comment copier une feuille ou une feuille de calcul à l’aide de VBA.
Copier une Feuille de Calcul dans un Nouveau Classeur
Pour copier une feuille de calcul dans un nouveau classeur:
Sheets("Feuil1").Copy
Copie de la Feuille Active dans un Nouveau Classeur
Pour copier la feuille active dans un nouveau classeur :
ActiveSheet.Copy
Copie de Plusieurs Feuilles dans un Nouveau Classeur
Pour copier plusieurs feuilles dans un nouveau classeur :
ActiveWindow.SelectedSheets.Copy
Copier une Feuille dans un Même Classeur
Nous avons commencé par vous montrer l’exemple le plus simple de copie de feuilles : copier une ou plusieurs feuilles dans un nouveau classeur. Les exemples ci-dessous vous montrent comment copier une feuille au sein d’un même classeur. Lorsque vous copiez une feuille dans un classeur, vous devez spécifier un emplacement. Pour spécifier un emplacement, vous indiquerez à VBA de déplacer la feuille de calcul AVANT ou APRÈS une autre feuille de calcul.
Copier la feuille avant une autre feuille
Ici, nous allons spécifier de copier et coller la feuille avant la feuille 2
Sheets("Feuil1").Copy Before:=Sheets("Feuil2")
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.
Sheets("Feuil1").Copy Before:=Sheets(1)
La nouvelle feuille créée sera désormais la première feuille du classeur.
Copie de la Feuille après la Dernière Feuille
Utilisez la propriété After pour indiquer à 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 :
Sheets("Feuil1").Copy After:=Sheets(Sheets.Count)
Remarquez que nous avons utilisé Sheets.Count pour compter le nombre de feuilles dans le classeur.
Déplacer une Feuille
Vous pouvez également déplacer une feuille dans un classeur en utilisant une syntaxe similaire. Le code suivant déplacera la feuille 1 à la fin du classeur :
Sheets("Feuil1").Move After:=Sheets(Sheets.Count)
Copier et Nommer une Feuille
Après avoir copié et collé une feuille, la nouvelle feuille créée devient la feuille active. Ainsi, pour renommer notre nouvelle feuille, il suffit d’utiliser ActiveSheet.Name :
Sub CopierFeuilleRenommer1()
Sheets("Feuil1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "DernièreFeuille"
End Sub
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 l’instruction « On Error Resume Next » pour indiquer à VBA d’ignorer le nom de la feuille et de poursuivre le reste de la procédure :
Sub CopierFeuilleRenommer2()
Sheets("Feuil1").Copy After:=Sheets(Sheets.Count)
On Error Resume Next
ActiveSheet.Name = "DernièreFeuille"
On Error GoTo 0
End Sub
Ou utilisez notre fonction PlageExiste pour tester si le nom de la feuille existe déjà avant de tenter de la copier :
Sub CopierFeuilleRenommer3()
If PlageExiste("DernièreFeuille") Then
MsgBox "La feuille existe déjà."
Else
Sheets("Feuil1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "DernièreFeuille"
End If
End Sub
Function PlageExiste(QuelleFeuille As String, Optional ByVal QuellePlage As String = "A1") As Boolean
Dim test As Range
On Error Resume Next
Set test = ActiveWorkbook.Sheets(QuelleFeuille ).Range(QuellePlage)
PlageExiste = Err.Number = 0
On Error GoTo 0
End Function
Copier et Nommer une Feuille en Fonction de la Valeur d’une Cellule
Vous pouvez également vouloir copier et nommer une feuille en fonction de la valeur d’une cellule. Ce code va nommer la feuille de travail en fonction de la valeur de la cellule A1
Sub CopierFeuilleRenommerParCellule()
Sheets("Feuil1").Copy After:=Sheets(Sheets.Count)
On Error Resume Next
ActiveSheet.Name = Range("A1").Value
On Error GoTo 0
End Sub
Copier une Feuille de Calcul dans un Autre Classeur
Jusqu’à présent, nous avons travaillé sur la copie de feuilles de calcul dans un classeur. Nous allons maintenant aborder des exemples de copie et de collage de feuilles dans d’autres classeurs. Ce code permet de copier une feuille au début d’un autre classeur :
Sheets("Feuil1").Copy Before:=Workbooks("Exemple.xlsm").Sheets(1)
Ceci copiera une feuille de calcul à la fin d’un autre classeur.
Sheets("Feuil1").Copy After:=Workbooks("Exemple.xlsm").Sheets(Workbooks("Exemple.xlsm").Sheets.Count)
Remarquez que nous avons remplacé 1 par Workbooks(« Exemple.xlsm »).Sheets.Count pour obtenir la dernière feuille de calcul.
Copie d’une Feuille de Calcul dans un Classeur Fermé
Vous pouvez également souhaiter copier une feuille de travail dans un classeur fermé. Ce code ouvre un classeur fermé afin que vous puissiez y copier une feuille.
Sub CopierFeuilleDansClasseurFermé()
Application.ScreenUpdating = False
Set classeurFermé = Workbooks.Open("D:\Dropbox\excel\articles\exemple.xlsm")
Sheets("Feuil1").Copy Before:=classeurFermé.Sheets(1)
classeurFermé.Close SaveChanges:=True
Application.ScreenUpdating = True
End Sub
Copier la Feuille d’un Autre Classeur sans l’Ouvrir
À l’inverse, ce code permet de copier une feuille de calcul À PARTIR d’un classeur fermé sans que vous ayez besoin d’ouvrir manuellement le classeur.
Sub CopierFeuilleDuClasseurFermé()
Application.ScreenUpdating = False
Set classeurFermé = Workbooks.Open("D:\Dropbox\excel\articles\exemple.xlsm")
classeurFermé.Sheets("Feuil1").Copy Before:=ThisWorkbook.Sheets(1)
classeurFermé.Close SaveChanges:=False
Application.ScreenUpdating = True
End Sub
Remarquez que dans ces deux exemples, nous avons désactivé le paramètre ScreenUpdating pour que le processus s’exécute en arrière-plan sans que les actions soient visibles par l’utilisateur.
Dupliquer une Feuille Excel Plusieurs Fois
Vous pouvez également dupliquer une feuille Excel plusieurs fois en utilisant une boucle.
Sub CopierFeuilleMultiple()
Dim n As Integer
Dim i As Integer
On Error Resume Next
n = InputBox("Combien de copies voulez-vous créer?")
If n > 0 Then
For i = 1 To n
ActiveSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count)
Next
End If
End Sub