Articles

Utilisation de l’objet Classeur dans Excel VBA (Ouvrir, Fermer, Enregistrer, Définir)

Dans ce tutoriel, je vais expliquer comment travailler avec des classeurs dans Excel à l’aide de VBA.

Dans Excel, un ‘Classeur’ est un objet qui fait partie de la collection ‘Classeurs’. Dans un classeur, vous avez différents objets tels que des feuilles de calcul, des feuilles de graphique, des cellules et des plages, des objets de graphique, des formes, etc.

Avec VBA, vous pouvez faire beaucoup de choses avec un objet classeur – comme ouvrir un classeur spécifique, enregistrer et fermer des classeurs, créer de nouveaux classeurs, modifier les propriétés du classeur, etc.

Alors commençons.

Tous les codes que je mentionne dans ce tutoriel doivent être placés dans l’éditeur Visual Basic. Allez dans la section « Où mettre le code VBA » pour savoir comment cela fonctionne.

Si vous souhaitez apprendre VBA de manière simple, consultez ma formation en ligne Excel VBA.

Ce tutoriel Couvre :

Référencement d’un classeur à l’aide de VBA

Il existe différentes façons de se référer à un objet Classeur dans VBA. La méthode que vous choisissez dépend de ce que vous voulez faire. Dans cette section, je vais couvrir les différentes façons de se référer à un classeur avec quelques exemples de codes.

Utilisation des noms de classeurs

Si vous avez le nom exact du classeur auquel vous souhaitez vous référer, vous pouvez utiliser le nom dans le code.

Commençons par un exemple simple.

Si vous avez deux classeurs ouverts et que vous souhaitez activer le classeur avec le nom – Exemples.xlsx, vous pouvez utiliser le code ci-dessous:

Sub ActivateWorkbook()Workbooks("Examples.xlsx").ActivateEnd Sub

Notez que vous devez utiliser le nom de fichier avec l’extension si le fichier a été enregistré. S’il n’a pas été enregistré, vous pouvez utiliser le nom sans l’extension de fichier.

Si vous ne savez pas quel nom utiliser, prenez l’aide de l’Explorateur de projet.

Objet Feuilles de calcul dans Excel VBA - nom du fichier dans l'explorateur de projet

Si vous souhaitez activer un classeur et sélectionner une cellule spécifique dans une feuille de calcul de ce classeur, vous devez indiquer l’adresse complète de la cellule (y compris le classeur et le nom de la feuille de calcul).

Sub ActivateWorkbook()Workbooks("Examples.xlsx").Worksheets("Sheet1").ActivateRange("A1").SelectEnd Sub

Le code ci-dessus active d’abord Sheet1 dans les exemples.classeur xlsx, puis sélectionne la cellule A1 dans la feuille.

Vous verrez souvent un code où une référence à une feuille de calcul ou à une cellule / plage est faite sans faire référence au classeur. Cela se produit lorsque vous faites référence à la feuille de calcul / plages du même classeur qui contient le code et qui est également le classeur actif. Cependant, dans certains cas, vous devez spécifier le classeur pour vous assurer que le code fonctionne (plus à ce sujet dans la section ThisWorkbook).

En utilisant les numéros d’index

Vous pouvez également vous référer aux classeurs en fonction de leur numéro d’index.

Par exemple, si vous avez trois classeurs ouverts, le code suivant vous indiquera les noms des trois classeurs dans une boîte de message (un à la fois).

Sub WorkbookName()MsgBox Workbooks(1).NameMsgBox Workbooks(2).NameMsgBox Workbooks(3).NameEnd Sub

Le code ci-dessus utilise MsgBox – qui est une fonction qui affiche une boîte de message avec le texte / la valeur spécifiée (qui est le nom du classeur dans ce cas).

