Boucle for each sur 3 feuilles

cathodique

XLDnaute Barbatruc
Bonsoir:),

Je voudrais utiliser une boucle for each uniquement pour 3 feuilles de mon classeur.
Ces feuilles se nomment "A", "B" et "C".
Merci de me dire comment m'y prendre.
j'y suis parvenu à faire une boucle en utilisant un Array.
Mais, je voudrais apprendre comment mettre le nom des feuilles dans une collection.

Mes recherches sur le forum n'ont pas été fructueuses.

Merci par avance.

Bonne soirée.;)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir cathodique ;),
Mais, je voudrais apprendre comment mettre le nom des feuilles dans une collection.

Pour ce que j'ai compris de la demande, autant mettre directement les feuilles dans la collection :
VB:
Sub boucle()
Dim coll As New Collection, xItem
   coll.Add Worksheets("A")
   coll.Add Worksheets("B")
   coll.Add Worksheets("C")
   For Each xItem In coll
      MsgBox "Feuille " & xItem.Name & " --> " & xItem.UsedRange.Address(0, 0)
   Next xItem
End Sub

edit : Bonsoir @job75 :)
 

Pièces jointes

  • cathodique- boucle sur collection- v1.xlsm
    19.5 KB · Affichages: 37
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum, mapomme, job75

Comme on ne sait pas pourquoi il faut boucler sur ces trois et ce qu'il faut ensuite faire...
J'improvise ;)
VB:
Sub a()
Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select False
End Sub
Sub b()
MsgBox Sheets(Array("Feuil1", "Feuil2", "Feuil3"))(2).Name
End Sub

PS: mapomme, as-tu que j'avais testé ta syntaxe sur Excel 2003 dans le fil d'un internaute ?
 

job75

XLDnaute Barbatruc
Re, salut mapomme, JM,

Bon, si l'on veut mémoriser la collection pour d'autres usages :
Code:
Sub Test()
Dim coll As Object, f As Object
Set coll = Sheets(Array("A", "B", "C"))
For Each f In coll
    MsgBox f.Name 'pour tester
Next
MsgBox TypeName(coll)
End Sub
A+
 

job75

XLDnaute Barbatruc
Bonjour cathodique, mapomme, JM, le forum,

Avec ceci la collection comporte un seul élément :
Code:
Sub Test1()
Dim coll As New Collection, f As Object
coll.Add Sheets(Array("A", "B", "C"))
For Each f In coll(1)
    MsgBox f.Name 'pour tester
Next
MsgBox "Type : " & TypeName(coll) & vbLf & vbLf & "Count : " & coll.Count
End Sub
C'est plus simple si l'on veut traiter plusieurs classeurs :
Code:
Sub Test2()
Dim coll As New Collection, e As Object, f As Object
coll.Add Workbooks("Classeur1.xlsm").Sheets(Array("A1", "B1", "C1"))
coll.Add Workbooks("Classeur2.xlsm").Sheets(Array("A2", "B2", "C2"))
For Each e In coll
    For Each f In e
        MsgBox f.Name 'pour tester
Next f, e
MsgBox "Type : " & TypeName(coll) & vbLf & vbLf & "Count : " & coll.Count
End Sub
Bonne journée.
 

Staple1600

XLDnaute Barbatruc
Bonjour job75

Oui, j'avais bien lu.
Mais à part, l'apprentissage, si on boucle sur trois feuillles, c'est qu'en théorie ensuite une action sera effectuée sur les trois feuilles ou une de ces feuilles.
Car selon la réponse qu'apportera (ou pas) cathodique à la question que je lui ai posé, peut-être que je lui aurai parlé de FillAcrossSheets ;)
 

cathodique

XLDnaute Barbatruc
Bonjour le fil, le forum, cathodique, mapomme, job75

@cathodique
Juste par curiosité toute personnelle, quelle était de le but de la manœuvre?
Tu voulais boucler sur 3 feuilles dont les noms sont connus.
OK
Mais pourquoi faire ensuite sur ces feuilles ?
Re,
C'est pour exécuter 3 macros successivement pour:
  • extraire des données d'autres feuilles du même classeur
  • Effectuer des calculs
  • Mise en forme
  • et Impression de ces 3 feuilles.
Voilà le but. Je n'ai pas joint de fichier pour 2 raisons: comporte des données confidentielles et son poids est très conséquent.

Je vous remercie tous grâce à vous j'ai beaucoup avancé sur mon fichier ce matin.

Encore merci. Bon dimanche.:D
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@cathodique
merci pour ton retour

PS: Pour infos, un fichier "léger" créé spécifiquement pour illustrer la problématique, reprenant la structure et les formats du fichier original, avec des données s"bidon" sur quelques lignes (une trentaine) suffit amplement comme base de travail.
 

cathodique

XLDnaute Barbatruc
Bonsoir JM,;)

Merci de vouloir m'aider. D'habitude je monte un fichier illustrant mon problème.
Sur ce coup, grâce à votre coup de main j'ai pu terminer cette partie tout seul et je m'en réjouis.
Je reviendrai peut-être si je rencontre un problème (j'y joindrai un fichier).

Merci beaucoup, c'est très gentil de ta part.

Bonne soirée.:)
 

Discussions similaires

Réponses
6
Affichages
740

Statistiques des forums

Discussions
312 145
Messages
2 085 762
Membres
102 966
dernier inscrit
InitialPP