Un guide pour travailler avec des classeurs dans VBA
Dans Excel, un classeur est l’un des plus importants de tous les objets Excel, et il est également essentiel de comprendre comment utiliser et se référer aux classeurs lors de l’écriture de codes VBA.
Dans ce tutoriel, nous allons explorer toutes les choses que vous devez savoir. Mais, la première chose que vous devez comprendre, ce sont les objets impliqués dans l’utilisation des classeurs dans VBA.
Objets à connaître :
- Objet Classeurs
- Objet de classeur
Ces deux objets ont le même son, mais il y a une différence fondamentale entre les deux.
Objet Classeurs
Dans VBA, l’objet classeurs représente la collection des classeurs ouverts dans Microsoft Excel. Imaginez que vous avez dix classeurs ouverts en même temps. Et vous voulez vous référer au seul classeur parmi eux. Dans ce cas, vous devez utiliser l’objet classeur pour faire référence à ce classeur en utilisant son nom.
Objet de classeur
Dans VBA, l’objet classeur représente un seul classeur parmi l’ensemble des classeurs ouverts actuellement dans Microsoft Excel. La meilleure façon de comprendre cela est de penser à déclarer une variable en tant que classeur que vous souhaitez utiliser pour faire référence à un classeur particulier dans le code.
Liens utiles : Ajouter un onglet Développeur | Éditeur Visual Basic | Exécuter une macro | Cahier d’exercices de macros personnelles
Reportez-vous à un classeur dans VBA
Pour travailler avec des classeurs dans VBA, la première chose que vous devez savoir est de savoir comment faire référence à un classeur dans une macro. Voici la chose heureuse : il existe plusieurs façons de faire référence à un classeur. Et à l’avenir, nous allons explorer chacun d’eux.
1. Par nom
Le moyen le plus simple de faire référence à un classeur consiste à utiliser son nom. Supposons que vous souhaitiez activer le classeur Book1.xlsx, dans ce cas, le code que vous devez utiliser doit être comme suit :
Faire référence à un classeur avec son nom est assez simple, vous devez spécifier le nom, et c’est tout. Mais voici une chose dont vous devez vous occuper : si un classeur n’est pas enregistré, vous devez utiliser uniquement le nom. Et s’il est enregistré, vous devez utiliser le nom avec l’extension.
2. Par numéro
Lorsque vous ouvrez un classeur, Excel attribue un numéro d’index à ce classeur et vous pouvez utiliser ce numéro pour faire référence à un classeur. Le classeur que vous avez ouvert en premier aura le numéro d’index « 1 » et le second aura « 2 » et ainsi de suite.
Cette méthode peut vous sembler moins réelle car il est difficile de savoir quel classeur se trouve sur quel numéro d’index. Mais il y a une situation où cette méthode est très utile à utiliser, et c’est une boucle dans tous les classeurs ouverts.
3. Par ThisWorkbook
Ce classeur est une propriété qui vous aide à vous référer au classeur dans lequel vous écrivez le code. Supposons que vous écriviez le code dans « Book1 » et que vous utilisiez ThisWorkbook pour enregistrer le classeur. Maintenant, même lorsque vous modifiez le nom du classeur, vous n’aurez pas besoin de modifier le code.
Le code ci-dessus compte le nombre de feuilles dans le classeur où ce code est écrit et affiche une boîte de message avec le résultat.
4. Par ActiveWorkbook
Si vous souhaitez faire référence à un classeur actif, vous devez utiliser la propriété « ActiveWorkbook ». La meilleure utilisation de cette propriété est lorsque vous êtes sûr du classeur qui est activé maintenant. Ou vous avez déjà activé le classeur sur lequel vous souhaitez travailler.
Le code ci-dessus active d’abord le classeur « Book1 », puis utilise la propriété de classeur actif pour enregistrer et fermer le classeur actif.
Accéder à toutes les méthodes et propriétés
Dans VBA, chaque fois que vous faites référence à un objet, VBA vous permet d’accéder aux propriétés et aux méthodes fournies avec cet objet. De la même manière, l’objet classeur est livré avec des propriétés et des méthodes. Pour y accéder, vous devez d’abord définir le classeur, puis saisir un point .
Au moment où vous tapez un point (.), il affiche la liste des propriétés et des méthodes. Maintenant, vous devez vous poser une question sur la façon d’identifier laquelle est une propriété et laquelle est une méthode.
Voici l’astuce. Si vous regardez attentivement, vous pouvez identifier une brique verte en mouvement et une main grise devant chaque nom de la liste. Ainsi, toutes les propriétés ont cette main grise avant le nom et les méthodes ont une brique verte mobile.
Par exemple, pour utiliser une méthode avec un classeur
Imaginez que vous vouliez fermer un classeur (qui est une méthode), vous devez taper ou sélectionner « Fermer » dans la liste.
Après cela, vous devez entrer des parenthèses de départ pour qu’IntelliSense connaisse les arguments que vous devez définir.
Avec la méthode close, vous devez définir trois arguments et, comme vous pouvez le constater, tous ces arguments sont facultatifs et vous pouvez les ignorer si vous le souhaitez. Mais certaines méthodes n’ont pas d’arguments (par exemple : activate)
Par exemple, pour utiliser une propriété avec un classeur
Imaginez que vous vouliez compter les feuilles du classeur « book1 ». Dans ce cas, vous devez utiliser la propriété « Sheets », puis la propriété count supplémentaire de celle-ci.
Dans le code ci-dessus, comme je l’ai dit, vous avez défini book1, puis la propriété sheet fait référence à toutes les feuilles, puis la propriété count pour les compter. Et lorsque vous exécutez ce code, il vous montre une boîte de message avec le résultat.
Utilisation de l’instruction « WITH » avec le classeur
Dans VBA, il existe une instruction « With » qui peut vous aider à travailler avec un classeur tout en écrivant efficacement une macro. Voyons l’exemple ci-dessous où vous avez trois lignes de code différentes avec le même classeur, c’est-à-dire ActiveWorkbook.
Avec l’instruction « WITH », vous pouvez faire référence au classeur actif une seule fois et utiliser toutes les propriétés et méthodes que vous avez dans le code.
- Tout d’abord, vous devez commencer par la déclaration de départ « With ActiveWorkbook » et terminer la déclaration par « End With ».
- Après cela, vous devez écrire le code entre cette instruction que vous avez dans l’exemple ci-dessus.
Comme vous pouvez le voir dans le code ci-dessus, nous avons fait référence à celui d’ActiveWorkbook en utilisant l’instruction WITH, puis toutes les propriétés et méthodes doivent être utilisées.
Sub vba_activeworkbook_with_statement()
With ActiveWorkbook
.Sheets.Add Count:=5
.Charts.Visible = False
.SaveAs ("C:UsersDellDesktopmyFolderbook2.xlsx")
End With
End Sub
Laissez-moi vous donner un exemple simple et concret pour vous faire tout comprendre. Imaginez que vous me demandiez d’aller à la chambre 215 pour obtenir la bouteille d’eau, et quand je reviens, vous m’envoyez à nouveau dans la chambre 215 pour obtenir un stylo, puis me renvoyez à nouveau pour obtenir un ordinateur portable. Maintenant, voici le truc : toutes les choses que vous m’avez dit d’obtenir sont dans la chambre 215. Donc mieux si vous m’envoyiez dans la chambre 215 et me disiez d’obtenir les trois choses en même temps.
Lire : Avec – Finir avec
Déclarer une variable en tant que classeur
Parfois, vous devez déclarer une variable en tant que classeur pour l’utiliser plus loin dans le code. Eh bien, cela ne vous demande rien de spécial.
- Utilisez l’instruction DIM (déclarer).
- Écrivez le nom de la variable.
- Définissez le type de la variable comme Workbook.
Traiter les erreurs
Lorsque vous travaillez avec un ou plusieurs objets de classeur dans VBA, il est possible que vous deviez également gérer des erreurs. Prenons un exemple de l’ erreur « Erreur d’exécution 9 : Indice hors plage » . Cette erreur peut se produire pour diverses raisons.
- Le classeur auquel vous essayez de vous référer n’est pas ouvert.
- Peut-être avez-vous mal orthographié le nom.
- Le classeur auquel vous faites référence n’est pas encore enregistré et vous utilisez l’extension avec le nom.
- Si vous utilisez le numéro d’index pour faire référence à un classeur et que le nombre que vous avez utilisé est supérieur au nombre total de classeurs ouverts.