[RESOLU] Boucle sur feuilles

  • Initiateur de la discussion Initiateur de la discussion cp4
  • 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 !

cp4

XLDnaute Barbatruc
Bonjour🙂,

Le cas a été peut-être traité mais je n'ai pas trouvé ce qu'il me faut.
Voilà, je voudrais appliquer des pieds de page à seulement certaines feuilles.
Il s'avère que le codename des feuilles concernées va de Feuil4 à Feuil11.
Donc il me faudrait une boucle pour appliquer le pied de page uniquement à ces feuilles.

En vous remerciant par avance.

Bon après-midi.😉
 
Bonjour.
Si ces feuilles se suivent vous pouvez faire une boucle for N = Feuil4.Index To Feuil4.Index + 7: Set MaFeuille = Worksheets(N)
Le CodeName n'est pas une clé permettant d'accéder à la feuille. C'est une propriété String en lecture seule reproduisant le nom de l'objet Workshet qui représente cette feuille dans la rubrique Microsoft Excel Objets.
 
Bonjour Dranreb😉,

Merci beaucoup pour ton aide. Tes explications sont très claires. ci-dessous ce que j'ai testé avec une petite chose de bizzare.
VB:
Sub Essai()
   Dim Feuille As Worksheet, A, i As Byte
   Application.ScreenUpdating = False
   For i = Feuil4.Index To Feuil4.Index + 6
      Set Feuille = Worksheets(i)
      With Feuille.PageSetup
         'en-tête de page
         .LeftHeader = "test"
         .RightHeader = "test"
         'pied de page
         .LeftFooter = "test"
         .RightFooter = "test"
      End With
   Next i
End Sub
Ton raisonnement est logique: 4+7 = 11
cependant, la macro agit aussi sur la feuille 12.
Je n'ai pas compris, j'ai dû mettre +6.
Mais je t'avoue que ça me dérange de ne pas comprendre le pourquoi.
Tu as sûrement la réponse.
Merci beaucoup😉😀

Edit: en y réfléchissant si l'ordre des feuilles venait à être modifier comment alors mettre le 'Name' des feuilles dans une variable et boucler sur cette dernière. Encore Merci.
 
Dernière édition:
Oups! désolé j'ai rajouté un edit alors que tu envoyais ta réponse.
Tu as parfaitement raison car là, tu me fais rappeler que j'avais supprimé des feuilles et en avoir ajouté au fil de l'évolution de mon fichier.
Ce qui revient que ma première idée de boucler sur le codeName est tordue comme moi.
Alors à ton avis quelle serait la meilleure solution pour traiter seulement les feuilles concernées.
Pour m'éviter une boucle sur les 22 feuilles du classeur.
Merci beaucoup.
 
Bonjour CP4, Dranreb🙂 (j'en suis tout retourné) le forum
la boucle est faite sur les index, donc si par bonheur tu as la feuille 12 avant la feuille 11 tu traites la feuille 12 d'abord!!!
enfin je dis cela, mais je ne sais pas si c'est le cas
a+
Papou🙂
 
J'ignore quelles sont les feuilles concernées.
On peut aussi envisager cette structure en Remplaçant CEstUneFeuilleConcernée par l'expression Boolean True si c'est une feuille concernée, genre Feuille.Name Like "Mois *"
VB:
Sub Essai()
   Dim Feuille As Worksheet, A, i As Byte
   Application.ScreenUpdating = False
   Set Feuille = Feuil4
   Do While CEstUneFeuilleConcernée
      With Feuille.PageSetup
         'en-tête de page
         .LeftHeader = "test"
         .RightHeader = "test"
         'pied de page
         .LeftFooter = "test"
         .RightFooter = "test"
      End With
   On Error Resume Next
   Set Feuille = Feuille.Next
   If Err then Set Feuille = Nothing
   If Feuille Is Nothing Then Exit Do
   On Error GoTo 0
   Loop
End Sub
 
Dernière édition:
Bonjour Papou🙂,

Tordu comme je suis, pas moyen de faire autrement. Je veux dire, redresser ce qui est tordu.

Mais je viens de trouver mon bonheur.
VB:
Sub Essai1()
   Dim f As Worksheet, a, i As Byte

   Application.ScreenUpdating = False
   a = Array("MaFeuil1", "Ab", "A", "D", "F", "Bilan", "Consolider","Test")

   For i = LBound(a) To UBound(a)
         With Worksheets(a(i)).PageSetup
            'en-tête de page
            .LeftHeader = "ABCD"
            .RightHeader = "ABCD"
            'pied de page
            .LeftFooter = "ABCD"
            .RightFooter = "ABCD"
         End With
   Next i
End Sub
Ainsi, il n'y a que ces feuilles qui sont traitées. Merci beaucoup.😉
 
Permettez une question:
pourquoi lorsque je remplace With Worksheets(a(i)).PageSetup par With f(a(i)).PageSetup
le code plante avec ce message
upload_2018-4-19_16-27-42.png
Merci.
 
Bonjour a tous 🙂

Si les feuilles vont de 4 à 11 comme tu le dit

VB:
x = 3
For i = 1 to 8
x = x + 1
With Sheets(x).PageSetup
           'en-tête de page
           .LeftHeader = "ABCD"
           .RightHeader = "ABCD"
           'pied de page
            .LeftFooter = "ABCD"
            .RightFooter = "ABCD"
End With
Next i
 
Dernière édition:
Salut Lone-wolf😉,

Très gentil de ta part. Suite à l'intervention de Dranreb, je suis rappelé que j'avais supprimé, ensuite rajouté des feuilles (post#5).
Du coup ce n'était pas une bonne idée de boucler sur le codename.
Avec le bout de code de Caillou, c'est bon ça fonctionne bien.
Merci à vous tous.
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
8
Affichages
998
L
Réponses
4
Affichages
814
J
Réponses
3
Affichages
1 K
Janis
J
M
  • Question Question
Réponses
3
Affichages
1 K
D
Réponses
4
Affichages
1 K
diroz
D
B
Réponses
6
Affichages
2 K
BASSAN L
B
M
Réponses
10
Affichages
1 K
MM3133
M
B
Réponses
7
Affichages
1 K
Retour