Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

antoine

Guest
MERCI valérie

c'est très puissant comme type d'instruction, ... c'est exactement ce que je cherchais et je ne trouvais pas l'équivalent dans VBA.
merci merci donc
 
V

Valérie

Guest
Re ,

pas de mal Bernard on n'est jamais de trop pour expliquer et ravie de voir que tu as trouvé ton bonheur Antoine, y'a plus qu'à mettre en pratique

Bon courage
Valérie
 
A

antoine

Guest
merci bernard aussi ;-) ... non pas que je n'ai pas apprécier ton aide a sa juste valeur la première fois mais plutot que je ne l'avais pas vu ... faute d'actualisation aussi !
 
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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…