L’un des problèmes que j’ai souvent avec l’utilisation des numéros d’index avec les classeurs est que vous ne savez jamais lequel est le premier classeur et lequel est le second et ainsi de suite. Pour être sûr, vous devrez exécuter le code comme indiqué ci-dessus ou quelque chose de similaire pour parcourir les classeurs ouverts et connaître leur numéro d’index.

Excel traite le classeur ouvert en premier pour avoir le numéro d’index comme 1, et le suivant comme 2 et ainsi de suite.

Malgré cet inconvénient, l’utilisation de numéros d’index peut être utile. Par exemple, si vous souhaitez parcourir tous les classeurs ouverts et tout enregistrer, vous pouvez utiliser les numéros d’index. Dans ce cas, puisque vous voulez que cela arrive à tous les classeurs, vous n’êtes pas préoccupé par leurs numéros d’index individuels.

Le code ci-dessous parcourrait tous les classeurs ouverts et fermerait tous sauf le classeur qui a ce code VBA.

Sub CloseWorkbooks()Dim WbCount As IntegerWbCount = Workbooks.CountFor i = WbCount To 1 Step -1If Workbooks(i).Name <> ThisWorkbook.Name ThenWorkbooks(i).CloseEnd IfNext iEnd Sub

Le code ci-dessus compte le nombre de classeurs ouverts, puis parcourt tous les classeurs en utilisant la boucle For Each.

Il utilise la condition IF pour vérifier si le nom du classeur est le même que celui du classeur où le code est exécuté.

Si ce n’est pas une correspondance, il ferme le classeur et passe au suivant.

Notez que nous avons exécuté la boucle de WbCount à 1 avec un pas de -1. Ceci est fait car à chaque boucle, le nombre de classeurs ouverts diminue.

Ce manuel est traité en détail dans la section suivante.

Utiliser ActiveWorkbook

ActiveWorkbook, comme son nom l’indique, fait référence au classeur actif.

Le code ci-dessous vous indiquerait le nom du classeur actif.

Sub ActiveWorkbookName()MsgBox ActiveWorkbook.NameEnd Sub

Lorsque vous utilisez VBA pour activer un autre classeur, la partie ActiveWorkbook dans le VBA après cela commencerait à faire référence au classeur activé.

Voici un exemple de ceci.

Si vous avez un classeur actif et que vous y insérez le code suivant et l’exécutez, il affichera d’abord le nom du classeur contenant le code, puis le nom des exemples.xlsx (qui est activé par le code).

Sub ActiveWorkbookName()MsgBox ActiveWorkbook.NameWorkbooks("Examples.xlsx").ActivateMsgBox ActiveWorkbook.NameEnd Sub

Notez que lorsque vous créez un nouveau classeur à l’aide de VBA, ce classeur nouvellement créé devient automatiquement le classeur actif.

Utilisation de ThisWorkbook

ThisWorkbook fait référence au classeur dans lequel le code est exécuté.

Chaque classeur aurait un objet ThisWorkbook en tant que partie de celui-ci (visible dans l’Explorateur de projet).

Objet Classeur dans VBA-ThisWorkbook

‘ThisWorkbook’ peut stocker des macros régulières (similaires à celles que nous ajoutons aux modules) ainsi que des procédures d’événements. Une procédure d’événement est quelque chose qui est déclenché en fonction d’un événement, comme un double–clic sur une cellule, l’enregistrement d’un classeur ou l’activation d’une feuille de calcul.

Toute procédure d’événement que vous enregistrez dans ce ‘ThisWorkbook’ serait disponible dans l’ensemble du classeur, par rapport aux événements au niveau de la feuille qui sont limités aux feuilles spécifiques uniquement.

Par exemple, si vous double-cliquez sur l’objet ThisWorkbook dans l’Explorateur de projet et copiez-collez le code ci-dessous, il affichera l’adresse de la cellule chaque fois que vous double-cliquez sur l’une des cellules de l’ensemble du classeur.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)MsgBox Target.AddressEnd Sub

