Médiaforma

VBA Excel – Traitement des classeurs

Partagez cet article sur vos réseaux

Le langage VBA permet d’ouvrir, de modifier et de sauvegarder des classeurs. Cet article va vous montrer comment.

Ouvrir un classeur vierge

Il est très simple d’ouvrir un nouveau classeur vierge avec VBA. Pour cela, vous utiliserez la méthode Workbooks.Add. Sans argument, cette méthode ouvre un nouveau classeur nommé Classeur1 (si c’est le premier), classeur2.xlsx (si c’est le deuxième), etc. :

Si nécessaire, vous pouvez donner un nom à ce nouveau classeur et le sauvegarder dans un dossier quelconque :

Set nouveau = Workbooks.Add

nouveau.SaveAs Filename:="c:\data\classeurs\nouveau.xlsx"

Remarquez l’utilisation du mot clé Set (et non Dim) pour définir la variable objet nouveau dans laquelle est stocké le nouveau classeur.

La propriété SaveAs définit le dossier et le nom du classeur et le sauvegarde.

Ouvrir un classeur

Dans un précédent article, vous avez vu qu’il était possible de s’adresser à un classeur nommé classeur1.xlsm avec l’instruction :

Workbooks("classeur1.xlsm")

Ou encore à la cellule C8 de la feuille Feuil1 du classeur Classeur1.xlsm avec cette instruction :

Workbooks("classeur1.xlsm").Worksheets("Feuil1").Range("C8")

Vous allez maintenant apprendre à ouvrir un classeur avec l’instruction Workbooks.Open dont voici la syntaxe :

Workbooks.Open "classeur"

classeur représente le chemin complet du classeur que vous voulez ouvrir.

Après l’exécution de cette instruction, le classeur ouvert devient le classeur actif.

Ouverture d’un classeur avec un chemin explicite

Par exemple, pour ouvrir le classeur société.xlsm qui se trouve dans le dossier data\classeurs du disque c:, vous utiliserez cette instruction :

Workbooks.Open "c:\data\classeurs\société.xlsm"

Ouverture d’un classeur avec un chemin relatif

Dans l’instruction précédente, le chemin du classeur est indiqué de façon explicite. Si le classeur à ouvrir se trouve dans le même dossier que le classeur où le code VBA est exécuté, vous pouvez y faire référence de façon relative, c’est-à-dire sans préciser explicitement le chemin du dossier. Pour cela, vous utiliserez la propriété Path de l’objet ActiveWorkbook :

Dim chemin As String

chemin = ActiveWorkbook.Path

Workbooks.Open chemin & "\société.xlsm"

Fermer un classeur

Pour fermer un classeur, vous utiliserez l’instruction Workbooks().Close dont voici la syntaxe :

Workbooks("classeur").Close

classeur représente le nom du classeur que vous voulez fermer.

Par exemple, pour fermer le classeur société.xlsm, vous utiliserez cette instruction :

Workbooks("société.xlsm").Close

Si le classeur à fermer a été modifié depuis son ouverture, une boîte de dialogue vous demandera si vous voulez sauvegarder les modifications :

Pour éviter d’avoir à cliquer sur Enregistrer ou sur Ne pas enregistrer, vous pouvez choisir si le classeur doit ou ne doit pas être enregistré en ajoutant un paramètre à la commande de fermeture.

Pour sauvegarder par défaut le classeur avant de le fermer, ajoutez SaveChanges:=True à la suite de la commande de fermeture. Par exemple, pour sauvegarder puis fermer le classeur société.xlsm, vous utiliserez cette commande :

Workbooks("société.xlsm").Close SaveChanges:=True

Inversement, pour fermer un classeur sans sauvegarder les modifications, vous ajouterez SaveChanges:=False à la suite de la commande de fermeture. Par exemple, pour fermer le classeur société.xlsm sans sauvegarder les modifications, vous utiliserez cette commande :

Workbooks("société.xlsm").Close SaveChanges:=False

Pour terminer cette section sur la fermeture de classeurs, signalons qu’un message d’erreur s’affichera si vous tentez de fermer un classeur qui n’est pas ouvert :

Remarque

Vous voulez supprimer cette erreur ? Ajoutez cette instruction dans la procédure qui ferme le classeur :

On Error Resume Next

Pour aller plus loin sur la gestion des erreurs, consultez l’article intitulé  » Gestion d’erreurs en VBA ».

Sauvegarder un classeur

En complément des commandes d’ouverture et de fermeture, sachez que vous pouvez également sauvegarder un classeur avec utiliserez l’instruction Workbooks().Save dont voici la syntaxe :

Workbooks("classeur").Save

classeur représente le nom du classeur que vous voulez sauvegarder.

Notez qu’il est également possible de sauvegarder le classeur actif (celui qui a le focus) avec cette instruction :

ActiveWorkbook.Save

Si le classeur doit être sauvegardé dans un autre fichier, vous utiliserez l’instruction Workbooks().SaveAs :

Workbooks("classeur").SaveAs

classeur représente le nom du classeur que vous voulez sauvegarder.

 
Commentaires

il y as aussi ActiveWorkbook.SaveCopyAs qui permet de faire une copie de sauvegarde dans un autre dossier et de renommer le fichier tout en reste sur le même fichier ce que ne fait pas SaveAS

Bonjour, et comment fermer un workbook avec un chemin explicite?

Laissez un commentaire