Boucle for each sur 3 feuilles

  • Initiateur de la discussion Initiateur de la discussion cathodique
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.😉
 
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

Dernière édition:
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 ?
 
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+
 
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.
 
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 😉
 
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.😀
 
Dernière édition:
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.
 
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.🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
369
Réponses
20
Affichages
774
Réponses
12
Affichages
819
Réponses
6
Affichages
952
Réponses
10
Affichages
783
Réponses
3
Affichages
485
Retour