Bien que le rôle principal de ThisWorkbook soit de stocker la procédure d’événement, vous pouvez également l’utiliser pour faire référence au classeur où le code est exécuté.

Le code ci-dessous renverrait le nom du classeur dans lequel le code est exécuté.

Sub ThisWorkbookName()MsgBox ThisWorkbook.NameEnd Sub

L’avantage d’utiliser ThisWorkbook (sur ActiveWorkbook) est qu’il ferait référence au même classeur (celui qui contient le code) dans tous les cas. Donc, si vous utilisez un code VBA pour ajouter un nouveau classeur, le classeur ActiveWorkbook changerait, mais ce classeur ferait toujours référence à celui qui a le code.

Création d’un nouvel objet Classeur

Le code suivant créera un nouveau classeur.

Sub CreateNewWorkbook()Workbooks.AddEnd Sub

Lorsque vous ajoutez un nouveau classeur, il devient le classeur actif.

Le code suivant ajoutera un nouveau classeur, puis vous montrera le nom de ce classeur (qui serait le nom de type Book1 par défaut).

Sub CreateNewWorkbook()Workbooks.AddMsgBox ActiveWorkbook.NameEnd Sub

Ouvrez un classeur à l’aide de VBA

Vous pouvez utiliser VBA pour ouvrir un classeur spécifique lorsque vous connaissez le chemin du fichier du classeur.

Le code ci-dessous ouvrira les exemples de classeur.xlsx qui se trouve dans le dossier Documents de mon système.

Sub OpenWorkbook()Workbooks.Open ("C:\Users\sumit\Documents\Examples.xlsx")End Sub

Dans le cas où le fichier existe dans le dossier par défaut, qui est le dossier où VBA enregistre les nouveaux fichiers par défaut, vous pouvez simplement spécifier le nom du classeur – sans le chemin entier.

Sub OpenWorkbook()Workbooks.Open ("Examples.xlsx")End Sub

Si le classeur que vous essayez d’ouvrir n’existe pas, vous verrez une erreur.

Pour éviter cette erreur, vous pouvez ajouter quelques lignes à votre code pour vérifier d’abord si le fichier existe ou non et s’il existe, essayez de l’ouvrir.

Le code ci-dessous vérifierait l’emplacement du fichier et s’il n’existe pas, il affichera un message personnalisé (pas le message d’erreur):

Sub OpenWorkbook()If Dir("C:\Users\sumit\Documents\Examples.xlsx") <> "" ThenWorkbooks.Open ("C:\Users\sumit\Documents\Examples.xlsx")ElseMsgBox "The file doesn't exist"End IfEnd Sub

Vous pouvez également utiliser la boîte de dialogue Ouvrir pour sélectionner le fichier que vous souhaitez ouvrir.

Sub OpenWorkbook()On Error Resume NextDim FilePath As StringFilePath = Application.GetOpenFilenameWorkbooks.Open (FilePath)End Sub

Le code ci-dessus ouvre la boîte de dialogue Ouvrir. Lorsque vous sélectionnez un fichier que vous souhaitez ouvrir, il attribue le chemin du fichier à la variable Chemin de fichier. Classeur.Ouvrir utilise ensuite le chemin du fichier pour ouvrir le fichier.

Si l’utilisateur n’ouvre pas de fichier et clique sur le bouton Annuler, le chemin de fichier devient False. Pour éviter d’obtenir une erreur dans ce cas, nous avons utilisé l’instruction « On Error Resume Next ».

Connexe: Tout savoir sur la gestion des erreurs dans Excel VBA

Enregistrement d’un classeur

Pour enregistrer le classeur actif, utilisez le code ci-dessous:

Sub SaveWorkbook()ActiveWorkbook.SaveEnd Sub

Ce code fonctionne pour les classeurs qui ont déjà été enregistrés précédemment. De plus, puisque le classeur contient la macro ci-dessus, si elle n’a pas été enregistrée en tant que.xlsm (ou .fichier xls), vous perdrez la macro lorsque vous l’ouvrirez ensuite.

