Structure "For each X in Y"

  • Initiateur de la discussion antoine
  • Date de début
A

antoine

Guest
j'aimerais mieux comprendre ce type d'instruction. l'aide de vb ne m'a pas été très utile
par exemple avec le code donnée en solution par Pascal dans un autre sujet

Dim Wa As Worksheet
For Each Wa In Sheets
....
next

sheets représente une classe,non ?
 
V

Valérie

Guest
BONJOUR Antoine,

La notion de For each s'adresse à une boucle sur chaque Objet d'une collection.

Pour ton exemple l'objet est une feuille de calcul et la collection est la collection de Feuilles de ton classeur (rm: si tu as un autre type de feuille ton code plante il faut alors faire appel à la collection des Feuilles de calcul).

Dim Wa As Worksheet
For Each Wa In WorkSheets
....
next

Tu peux aussi l'utiliser avec d'autres objet tels que les cellules (objet Range)
ex:

Dim CELLULE As Range
For Each CELLULE in Cells 'chaque cellule de la feuille

For Each CELLULE in Selection 'chaque cellule de la selection

For Each CELLULE in Range("A1:B12") 'chaque cellule de la plage A1:B12

Le principe étant toujours le même CHAQUE OBJET de la COLLECTION définie après le in

@+
Valérie
 
B

Bernard

Guest
Bonjour Antoine

Je te joints un fichier qui exploite les possibilités de boucles imbriquées pour effectuer un tableau. Voir explications dedans !

Dim Wa As Worksheet
For Each Wa In Sheets
Wa.select
next

Sheets représente la collection des feuilles du classeur.

Dim Wa as Worksheet : Dim déclare la variable Wa comme étant une feuille.

Visual basic garde cette donnée et l'exploite lorsque dans la boucle il lui est demandé de passer en revue les feuilles (Wa) incluses (In) dans la collection des feuilles (sheets) du classeur actif.

La commande Wa.select te montre que visual basic sélectionne au fur et à mesure du passage en revue les feuilles présentes dans le classeur.

J'espère avoir été clair !

Cordialement

Bernard
 

Pièces jointes

  • ExAntoine.zip
    12.8 KB · Affichages: 27
A

Alex

Guest
bonjour
Une petite question en complément :
For Each feuille In WorkSheets : reprend tous les feuilles du classeur c'est bien ca?

Et t'il possible de faire la meme chose mais en tenant compte que de certaine feuille du classeur??

Merci
 
J

Jon

Guest
oui. il y a plusieurs manières.
tu trouveras des exemples dans les anciens messages.

-une solution utilise une variable tableau (Array)
- l'autre consiste à rajouter dans la boucle un contrôle sur le nom ou autre de l'objet "feuille"
 
V

Valérie

Guest
Bonjour à tous,

Pour ne prendre en compte que les feuilles qui t'interressent tu peux soit faire un test dans ta boucle:

For each FEUILLE in WorkSheets
If FEUILLE.Name <>"...." And FEUILLE.Name <>"..." then ......

Sinon tu réduis ta collection

For Each FEUILLE In Worksheets(Array(1, 3))
ne tiendra compte que de la première et troisième feuille

Ce ne sont là que des exemples qui je l'espère te guideront dans tes recherches
@ bientôt

Valérie
 

Discussions similaires

Statistiques des forums

Discussions
312 279
Messages
2 086 722
Membres
103 378
dernier inscrit
phdrouart