Lors de l’organisation des données dans des classeurs, il n’est pas rare de copier des feuilles de calcul d’un classeur à un autre. En effet, le Edit | La commande Déplacer ou copier une feuille est celle que j’utilise assez souvent, et je serais prêt à parier que d’autres l’utilisent aussi souvent.

Comment, alors, copier des feuilles de calcul dans une macro? La réponse est d’utiliser la méthode Copy avec une feuille de calcul individuelle ou un groupe de feuilles de calcul.

Par exemple, le code de macro suivant copiera la feuille de calcul actuellement sélectionnée dans un nouveau classeur:

ActiveSheet.Copy

C’est ça; une seule ligne est tout ce qui est nécessaire pour copier la feuille de calcul dans un nouveau classeur sans nom. Après avoir exécuté la ligne, le nouveau classeur est sélectionné et vous pouvez l’enregistrer à l’aide d’un code similaire au suivant. La première ligne du code enregistre le classeur et la seconde le ferme.

ActiveWorkbook.SaveAs Filename:="MyNewFile.xlsm", _   FileFormat:=xlOpenXMLWorkbookMacroEnabled ActiveWindow.Close

Si vous souhaitez copier une feuille spécifique dans un autre classeur, vous le faites en spécifiant le nom de la feuille que vous souhaitez copier, au lieu d’utiliser l’objet ActiveSheet:

Sheets("Sheet1").Copy

Cet exemple copie la feuille de calcul nommée Sheet1, de la collection Sheets, dans un nouveau classeur. Vous pouvez ensuite enregistrer le nouveau classeur, comme déjà indiqué.

La méthode Copy, lorsqu’elle est utilisée avec des feuilles de calcul, n’est pas limitée à la copie d’une seule feuille à la fois. Si vous avez sélectionné un groupe de feuilles, vous pouvez toujours utiliser une seule ligne de commande pour les copier toutes dans un nouveau classeur.

C’est ce qui est fait dans cette macro:

Sub CopyWorkbook()

Dim sCopyName As String

sCopyName = "My New Workbook.xlsm"



SelectedSheets.Copy     ActiveWorkbook.SaveAs Filename:=sCopyName, _       FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub

Notez l’utilisation de la commande Copier. La macro fonctionnera que vous ayez une feuille de calcul sélectionnée ou cinquante; ça n’a pas d’importance. Si vous souhaitez, à la place, copier toutes les feuilles de calcul d’un classeur à un autre, il vous suffit de faire une seule modification dans la macro, sur la ligne où la méthode Copy est appelée:

Sheets.Copy

Cela copie toute la collection Sheets, qui comprend toutes les feuilles de calcul du classeur.

Il convient de noter que la méthode Copy ne sert pas uniquement à copier des feuilles de calcul dans un nouveau classeur; il peut également être utilisé pour copier des feuilles de calcul dans le même classeur. La seule chose que vous devez faire est de spécifier où dans le classeur actuel vous voulez faire la copie:

ActiveSheet.Copy After:=Sheets("Sheet7")

Cette ligne de code copie la feuille de calcul active dans le même classeur afin qu’il apparaisse après la feuille de calcul nommée Sheet7. Si cela convient mieux à vos besoins, vous pouvez à la place spécifier la feuille de travail devant laquelle la copie doit être placée:

ActiveSheet.Copy Before:=Sheets("Sheet7")

Cela entraîne le placement de la feuille de calcul avant Sheet7 au lieu après.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (2784) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Copying_Worksheets_in_a_Macro [Copie de feuilles de travail dans une macro].