Si vous enregistrez le classeur pour la première fois, il vous montrera une invite comme indiqué ci-dessous:

Objet Classeur dans VBA - Avertissement lors de l'enregistrement du Classeur pour la première fois

Lors de l’enregistrement pour la première fois, il est préférable d’utiliser l’option ‘Saveas’.

Le code ci-dessous enregistrerait le classeur actif en tant que.fichier xlsm à l’emplacement par défaut (qui est le dossier de document de mon système).

Sub SaveWorkbook()ActiveWorkbook.SaveAs Filename:="Test.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabledEnd Sub

Si vous souhaitez que le fichier soit enregistré à un emplacement spécifique, vous devez le mentionner dans la valeur du nom de fichier. Le code ci-dessous enregistre le fichier sur mon bureau.

Sub SaveWorkbook()ActiveWorkbook.SaveAs Filename:="C:\Users\sumit\Desktop\Test.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabledEnd Sub

Si vous souhaitez que l’utilisateur ait la possibilité de sélectionner l’emplacement pour enregistrer le fichier, vous pouvez utiliser appeler la boîte de dialogue Saveas. Le code ci-dessous affiche la boîte de dialogue Saveas et permet à l’utilisateur de sélectionner l’emplacement où le fichier doit être enregistré.

Sub SaveWorkbook()Dim FilePath As StringFilePath = Application.GetSaveAsFilenameActiveWorkbook.SaveAs Filename:=FilePath & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabledEnd Sub

Notez qu’au lieu d’utiliser FileFormat:=xlOpenXMLWorkbookMacroEnabled, vous pouvez également utiliser FileFormat:=52, où 52 est le code xlOpenXMLWorkbookMacroEnabled.

Enregistrement de tous les classeurs ouverts

Si vous avez plus d’un classeur ouvert et que vous souhaitez enregistrer tous les classeurs, vous pouvez utiliser le code ci-dessous:

Sub SaveAllWorkbooks()Dim wb As WorkbookFor Each wb In Workbookswb.SaveNext wbEnd Sub

Ce qui précède enregistre tous les classeurs, y compris ceux qui n’ont jamais été enregistrés. Les classeurs qui n’ont pas été enregistrés précédemment seraient enregistrés à l’emplacement par défaut.

Si vous souhaitez uniquement enregistrer les classeurs précédemment enregistrés, vous pouvez utiliser le code ci-dessous:

Sub SaveAllWorkbooks()Dim wb As WorkbookFor Each wb In WorkbooksIf wb.Path <> "" Thenwb.SaveEnd IfNext wbEnd Sub

Enregistrement et fermeture de tous les classeurs

Si vous souhaitez fermer tous les classeurs, à l’exception du classeur contenant le code actuel, vous pouvez utiliser le code ci–dessous :

Sub CloseandSaveWorkbooks()Dim wb As WorkbookFor Each wb In WorkbooksIf wb.Name <> ThisWorkbook.Name Thenwb.Close SaveChanges:=TrueEnd IfNext wbEnd Sub

Le code ci-dessus fermerait tous les classeurs (sauf le classeur contenant le code – Ce livre de travail). Dans le cas où il y aurait des modifications dans ces classeurs, les modifications seraient enregistrées. Dans le cas où un classeur n’a jamais été enregistré, il affichera la boîte de dialogue Enregistrer sous.

Enregistrez une copie du classeur (avec horodatage)

Lorsque je travaille avec des données complexes et un tableau de bord dans des classeurs Excel, je crée souvent différentes versions de mes classeurs. Cela est utile en cas de problème avec mon classeur actuel. J’en aurais au moins une copie enregistrée avec un nom différent (et je ne perdrais le travail que j’ai fait après avoir créé une copie).

Voici le code VBA qui créera une copie de votre classeur et l’enregistrera à l’emplacement spécifié.

