VBA – Travailler avec des Classeurs (l’Objet Workbook)
In this Article
Ce guide vous présente comment interagir avec les classeurs en utilisant l‘objet 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.