VBA – ActiveWorkbook et ThisWorkbook

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on décembre 23, 2021

Ce tutoriel traite de la différence entre les objets ActiveWorkbook et ThisWorkbook en VBA.

ActiveWorkbook et ThisWorkbook

Il est important de connaître la différence entre les objets ActiveWorkbook et ThisWorkbook en VBA:

L’objet ActiveWorkbook est le classeur qui est actuellement actif (de la même manière que ActiveSheet est la feuille actuellement active). ThisWorkbook est le classeur dans lequel le code VBA est stocké. ThisWorkbook ne changera jamais pendant l’exécution d’une macro.

ThisWorkbook

Considérez ThisWorkbook comme une variable objet qui vous permet de faire référence au classeur contenant le code en cours d’exécution.

Ce code affichera un MessageBox avec le nom de l’objet ThisWorkbook :

Sub Afficher_ThisWorkbook()
    MsgBox ThisWorkbook.Name
End Sub

ActiveWorkbook

L’objet ActiveWorkbook est une variable qui vous permet de faire référence au classeur actuellement actif. Ce code va afficher un MessageBox avec le nom de l’objet ActiveWorkbook :

Sub Afficher_ActiveWorkbook()
    MsgBox ActiveWorkbook.Name
End Sub

VBA Suppose l’Existence de l’Objet ActiveWorkbook

Lorsque vous essayez de travailler avec des objets (ex. Feuilles) dans le classuer réprésenté par l’objet ActiveWorkbook, vous n’avez pas besoin d’indiquer explicitement l’objet ActiveWorkbook. VBA supposera que vous faites référence à l’ActiveWorkbook.

Donc ceci :

ActiveWorkbook.Sheets("Feuil1").Range("$A$5").Value = 1

Est la même chose que ceci :

Sheets("Feuil1").Range("$A$5").Value = 1

Les Nouveaux Classeurs ou Ouverts Sont Actifs

Chaque fois que vous créez un nouveau classeur ou que vous ouvrez un classeur existant, ce dernier devient « actif ». Vous pouvez le constater par vous-même avec ce code qui ajoute un classeur et récupère le nom du nouveau classeur :

Sub Afficher_Nouveau_ActiveWorkbook()
    Workbooks.Add
    MsgBox ActiveWorkbook.Name
End Sub

Après avoir ajouté ou ouvert un classeur, vous pouvez l’affecter à une variable en utilisant l’objet ActiveWorkbook. Nous allons vous montrer comment dans les exemples ci-dessous :

Exemples avec ThisWorkbook et ActiveWorkbook

Changement de Classeur Actif

Changez le classeur actif en utilisant le nom du classeur :

Workbooks("Classeur1").Activate

Changer le classeur actif en utilisant un index comme numéro d’ordre du classeur (1 est le premier classeur ouvert ou créé) :

Workbooks(1).Activate

Rendre Actif le Classeur ThisWorkbook

Faire de l’objet ThisWorkbook (où le code en cours d’exécution est stocké) le classeur actif :

ThisWorkbook.Activate

Définir ActiveWorkbook Comme une Variable

Attribuer le classeur ActiveWorkbook à une variable objet :

Dim cl As Workbook
Set cl = ActiveWorkbook

Fermer et Enregistrer le Classeur Actif

Ferme et enregistre le classeur actif :

ActiveWorkbook.Close SaveChanges:=True

Fermer le Classeur Actif sans l’Enregistrer

Ferme le classeur actif sans l’enregistrer :

ActiveWorkbook.Close SaveChanges:=False

ActiveWorkbook – Enregistrer Sous

Effectue une sauvegarde du classeur actif.

Sub EnregistrerSous_ActiveWorkbook()
    Dim résultat As Variant
    résultat = Application.GetSaveAsFilename(InitialFileName:="", _
    FileFilter:="Classeur Excel Prenant en Charge les Macros (*.xlsm), *.xlsm, Classeur Excel (*.xlsx), *.xlsx")
    
    If résultat = Faux Then Exit Sub
    
    ActiveWorkbook.SaveAs résultat
End Sub
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