Sub CreateaCopyofWorkbook()ThisWorkbook.SaveCopyAs Filename:="C:\Users\sumit\Desktop\BackupCopy.xlsm"End Sub

Le code ci-dessus enregistre une copie de votre classeur chaque fois que vous exécutez cette macro.

Bien que cela fonctionne très bien, je me sentirais plus à l’aise si j’avais différentes copies enregistrées chaque fois que j’exécute ce code. La raison pour laquelle cela est important est que si je fais une erreur par inadvertance et que j’exécute cette macro, cela sauvera le travail avec les erreurs. Et je n’aurais pas eu accès au travail avant de faire l’erreur.

Pour gérer de telles situations, vous pouvez utiliser le code ci-dessous qui enregistre une nouvelle copie de l’œuvre chaque fois que vous l’enregistrez. Et il ajoute également une date et un horodatage dans le nom du classeur. Cela peut vous aider à suivre toute erreur que vous avez commise, car vous ne perdez jamais aucune des sauvegardes précédemment créées.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)ThisWorkbook.SaveCopyAs Filename:="C:\Users\sumit\Desktop\BackupCopy" & Format(Now(), "dd-mm-yy-hh-mm-ss-AMPM") & ".xlsm"End Sub

Le code ci-dessus créerait une copie chaque fois que vous exécutez cette macro et ajouterait un horodatage au nom du classeur.

Créer un Nouveau classeur pour chaque feuille de calcul

Dans certains cas, vous pouvez avoir un classeur qui contient plusieurs feuilles de calcul et vous souhaitez créer un classeur pour chaque feuille de calcul.

Cela peut être le cas lorsque vous avez des rapports mensuels / trimestriels dans un seul classeur et que vous souhaitez les diviser en un classeur pour chaque feuille de calcul.

Ou, si vous avez des rapports département par département et que vous souhaitez les diviser en classeurs individuels afin de pouvoir envoyer ces classeurs individuels aux chefs de département.

Voici le code qui va créer un classeur pour chaque feuille de calcul, lui donner le même nom que celui de la feuille de calcul et l’enregistrer dans le dossier spécifié.

Sub CreateWorkbookforWorksheets()Dim ws As WorksheetDim wb As WorkbookFor Each ws In ThisWorkbook.WorksheetsSet wb = Workbooks.Addws.Copy Before:=wb.Sheets(1)Application.DisplayAlerts = Falsewb.Sheets(2).DeleteApplication.DisplayAlerts = Truewb.SaveAs "C:\Users\sumit\Desktop\Test\" & ws.Name & ".xlsx"wb.CloseNext wsEnd Sub

Dans le code ci-dessus, nous avons utilisé deux variables ‘ws’ et ‘wb’.

Le code parcourt chaque feuille de calcul (en utilisant la boucle For Each Next) et crée un classeur pour celle-ci. Il utilise également la méthode de copie de l’objet feuille de calcul pour créer une copie de la feuille de calcul dans le nouveau classeur.

Notez que j’ai utilisé l’instruction SET pour affecter la variable ’wb’ à tout nouveau classeur créé par le code.

Vous pouvez utiliser cette technique pour affecter un objet classeur à une variable. Ceci est traité dans la section suivante.

Affecter un objet Classeur à une variable

Dans VBA, vous pouvez affecter un objet à une variable, puis utiliser la variable pour faire référence à cet objet.

Par exemple, dans le code ci-dessous, j’utilise VBA pour ajouter un nouveau classeur, puis affecter ce classeur à la variable wb. Pour ce faire, je dois utiliser l’instruction SET.

Une fois que j’ai attribué le classeur à la variable, toutes les propriétés du classeur sont également mises à la disposition de la variable.

Sub AssigntoVariable()Dim wb As WorkbookSet wb = Workbooks.Addwb.SaveAs Filename:="C:\Users\sumit\Desktop\Examples.xlsx"End Sub

