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

verification de code

zaid

XLDnaute Nouveau
Est ce que quelqu'un peut verifier ce code, son execution prend beaucoup de temps. Ce code est pour mettre à jour les entetes de certaines feuilles (12 au total) de janvier à decembre . voici le code:

Sub EntetePiedPage()
Dim Ws As Worksheet 'Déclare la variable Ws
For Each Ws In Worksheets ' Pour chaque feuille dans le Fichier
Application.ScreenUpdating = False 'Désactivation de la mise à jour de l'écran
If Ws.Name <> "Feuil5" Then ' Si le nom de la Feuille n'est pas "Feuil5"
With Ws.PageSetup
.LeftHeader = Sheets("Paramètres").Range("E1").Value & Chr(13) & Sheets("Paramètres").Range("E2").Value & Chr(13) & Sheets("Paramètres").Range("E3").Value 'Haut Gauche = Valeur feuil1 A1
'.CenterHeader = "&D" & Chr(13) & "&P" & "&page" ' Haut Centre= Valeur feuil1 A2
.RightHeader = Sheets("Paramètres").Range("E6").Value & Chr(13) & Sheets("Paramètres").Range("E7").Value & Chr(13) & Sheets("Paramètres").Range("E8").Value '"&D" ' Centre Haut Droit = Page
'.RightFooter = "&P" 'Pied Droit = Date du Jour
End With
End If
Application.ScreenUpdating = True 'Réactivation de la mise à jour de l'écran
Next Ws
End Sub
 

Efgé

XLDnaute Barbatruc
Re : verification de code

Bonjour zaid
Une proposition: en groupant les feuilles, on peux toutes les mettre à jour en même temps.
Le code avec mes commentaires:
VB:
Sub EntetePiedPage_2()
Dim Ws As Worksheet
Dim T As Variant
'Si tu ne mets pas la désactivation avant la boucle,
'Tu vas activer/désactiver à chaque passage
Application.ScreenUpdating = False
For Each Ws In Worksheets
    'On crée un tableau pour regrouper les feuilles
    If Ws.Name < > "Feuil5" Then
        If Not IsArray(T) Then
            T = Array(Ws.Name)
        Else
            ReDim Preserve T(UBound(T) + 1)
            T(UBound(T)) = Ws.Name
        End If
    End If
Next Ws
'On selectionne toutes les feuilles (groupement)
Sheets(T).Select
'C'est sur le groupe que l'on modifie les PageSetup
With ActiveSheet.PageSetup
    .LeftHeader = Sheets("Paramètres").Range("E1").Value & Chr(13) & Sheets("Paramètres").Range("E2").Value & Chr(13) & Sheets("Paramètres").Range("E3").Value
    .RightHeader = Sheets("Paramètres").Range("E6").Value & Chr(13) & Sheets("Paramètres").Range("E7").Value & Chr(13) & Sheets("Paramètres").Range("E8").Value
End With
'On selectionne la feuille active pour dégrouper les feuilles
ActiveSheet.Select
Application.ScreenUpdating = True
End Sub
Cordialement
 
Dernière édition:

zaid

XLDnaute Nouveau
Re : verification de code

Bonjour,

Merci beaucoup pour la proposition.
Il y a juste un petit probleme au niveau de : Sheets(T).Select
ça fait une erreur.

en fait c'est un classeur de 22 feuilles dont 12 portent les noms des mois ( feuil7-8-9-10-11-12-13-14-15-16-17-18)
c'est ces sur ces 12 feuilles que je voudrais mettre à jour l'entete de page en cas de besoin.

mille mercis
zaid






 

Efgé

XLDnaute Barbatruc
Re : verification de code

Re
En fait c'était un mauvaise idée. J'ai l'impression qu'on ne paux pas modifier les pageSetup "en lot".
Désolé, je ne vois que ta version pour y arriver.
Mais déplace quand même les ScreenUpdating en dehors de ta boucle ; )
Cordialement
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…