VBA – ActiveWorkbook et ThisWorkbook
In this Article
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