Notez que la première étape du code consiste à déclarer ‘wb’ en tant que variable de type classeur. Cela indique à VBA que cette variable peut contenir l’objet classeur.

L’instruction suivante utilise SET pour affecter la variable au nouveau classeur que nous ajoutons. Une fois cette affectation effectuée, nous pouvons utiliser la variable wb pour enregistrer le classeur (ou faire quoi que ce soit d’autre avec).

En boucle dans les classeurs ouverts

Nous avons déjà vu quelques exemples de codes ci-dessus qui utilisaient la boucle dans le code.

Dans cette section, je vais expliquer différentes façons de parcourir les classeurs ouverts en utilisant VBA.

Supposons que vous souhaitiez enregistrer et fermer tous les classeurs ouverts, à l’exception de celui contenant le code, vous pouvez utiliser le code ci-dessous:

Sub CloseandSaveWorkbooks()Dim wb As WorkbookFor Each wb In WorkbooksIf wb.Name <> ThisWorkbook.Name Thenwb.Close SaveChanges:=TrueEnd IfNext wbEnd Sub

Le code ci-dessus utilise le Pour Chaque boucle pour parcourir chaque classeur de la collection Classeurs. Pour ce faire, nous devons d’abord déclarer ‘wb’ comme variable de type classeur.

Dans chaque cycle de boucle, chaque nom de classeur est analysé et s’il ne correspond pas au nom du classeur contenant le code, il est fermé après avoir enregistré son contenu.

La même chose peut également être obtenue avec une boucle différente comme indiqué ci-dessous:

Sub CloseWorkbooks()Dim WbCount As IntegerWbCount = Workbooks.CountFor i = WbCount To 1 Step -1If Workbooks(i).Name <> ThisWorkbook.Name ThenWorkbooks(i).Close SaveChanges:=TrueEnd IfNext iEnd Sub

Le code ci-dessus utilise la boucle For Next pour fermer tous les classeurs sauf celui qui contient le code. Dans ce cas, nous n’avons pas besoin de déclarer une variable de classeur, mais à la place, nous devons compter le nombre total de classeurs ouverts. Lorsque nous avons le nombre, nous utilisons la boucle For Next pour parcourir chaque classeur. De plus, nous utilisons le numéro d’index pour faire référence aux classeurs dans ce cas.

Notez que dans le code ci-dessus, nous bouclons de WbCount à 1 avec l’étape -1. Ceci est nécessaire car à chaque boucle, le classeur est fermé et le nombre de classeurs est diminué de 1.

Erreur lorsque vous travaillez avec l’objet Classeur (erreur d’exécution ‘9’)

L’une des erreurs les plus courantes que vous pouvez rencontrer lorsque vous travaillez avec des classeurs est – Erreur d’exécution ‘9’ – Indice hors de portée.

Objet Classeur dans VBA - Indice d'erreur d'exécution 9 Hors de portée

Généralement, les erreurs VBA ne sont pas très informatives et vous laissent souvent le soin de comprendre ce qui n’a pas fonctionné.

Voici quelques-unes des raisons possibles qui peuvent conduire à cette erreur :

  • Le classeur auquel vous essayez d’accéder n’existe pas. Par exemple, si j’essaie d’accéder au cinquième classeur à l’aide de Classeurs (5) et qu’il n’y a que 4 classeurs ouverts, j’obtiendrai cette erreur.
  • Si vous utilisez un mauvais nom pour faire référence au classeur. Par exemple, si le nom de votre classeur est Examples.xlsx et vous utilisez l’exemple.xlsx. ensuite, il vous montrera cette erreur.
  • Si vous n’avez pas enregistré de classeur et que vous utilisez l’extension, vous obtenez cette erreur. Par exemple, si le nom de votre classeur est Book1 et que vous utilisez le nom Book1.xlsx sans l’enregistrer, vous obtiendrez cette erreur.
  • Le classeur auquel vous essayez d’accéder est fermé.

