Comment copier et déplacer une feuille en utilisant VBA ?

Vous pouvez copier et déplacer une feuille dans Excel à l’aide d’un code VBA, et dans ce didacticiel, nous apprendrons différentes façons de le faire.

Copier une feuille dans le même classeur

Si vous souhaitez copier une feuille dans le même classeur, vous pouvez utiliser le code suivant où vous avez utilisé la méthode de copie.

Sheets("Sheet5").Copy Before:=Sheets(1)

Dans ce code, feuille1 est la première feuille du classeur, et lorsque vous exécutez ce code, il copie la feuille avec le nom « Feuille5 » avant la première feuille du classeur.

copier-une-feuille-dans-le-même-classeur

Et si vous voulez le copier après la première feuille, le code serait le suivant.

Sheets("Sheet5").Copy After:=Sheets(1)

Et si vous voulez le copier après la première feuille, le code serait comme suit.

Sheets("Sheet5").Copy Before:=Sheets("Sheet3")
Sheets("Sheet5").Copy After:=Sheets("Sheet3")

Lorsque vous exécutez ce code VBA, il copie le « Sheet5 » avant et après le « Sheet3 ».

code vba si vous voulez le copier après la première feuille

Avec la ligne de code suivante, vous pouvez copier une feuille après la dernière feuille du classeur. Il utilise le sheet.count pour obtenir le nombre de feuilles, puis utilise le nombre pour copier la feuille en dernier.

Sheets("myNewSheet").Move After:=Sheets(Sheets.Count)
copier-une-feuille-après-la-dernière-feuille-du-classeur

Liens utiles : Exécuter une macroEnregistreur de macrosVisual Basic EditorManuel de macros personnelles

Copier une feuille dans le même classeur avec un nouveau nom

Et si vous voulez copier une feuille et ensuite la renommer instantanément, vous devez utiliser la propriété name, tout comme le code suivant.

Sheets("Sheet5").Move Before:=Sheets(1)
ActiveSheet.Name = "myNewSheet"
copier-une-feuille-dans-le-même-classeur-avec-le-nouveau-nom

Déplacer une feuille dans le même classeur

Pour déplacer une feuille dans le même classeur, vous devez utiliser la méthode de déplacement comme vous l’avez dans le code suivant.

Sheets("Sheet5").Move After:=Sheets(1)
déplacer-une-feuille-dans-le-même-classeur

Ce code déplacera « Sheet5 » avant « Sheet2 » comme vous pouvez le voir dans l’instantané ci-dessus.

Copier une feuille dans le nouveau classeur

Lorsque vous utilisez la méthode de copie sans définir de feuille dans le classeur en cours, VBA ouvre un nouveau classeur et copie cette feuille dans ce classeur.

Sheets("Sheet5").Copy

Et pour déplacer une feuille vers un nouveau classeur.

Sheets("Sheet5").Move

Copier plusieurs feuilles dans le nouveau classeur

Si vous souhaitez ajouter plusieurs feuilles au nouveau classeur en une seule fois, utilisez un code comme celui-ci.

Sheets(Array("Sheet2", "Sheet3", "Sheet4", "Sheet5")).Copy

Le code ci-dessus crée un tableau des feuilles, puis les copie toutes dans un nouveau classeur.

Copier une feuille dans un autre classeur

Si vous souhaitez copier une feuille dans un autre classeur déjà ouvert, vous pouvez mentionner le nom du classeur après ou avant l’argument.

Sheets("Sheet1").Copy Before:=Workbooks("Book1.xlsx").Sheets(1)

Le code ci-dessus copie Sheet1 à partir du classeur actif et l’ajoute avant la première feuille de Book1.xlsx qui est déjà ouverte.

Et si vous voulez le déplacer.

Sheets("Sheet1").Move Before:=Workbooks("Book1.xlsx").Sheets(1)

Copier une feuille dans un classeur fermé

Il existe un moyen de copier une feuille dans un classeur fermé et vous n’avez pas besoin de l’ouvrir. Regardez le code ci-dessous.

Sub vba_copy_sheet()
Dim mybook As Workbook

Application.ScreenUpdating = False

Set mybook = _
Workbooks.Open _
("C:UsersDellDesktopsamplefile.xlsx")

Workbooks("Book1.xlsx").Sheets("Sheet2").Copy Before:=mybook.Sheets(1)
mybook.Close SaveChanges:=True

Application.ScreenUpdating = True

End Sub

Dans ce code, vous avez la variable myBook puis un classeur qui lui est assigné. Nous avons désactivé la mise à jour de l’écran afin que le code puisse effectuer la tâche au niveau du backend.

Copier une feuille d’un autre classeur sans l’ouvrir

De la même manière, vous pouvez copier et déplacer une feuille d’un classeur fermé. Regardez le code ci-dessous.

Sub vba_copy_sheet()
Dim mybook As Workbook

Application.ScreenUpdating = False

Set mybook = _
Workbooks.Open _
("C:UsersDellDesktopsamplefile.xlsx")

mybook.Sheets("mySheet").Copy Before:=Workbooks("Book1.xlsx").Sheets(1)
mybook.Close SaveChanges:=True

Application.ScreenUpdating = True
End Sub

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *