Créer un nouveau classeur dans Excel vba

La méthode Add de la collection Workbooks est utilisée pour créer un nouveau classeur. Le nouveau classeur devient le classeur actif. La création d'un nouveau Workbook s'effectue en ajoutant un nouvel élément à la collection Workbooks.

Dans sa forme la plus simple, il s'appelle ainsi :


Workbooks.Add

L'objet de la collection Workbooks est ici obtenu à partir de la procédure Application.Workbooks.

Dans la plupart des cas, vous ferez suivre la création du nouvel objet Workbook par d'autres actions sur celui-ci. Pour ce faire, vous utilisez l'appel de procédure pour affecter l'objet créé à une variable d'objet, ici wb.


Dim wb As Workbook
Set wb = Workbooks.Add

L'argument facultatif Template

L'argument facultatif Template détermine la manière dont le nouveau classeur est créé. Si cet argument est omis, Microsoft Excel crée un nouveau classeur avec un certain nombre de feuilles vierges, le nombre de feuilles est déterminé par la propriété SheetsInNewWorkbook.


Application.SheetsInNewWorkbook = 2 'Setting the SheetsInNewWorkbook value
Dim lngSheetsInNewWorkbook As Long
lngSheetsInNewWorkbook = Application.SheetsInNewWorkbook 'Obtaining the current value

Utilisation d'un fichier modèle pour créer le nouveau classeur à partir de

Si cet argument est une chaîne de caractères spécifiant le nom d'un fichier Microsoft Excel existant, le nouveau classeur est créé avec le fichier spécifié comme modèle. Si vous trouvez le modèle dans le dossier de modèles désigné (ici : \Documents\NModèles Office personnalisés), vous pouvez ignorer le chemin d'accès :


Dim wb As Workbook
Set wb = Workbooks.Add(Template:="MyTemplate.xltx")

Si vous avez l'intention de stocker le modèle dans un autre dossier, vous devez spécifier le chemin d'accès complet :


Dim wb As Workbook
Set wb = Workbooks.Add(Template:="C:\Code VBA\Demo\MyTemplate.xltx")

Classeur avec une seule feuille du type sélectionné

En utilisant l'une des constantes XlWBATemplate comme argument Template, vous créez un nouveau classeur avec une seule feuille du type spécifié : xlWBATChart pour obtenir une feuille de graphique ou xlWBATWorksheet pour une feuille de calcul.


Dim wb As Workbook
Set wb = Workbooks.Add(Template:=xlWBATWorksheet)

Classeur avec plusieurs feuilles du type sélectionné

Compte tenu des risques liés à l'utilisation de la propriété SheetsInNewWorkbook (décrite ci-dessus), je vous propose de commencer par une seule feuille et d'y ajouter autant de feuilles que vous le souhaitez, en dessous de trois au total :


Dim wb As Workbook
Set wb = Workbooks.Add(Template:=xlWBATWorksheet) '1
wb.Sheets.Add(Type:=xlWorksheet, Count:=2) 'The number of sheets to be added. 

Créez un nouveau classeur et nommez-le

Le nom d'un classeur sauvegardé est son nom de fichier, y compris l'extension du fichier. Un classeur qui n'a pas encore été sauvegardé obtient un nom temporaire tel que Book1 - qui n'est pas très distinctif. Pour agir sur un classeur, il faut l'identifier dans la collection Workbooks.

Pour donner le classeur, il faut le sauvegarder :


Dim wb As Workbook
Set wb = Workbooks.Add
wb.SaveAs

Le SaveAs ci-dessus n'a pas de paramètres spécifiés et n'utilise que les valeurs par défaut. Le fichier sera nommé d'après son nom temporaire Book1.xlsx et enregistré dans le dossier actuel.

Créer un nouveau classeur vba et copier des feuilles

Il arrive souvent que l'on veuille copier certaines feuilles contenant des données dans un classeur nouvellement créé. Pour ce faire, il est important d'identifier d'abord les objets concernés : le classeur source wbSource, le nouveau classeur wbNew, la feuille à copier wsToCopy, et l'emplacement dans le nouveau classeur où vous voulez l'ajouter wsPasteLocation. Après avoir fait cela, il suffit d'appeler wsToCopy.Copy en fournissant l'emplacement où copier la feuille :After:=wsPasteLocation


Dim wbNew As Workbook
Set wbNew = Workbooks.Add
Dim wbSource As Workbook
Set wbSource = Workbooks.Open(Filename:="C:\Code VBA\Demo\Data.xlsx")
Dim wsToCopy As Worksheet
Set wsToCopy = wbSource.Sheets("Sheet1")
Dim wsPasteLocation As Worksheet
Set wsPasteLocation = wbNew.Sheets("Sheet1")
wsToCopy.Copy After:=wsPasteLocation	
Auteur : Mark Uildriks
Référence : Workbooks.Add(Excel) | Microsoft Learn
icône

Essayez le complément de l'éditeur Code VBA