Obtenir une liste de Tous les classeurs ouverts

Si vous souhaitez obtenir une liste de tous les classeurs ouverts dans le classeur actuel (le classeur où vous exécutez le code), vous pouvez utiliser le code ci-dessous:

Sub GetWorkbookNames()Dim wbcount As Integerwbcount = Workbooks.CountThisWorkbook.Worksheets.AddActiveSheet.Range("A1").ActivateFor i = 1 To wbcountRange("A1").Offset(i - 1, 0).Value = Workbooks(i).NameNext iEnd Sub

Le code ci-dessus ajoute une nouvelle feuille de calcul, puis répertorie le nom de tous les classeurs ouverts.

Si vous souhaitez également obtenir leur chemin de fichier, vous pouvez utiliser le code ci-dessous:

Sub GetWorkbookNames()Dim wbcount As Integerwbcount = Workbooks.CountThisWorkbook.Worksheets.AddActiveSheet.Range("A1").ActivateFor i = 1 To wbcountRange("A1").Offset(i - 1, 0).Value = Workbooks(i).Path & "\" & Workbooks(i).NameNext iEnd Sub

Ouvrez le classeur spécifié en double-cliquant sur la cellule

Si vous avez une liste de chemins de fichiers pour les classeurs Excel, vous pouvez utiliser le code ci-dessous pour double-cliquer simplement sur la cellule avec le chemin du fichier et cela ouvrira ce classeur.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)Workbooks.Open Target.ValueEnd Sub

Ce code serait placé dans la fenêtre de code de ThisWorkbook.

Pour ce faire :

  • Double-cliquez sur l’objet ThisWorkbook dans l’explorateur de projet. Notez que l’objet ThisWorkbook doit se trouver dans le classeur où vous souhaitez cette fonctionnalité.
  • Copiez et collez le code ci-dessus.

Maintenant, si vous avez le chemin exact des fichiers que vous souhaitez ouvrir, vous pouvez le faire en double-cliquant simplement sur le chemin du fichier et VBA ouvrirait instantanément ce classeur.

Où mettre le code VBA

Vous vous demandez où va le code VBA dans votre classeur Excel?

Excel a un backend VBA appelé éditeur VBA. Vous devez copier et coller le code dans la fenêtre de code du module VB Editor.

Voici les étapes pour ce faire:

  1. Allez dans l’onglet Développeur.Utilisation des classeurs dans l'onglet Développeur Excel VBA dans le ruban
  2. Cliquez sur l’option Visual Basic. Cela ouvrira l’éditeur VB dans le backend.Cliquez sur Visual Basic
  3. Dans le volet Explorateur de projets de l’éditeur VB, faites un clic droit sur n’importe quel objet du classeur dans lequel vous souhaitez insérer le code. Si vous ne voyez pas l’Explorateur de projets, accédez à l’onglet Affichage et cliquez sur Explorateur de projets.
  4. Allez dans Insérer et cliquez sur Module. Cela insérera un objet module pour votre classeur.Utilisation de classeurs dans Excel VBA - module d'insertion
  5. Copiez et collez le code dans la fenêtre du module.Utilisation de classeurs dans Excel VBA - module d'insertion

Vous Aimerez peut-être également les Tutoriels Excel VBA suivants:

  • Comment Enregistrer une Macro dans Excel.
  • Création d’une Fonction définie par l’utilisateur dans Excel.
  • Comment créer et utiliser un complément dans Excel.
  • Comment Resue les macros en les plaçant dans le Classeur de macro personnel.
  • Obtenez la Liste des noms de fichiers d’un Dossier dans Excel (avec et sans VBA).
  • Comment utiliser la fonction Excel VBA InStr (avec des EXEMPLES pratiques).
  • Comment Trier des données dans Excel à l’aide de VBA (Un guide Étape par étape).