Vous êtes sur la page 1sur 9

O UR I A G L I SA FI A

VBA EXCEL
en pratique
FI C HE 5
Ecrire sur plusieurs classeurs
Une feuille de travail a un équivalent objet
Worksheet.

Un classeur Excel a également un équivalent


objet Workbook qu'on peut appeler par son nom
ou un indice :
Workbooks("Ventes janvier")

ou

Workbooks(1)
Ecrire sur plusieurs classeurs

Le deuxième classeur ouvert sera alors


Workbooks(2).

Le troisième classeur ouvert sera Workbooks(3),


etc.

Ce sont les éléments de la Collection Workbooks.

Les collections permettent de travailler


simultanément sur plusieurs feuilles ou sur
plusiers classeurs.
Ecrire sur plusieurs classeurs
Pour écrire "Bonjour le monde !" sur la première
cellule de la première feuille de 3 classeurs
ouverts, on va penser à écrire le code comme suit :
Ecrire sur plusieurs feuilles

Ce copier-coller n’est pas nécessaire car on peut


simplement boucler sur la
collection Workbooks.

Ce bouclage peut se faire avec les boucles


For...Next ou For...Each vus dans la fiche
précédente.
1. Ecrire sur la feuille 1 de tous
les classeurs
En mettant comme paramètre de Workbooks un
indice i, on peut alors
boucler sur les trois
classeurs de travail du classeur :
2. Écrire sur toutes les feuilles de
tous les classeurs

En imbriquant une boucle pour les classeurs


ouverts et une boucle pour les feuilles de
travail, une seule ligne de code suffit.
3. Deuxième possibilité
La deuxième possibilité est d’utiliser une boucle For
Each qui va boucler sur chaque objet Workbook de la
collection Workbook.

On définit une variable w de type objet qui référence


un objet Worksheet et une variable wb qui référence
un objet Workbook.
Remarque
L'utilisation de la méthode Activate pour un objet
Worksheet (fiche 4) peut
ralentir l'exécution du
script lorsque le nombre de feuilles de travail est
important (supérieur à 15 ou 20 feuilles).
Il est alors conseillé, pour un usage intensif,
d'utiliser la syntaxe directe :

Worksheets(i).Range("A1") = "Bonjour ...."

sans la méthode Activate.

Vous aimerez peut-être aussi