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






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
 

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
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal