Macro pour modifier un en-tête

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

SPEA

XLDnaute Occasionnel
Bonjour,

est il possible de programmer une macro pour modifier l'en-tête d'une feuille de calcul ?

je créé une feuille de calcul qui me sert de support pour mes releves chaque semaine, dans l'en_tête
je met le numéro de la semaine. Il m'arrive d'oublier de changer le numéro de semaine donc je voudrais que le numero de semaine dans l'en-tête se mette à jour automatiquement en fonction de la date contenue dans une cellule.

merci.
 
Re : Macro pour modifier un en-tête

Bonjour à tous,

avec ceci,
Code:
Sub entete()
With ActiveSheet.PageSetup
        .CenterHeader = "Semaine " & DatePart("ww", Date, 2, 2)
End With
ActiveSheet.PrintPreview ' (pour visualiser)
End Sub
en reprenant la formule de Pierrot
DatePart("ww", Date, 2, 2)


à+
Philippe

 
Re : Macro pour modifier un en-tête

Bonjour et merci pour vos réponses,

la macro de Pierrot renvoie le numero de semaine, je voudrais le renvoyer dans l'en-tête des feuilles,
d'apres ce que j'ai compris du code de phlaurent55, le numéro de semaine est renvoyé au centre de l'en_tete
je souhaiterais le renvoyer dans la partie droite de l'en-tete (voir fichier joint, le numero de semaine est calculé
à partir de la date en A2).

Comment faire également pour que l'en-tete se modifie des que je change la valeur en A2 ?

Merci pour votre aide (n'hesitez pas à glisser des commentaires car le but est de comprendre le fonctionnement...)
 

Pièces jointes

Re : Macro pour modifier un en-tête

Bonjour
il suffit d'adapter la macro de phlaurent55 et de Pierrot93

Code:
Sub entete()
 With ActiveSheet.PageSetup
         .RightHeader = "Semaine " & DatePart("ww", Range("a2"), 2, 2)
 End With
 ActiveSheet.PrintPreview ' (pour visualiser)
 End Sub
a+
jp
 
Re : Macro pour modifier un en-tête

Bonjour,

essaye comme ceci, à placer dans le module de la feuille concernée, click droit sur l'onglet => visualiser le code et tu le colles :
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$2" Then Exit Sub
If Not IsDate(Range("A2")) Then Exit Sub
Me.PageSetup.RightFooter = "Semaine " & DatePart("ww", Range("A2"), 2, 2)
End Sub
bonne journée
@+
 
Re : Macro pour modifier un en-tête

Bonsoir,

si c'est de mon code que tu parles.. tu peux le modifier ainsi, en le plaçant dans le module "thisworkbook", s'appliquera à toutes les feuilles du classeur...

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 If Target.Address <> "$A$2" Then Exit Sub
 If Not IsDate(Sh.Range("A2")) Then Exit Sub
 Sh.PageSetup.RightFooter = "Semaine " & DatePart("ww", Sh.Range("A2"), 2, 2)
End Sub

bonne soirée
@+
 
Re : Macro pour modifier un en-tête

le code est le suivant,

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, [A2]) Is Nothing Then
    With ActiveSheet.PageSetup
        .RightHeader = "Semaine " & DatePart("ww", [A2], 2, 2)
    End With
End If
End Sub

La cellule reference pour la date n'est pas en A2 sur les 4 feuilles, c'est pourquoi je voudrais que le code ci-dessus s'applique aux 4 feuilles du classeur.
 
Re : Macro pour modifier un en-tête

Bonjour,
essaye peut être ceci, toujours dans le module "thisworkbook", sans plus de détails...
Code:
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim t() As Variant
t = Array("A2", "A3", "A4", "A5")
With Sh
    If Target.Address(0, 0) <> t(.Index - 1) Then Exit Sub
    If Not IsDate(.Range(t(.Index - 1))) Then Exit Sub
    .PageSetup.RightFooter = "Semaine " & DatePart("ww", .Range(t(.Index - 1)), 2, 2)
End With
End Sub

les références de cellule dans le tableau doivent suivre l'index des feuilles concernées...

bonne journée
@+
 
Re : Macro pour modifier un en-tête

Re,

une autre version en utilisant le "codename" des feuilles, en principe moins susceptible d'être modifié :

Code:
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim a As Variant
With Sh
    a = Switch(.CodeName = "Feuil1", "A2", .CodeName = "Feuil2", "A3", _
        .CodeName = "Feuil3", "A4", .CodeName = "Feuil4", "A5")
    If IsNull(a) Or Target.Address(0, 0) <> a Or Not IsDate(Target.Value) Then Exit Sub
    .PageSetup.RightFooter = "Semaine " & DatePart("ww", Target.Value, 2, 2)
End With
End Sub

Edition : allégé un peu le code..
2ème édition : encore un petit +....
 
Dernière édition:
- 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

  • Question Question
Réponses
4
Affichages
177
  • Question Question
XL 2021 Macro
Réponses
6
Affichages
320
Réponses
78
Affichages
2 K
Réponses
11
Affichages
279
Retour