VBA Ouvrir / Fermer un Classeur
In this Article
Dans ce tutoriel, vous apprendrez à utiliser VBA pour ouvrir et fermer un classeur Excel de plusieurs façons.
VBA vous permet d’ouvrir ou de fermer des fichiers en utilisant les méthodes standard .Open et .Close.
Si vous voulez apprendre comment vérifier si un fichier existe avant de tenter de l’ouvrir, vous pouvez cliquer sur ce lien : VBA File Exists
Ouvrir un Classeur en VBA
Ouvrir un Classeur à Partir du Chemin d’Accès
Si vous savez quel fichier vous voulez ouvrir, vous pouvez spécifier son nom de chemin complet dans la fonction. Voici le code :
Workbooks.Open "C:\Dossier VBA\Fichier Exemple 1.xlsx"
Cette ligne de code ouvre le fichier « Fichier Exemple 1 » depuis le répertoire « Dossier VBA ».
Ouvrir un Classeur – ActiveWorkbook
Lorsque vous ouvrez un classeur, il devient automatiquement le classeur actif référencé par l’objet ActiveWorkbook.
Vous pouvez faire référence au nouveau classeur ouvert de la manière suivante :
ActiveWorkbook.Save
Lorsque vous faites référence à une feuille ou à une plage et que vous omettez le nom du classeur, VBA suppose que vous faites référence à l’ActiveWorkbook :
Sheets("Feuil1").Name = "Entrée"
Ouverture du Classeur et Affectation à une Variable
Vous pouvez également ouvrir un classeur et l’affecter directement à une variable objet. La procédure suivante ouvre un classeur et l’attribu à la variable cl, puis enregistre le classeur.
Sub OuvrirClasseurEtAffecterVariable()
Dim cl As Workbook
Set cl = Workbooks.Open("C:\Dossier VBA\Fichier Exemple 1.xlsx")
cl.Save
End Sub
L’affectation des classeurs à des variables lorsqu’ils s’ouvrent est la meilleure façon de conserver la trace de vos classeurs
Boîte de Dialogue d’Ouverture de Fichier
Vous pouvez également déclencher la boîte de dialogue d’ouverture de fichier de Excel. Cela permet à l’utilisateur de naviguer vers un fichier et de l’ouvrir :
Sub OuvrirClasseurBoiteDialogue()
Dim strFichier As String
strFichier = Application.GetOpenFilename()
Workbooks.Open (strFichier)
End Sub
Comme vous pouvez le voir dans l’image 1, avec cette approche, les utilisateurs peuvent choisir le fichier à ouvrir. La boîte de dialogue d’ouverture de fichier peut être fortement personnalisée. Vous pouvez sélectionner un dossier par défaut, choisir les types de fichiers visibles (ex. : .xlsx uniquement), etc. Lisez notre tutoriel sur la boîte de dialogue Ouvrir un fichier pour des exemples détaillés.
Ouvrir un Nouveau Classeur
Cette ligne de code va ouvrir un nouveau classeur:
Workbooks.Add
Ouvrir un Nouveau Classeur et Attribuer à une Variable
Cette procédure va ouvrir un nouveau classeur, en l’assignant à la variable cl :
Sub OuvertureNouveauClasseur()
Dim cl As Workbook
Set cl = Workbooks.Add
End Sub
Syntaxe d’Ouverture d’un Classeur
Lorsque vous utilisez Workbooks.Open, vous pouvez remarquer que de nombreuses options sont disponibles pour ouvrir le classeur :
Le nom de fichier est obligatoire. Tous les autres arguments sont optionnels – et vous n’aurez probablement pas besoin de connaître la plupart des autres arguments. Voici les deux arguments les plus courants :
Ouvrir le Classeur en Lecture Seule – « ReadOnly »
Lorsque le classeur est ouvert en lecture seule, vous ne pouvez pas enregistrer par-dessus le fichier original. Cela empêche le fichier d’être modifié par l’utilisateur.
Workbooks.Open "C:\Dossier VBA\Fichier Exemple 1.xlsx", , True
Ouvrir un Classeur Protégé par un Mot de Passe – « Password »
Un classeur peut être protégé par un mot de passe. Utilisez ce code pour ouvrir le classeur protégé par mot de passe :
Workbooks.Open "C:\Dossier VBA\Fichier Exemple 1.xlsx", , , , "Mot de Passe"
Remarques sur la Syntaxe d’Ouverture du Classeur
Remarquez que dans l’image ci-dessus, nous avons inclus une parenthèse « ( » pour montrer la syntaxe. Si vous utilisez des parenthèses lorsque vous travaillez avec Workbooks.Open, vous devez affecter le classeur à une variable :
Sub OuvertureClasseur()
Dim cl As Workbook
Set cl = Workbooks.Open("C:\Dossier VBA\Fichier Exemple 1.xlsx", True, True)
End Sub
Fermer un Classeur en VBA
Fermer un Classeur Spécifique
Comme pour l’ouverture d’un classeur, il existe plusieurs façons de fermer un fichier. Si vous savez quel fichier vous voulez fermer, vous pouvez utiliser le code suivant :
Workbooks.Close ("C:\Dossier VBA\Fichier exemple 1.xlsx")
Cette ligne de code ferme le fichier « Fichier Exemple 1 » s’il est ouvert. Si ce n’est pas le cas, elle renvoie une erreur, vous devez donc vous occuper de la gestion des erreurs.
Fermer le Classeur Actif
Si vous voulez fermer le classeur qui est actuellement actif, cette ligne de code vous permettra de le faire :
ActiveWorkbook.Close
Fermer Tous les Classeurs Ouverts
Pour fermer tous les classeurs ouverts, vous pouvez simplement utiliser ce code :
Workbooks.Close
Fermer le Premier Classeur Ouvert
Ceci va fermer le premier classeur ouvert/créé :
Workbooks(1).Close
Remplacez 1 par 2 pour fermer le deuxième classeur ouvert/créé et ainsi de suite.
Fermer Sans Sauvegarder
Cette commande permet de fermer un classeur sans l’enregistrer et sans afficher l’invite d’enregistrement :
ActiveWorkbook.Close savechanges:=False
Enregistrer et Fermer Sans Invite
De la même manière, cette commande permet d’enregistrer et de fermer un classeur sans afficher l’invite d’enregistrement :
ActiveWorkbook.Close savechanges:=True
Remarque : Il existe plusieurs autres façons d’indiquer s’il faut sauvegarder ou non un classeur et d’afficher ou non les invites d’utilisateurs. Ceci est discuté plus en détail ici.
Autres Exemples d’Ouverture de Classeurs
Ouvrir Plusieurs Nouveaux Classeurs
Cette procédure ouvre plusieurs nouveaux classeurs, en affectant les nouveaux classeurs à un tableau :
Sub OuvrirPlusieursNouveauxClasseurs()
Dim classeurs(3) As Workbook
Dim i As Integer
For i = 1 To 3
Set classeurs(i) = Workbooks.Add
Next i
End Sub
Ouvrir Tous les Classeurs Excel d’un Dossier
Cette procédure permet d’ouvrir tous les classeurs Excel d’un dossier spécifique, en utilisant la boîte de dialogue d’ouverture de fichier.
Sub OuvrirTousLesClasseursDansDosIfer()
Dim cl As Workbook
Dim dialogFichier As FileDialog
Dim strDossier As String
Dim strNomFichier As String
Set dialogFichier = Application.FileDialog(msoFileDialogFolderPicker)
If dialogFichier.Show = -1 Then
strDossier = dialogFichier.SelectedItems(1) & Application.PathSeparator
strNomFichier = Dir(strDossier & "*.xls*")
Do While strNomFichier <> ""
Set cl = Workbooks.Open(strDossier & strNomFichier)
strNomFichier = Dir
Loop
End If
End Sub
Vérifier si un Classeur est Ouvert
Cette procédure permet de vérifier si un classeur est ouvert:
Sub RechercherClasseurOuvertParSonNom()
Dim cl As Workbook
For Each cl In Workbooks
If cl.Name = "Nom_du_Classeur_Recherché.xls" Then
MsgBox "Trouvé"
Exit Sub 'Intégrer votre code ici, nous allons juste quitter pour le moment
End If
Next
End Sub
Événement Workbook_Open
Les événements VBA sont des « déclencheurs » qui indiquent à VBA d’exécuter certains codes. Vous pouvez configurer des événements de classeur pour l’ouverture, la fermeture, avant la sauvegarde, après la sauvegarde et plus encore.
Lisez notre tutoriel sur l’événement Workbook_Open pour en savoir plus sur l’exécution automatique de macros lorsqu’un classeur est ouvert.