VBA Ouvrir / Fermer un Classeur

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on août 22, 2022

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.

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