Manipuler les classeurs en VBA

Le classeur est un des principaux objets d’Excel. Il est assez simple à manipuler, pour peu qu’on utilise l’objet Workbook.

Désigner le classeur à manipuler

Déclarer un classeur


Nous allons manipuler un classeur contenant les ventes. Vous devez créer cette variable pour que le code de cette article fonctionne.

Dim wbVente As Workbook

Ouvrir un classeur


Nous déclarons une variable sFichier de type Texte à laquelle nous affectons un chemin complet (dossier + fichier) vers un fichier Excel. Pour l’exemple, nous souhaitons ouvrir le fichier en lecture seule (argument nommé ReadOnly)

Dim sFichier As String

sFichier = "C:\Mes documents\Ventes.xlsx"
Set wbVente = Workbooks.Open(Filename:=sFichier, ReadOnly:=True)

Si le fichier n’existe pas, une erreur se produit. Pour vérifier que le fichier existe avant d’en demander l’ouverture, ajoutez le code mis en surbrillance :

Dim sFichier As String

If Dir(sFichier) = "" Then
MsgBox "Le fichier '" & sFichier & "' n'existe pas.", vbExclamation
Exit Sub
End If
sFichier = "C:\Mes documents\Ventes.xlsx"
Set wbVente = Workbooks.Open(Filename:=sFichier, ReadOnly:=True)

Créer un classeur


Nous créons un classeur (Fichier > Nouveau) et le plaçons dans la variable wbVente

Set wbVente = Workbooks.Add

Vous pouvez créer un classeur en prenant un autre classeur comme modèle :

Set wbVente = Workbooks.Add(sFichier)

La variable wbVente contient alors un nouveau classeur dont le contenu est copié depuis le fichier sFichier.

Le classeur est déjà ouvert


Un classeur est ouvert dès le démarrage de la macro :

Dim sNomClasseur As String
sNomClasseur="Ventes.xlsx"
Set wbVente = Workbooks(sNomClasseur)

Notez que le classeur doit être désigné par son nom simple (Ventes.xlsx), sans le chemin (C:\Mes documents)
Si le classeur à manipuler est le classeur actif, voici la syntaxe :

Set wbVente = ActiveWorkbook

Si le classeur à manipuler est le premier à avoir été ouvert, utilisez cette syntaxe :

Set wbVente = Workbooks(1)

Principales actions sur un classeur

Enregistrer sous un classeur

wbVente.SaveAs Filename:="Ventes2013.xlsx"

Enregistrer un classeur

wbVente.Save

Notez qu’à la différence du fonctionnement d’Excel, la méthode Save sur un classeur sans nom ni emplacement ne provoque pas l’ouverture de la boîte de dialogue Enrgistrer sous : le classeur est enregistré avec son nom actuel (souvent Classeur1) et à son emplacement actuel (habituellement Mes documents).

Activer un classeur

wbVente.Activate

Notez qu’il n’est pas nécessaire d’activer un classeur pour le manipuler par sa variable.

Fermer un classeur

wbVente.Close SaveChanges:=True

Gonzague DUCOS a écrit 35 articles

Formateur et développeur Office VBA et Windev

Laissez une réponse

Votre adresse e-mail ne sera pas publié Les champs requis sont marqués *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.