VBA – Travailler avec des Classeurs (l’Objet Workbook)

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on janvier 12, 2022

Ce guide vous présente comment interagir avec les classeurs en utilisant lobjet Workbook en VBA.

L’objet Workbook

Tout d’abord, afin d’interagir avec les classeurs en VBA, vous devez comprendre l’Objet Workbook.

Avec l’objet Workbook, vous pouvez faire référence aux classeurs par leur nom, comme ceci :

Workbooks("Classeur2.xlsm").Activate

Cependant, ce code ne fonctionnera que si le classeur est ouvert. Si le classeur est fermé, vous devrez fournir le chemin complet du classeur :

Workbooks.Open ("C:\Utilisateurs\Steve\Téléchargements\Classeur2.xlsm")

Au lieu de saisir le chemin complet, si le classeur souhaité se trouve dans le même répertoire que le classeur où est stocké votre code, vous pouvez utiliser cette ligne de code pour ouvrir le classeur :

Workbooks.Open (ThisWorkbook.Path & "\Classeur2.xlsm")

Cette ligne utilise l’objet ThisWorkbook que nous aborderons dans la section suivante.

Numéro d’Index du Classeur

Enfin, vous pouvez faire référence aux classeurs par leur « numéro d’index ». Le numéro d’index d’un classeur correspond à l’ordre dans lequel le classeur a été ouvert (techniquement, il s’agit de la position du classeur dans la collection de classeurs).

Classeurs(1).Activate

Ceci est utile si vous voulez faire quelque chose comme fermer le premier (ou le dernier) classeur ouvert.

Activer le Classeur, Objet ActiveWorkbook et Objet ThisWorkbook

Si un classeur n’est PAS ACTIF, vous pouvez accéder aux objets du classeur comme suit :

Workbooks("Classeur2.xlsm").Sheets("Feuil1").Range("A1").value = 1

Toutefois, si le classeur est actif, vous pouvez omettre l’objet classeur :

Sheets("Feuil1").Range("A1").value = 1

Et si vous voulez interagir avec la feuille active du classeur, vous pouvez également omettre l’objet sheets :

Range("A1").value = 1

Activer le Classeur

Pour activer un classeur, utilisez la méthode Activate.

Workbooks("Classeur2.xlsm").Activate

Vous pouvez maintenant interagir avec les objets du Classeur2 sans indiquer explicitement le nom du classeur.

ActiveWorkbook

L’objet ActiveWorkbook fait toujours référence au classeur actif. Ceci est utile si vous voulez assigner le classeur actif une variable pour l’utiliser plus tard.

' Stockage du classeur actif dans la variable cl
Dim cl As Workbook
Set cl = ActiveWorkbook

ThisWorkbook

L’objet ThisWorkbook fait toujours référence au classeur dans lequel le code en cours d’exécution est stocké. Pour activer ThisWorkbook, utilisez cette ligne de code :

ThisWorkbook.Activate

Ouvrir un Classeur

Pour ouvrir un classeur, utilisez la méthode Open:

Workbooks.Open ("C:\Utilisateurs\Steve\Téléchargements\Classeur2.xlsm")

Le classeur nouvellement ouvert devient toujours l’ActiveWorkbook, ce qui vous permet d’interagir facilement avec celui-ci.

ActiveWorkbook.Save

La méthode Open a plusieurs autres arguments, vous permettant d’ouvrir en lecture seule, d’ouvrir un classeur protégé par un mot de passe, et plus encore. Nous en parlons ici dans notre article sur l’ouverture et la fermeture des classeurs.

Ouvrir un Classeur et l’Affecter à une Variable

Vous pouvez également ouvrir un classeur et l’affecter à une variable en même temps :

Dim cl As Workbook
Set cl = Workbooks.Open("C:\Utilisateurs\Steve\Téléchargements\Classeur2.xlsm")

Dialogue d’Ouverture de Fichier

Vous pouvez également déclencher la boîte de dialogue d’ouverture de fichier comme suit :

Sub OuvrirClasseur()
 
    Dim strFichier As String
 
    strFichier = Application.GetOpenFilename()
    Workbooks.Open (strFichier)
 
End Sub

Créer (Ajouter) un Nouveau Classeur

Cette ligne de code va créer un nouveau classeur:

Workbooks.Add

Le nouveau classeur devient maintenant le classeur actif (ActiveWorkbook), ce qui vous permet d’interagir avec celui-ci (par exemple, enregistrer le nouveau classeur).

Affecter un Nouveau Classeur à une Variable

Vous pouvez également ajouter un nouveau classeur directement à une variable:

Dim cl As Workbook
Set cl = Workbooks.Add

Fermer le Classeur

Fermer et Enregistrer

Pour fermer et sauvegarder un classeur, utilisez la Méthode de fermeture : close avec le paramètre « SaveChanges » réglé sur TRUE :

ActiveWorkbook.Close SaveChanges:=True

Fermer sans Sauvegarder

Pour fermer sans enregistrer, définissez le paramètre SaveChanges à FALSE :

ActiveWorkbook.Close SaveChanges:=False

Sauvegarde du Classeur Sous

La méthode SaveAs est utilisée pour enregistrer un classeur sous.

Pour enregistrer un classeur avec un nouveau nom, dans le même répertoire, vous pouvez simplement utiliser cette méthode :

ActiveWorkbook.SaveAs "NouveauClasseur"

où « NouveauClasseur » est le nouveau nom du fichier.

Pour enregistrer un classeur dans un nouveau répertoire avec une extension de fichier spécifique, il suffit de spécifier le nouveau répertoire et le nom du fichier :

ActiveWorkbook.SaveAs "C:\Utilisateurs\Steve\Téléchargements\NouveauClasseur.xlsm"

Autres Exemples VBA de Classeurs

Nom du Classeur

Pour obtenir et afficher le nom d’un classeur:

MsgBox ActiveWorkbook.Name

Protéger le Classeur

Pour protéger la structure du classeur contre l’édition, vous pouvez utiliser la Méthode de protection (mot de passe facultatif) :

Workbooks("Classeur1.xlsm").Protect "MotDePasse"

Pour enlever la protection d’un classeur, utilisez la méthode UnProtect:

Workbooks("Classeur1.xlsm").Unprotect "MotDePasse"

Boucler sur tous les Classeurs Ouverts

Pour parcourir en boucle tous les classeurs ouverts :

Sub BoucleSurLesClasseursOuverts()
    
    Dim cl As Workbook
    
    For Each cl In Workbooks
        MsgBox cl.Name
    Next cl

End Sub

Événement d’Ouverture du Classeur

Vous pouvez exécuter du code à chaque fois qu’un classeur spécifique est ouvert avec l’événement Workbook Open.

Placez cette procédure dans le module ThisWorkbook de votre classeur :

Private Sub Workbook_Open()
    Sheets("Feui1").Activate
End Sub

Cette procédure activera la feuille 1 chaque fois que le classeur sera ouvert.

vba-free-addin

Module Complémentaire d'Exemples de Code VBA

Accédez facilement à tous les exemples disponibles sur le site.

Naviguez simplement dans le menu, cliquez, et le code sera inséré directement dans votre module. Module complémentaire .xlam.

(Aucune installation requise!)

Téléchargement gratuit

Retour aux exemples de code VBA