Manipuler les feuilles en VBA

Un classeur contient des feuilles. Pour les manipuler, nous allons utiliser l’objet Worksheet.

Types de feuilles

Un classeur peut contenir des feuilles de calculs (Worksheets) et des feuilles de graphiques (Charts). Ces deux objets sont font partie de la collection Sheets. SI vous manipulez des feuilles de calculs, utilisez la collection Worksheets.

Désigner la feuille à manipuler

Déclarer une feuille


Nous allons manipuler des feuilles contenant des ventes par secteur (Nord, sud…)

Créer une feuille

Nous créons une feuille dans le classeur actif et la plaçons dans la variable wsNord :

Dim wsNord As Worksheet
Set wsNord = ActiveWorkbook.Worksheets.Add

Voici comment créer une feuille dans un nouveau classeur :

Dim wbVente As Workbook
Set wbVente = Worksheets.Add
Set wsNord = wbVente.Worksheets.Add

La variable wsNord contient alors la nouvelle feuille.

Désigner une feuille par son numéro

Si la feuille à manipuler est la première en partant de la gauche, utilisez cette syntaxe :

Set wsNord = wbVente.Workbooks(1)

Désigner une feuille par son nom

Si la feuille à manipuler se nomme « Nord », utilisez cette syntaxe :

Set wsNord = wbVente.Workbooks("Nord")

Principales actions sur une feuille

Copier/déplacer une feuille

Dans tous ces exemples, on utiliser la méthode Copy. Il vous suffit de remplacer Copy par Move pour faire les mêmes exemples mais en déplaçant la feuille, et non en la copiant.

De même, After (placer la feuille après…) peut être remplacé par Before (palcer la feuille avant…)

Après la 3e feuille

wsNord.Copy After:=wbVente.Worksheets(3)

Après la dernière feuille

wsNord.Copy After:=wbVente.Worksheets(wbVente.Worksheets.Count)

Oui, il y a bien deux fois wbVente.Worksheets dans la ligne.

Dans un nouveau classeur

wsNord.Copy

Notez que le nouveau classeur devient le classeur actif. Il est fortement conseillé de le placer immédiatement dans une variable Workbook, comme ceci :

'Au début du programme
Dim wbListe As Workbook
'Juste après la ligne wsNord.Copy
Set wbListe = ActiveWorkbook

Renommer une feuille

wsNord.Name="Nord"

Notez que si une autre feuille se nomme déjà « Nord », une erreur se produit, sauf si la feuille active est nommée Nord. Dans ce dernier cas, il ne se passe rien (c’est comme si vous renommiez une feuille avec le même nom)

Supprimer une feuille

Quand on supprime une feuille, Excel affiche un message demandant confirmation. Il faut masquer ce message.

Application.DisplayAlerts=False
wsNord.Delete
Application.DisplayAlerts=True

Gonzague DUCOS a écrit 35 articles

Formateur et développeur Office VBA et Windev