1. Introduction▲
Lorsque l'on complète l'en-tête et le pied de page d'une feuille, seules les pages de cette feuille auront l'en-tête et le pied de page contenant des informations.
Si l'on souhaite que les autres feuilles possèdent également les infos dans leurs en-têtes et pieds de page, il faut répéter cette opération pour chacune d'elles, ce qui peut se révéler fastidieux si le classeur comporte un nombre important de feuilles (onglets).
Nous allons voir dans cet article qu'il est possible d'automatiser cette tâche pour l'ensemble des feuilles.
2. Les syntaxes▲
2-1. Généralités▲
L'en-tête et le pied de page sont composés chacun de 3 sections ; gauche, centrale et droite.
Le texte introduit dans les différentes sections, sera automatiquement aligné (gauche, centré, droite) selon la section.
Dans chaque section, il est possible d'insérer un texte sur plusieurs lignes. Le saut de ligne s'obtient par le code Chr(10), entouré du signe de concaténation &
2-1-1. Syntaxes concernant l'en-tête de page▲
- Section gauche = PageSetup.LeftHeader
- Section centrale = PageSetup.CenterHeader
- Section droite = PageSetup.RightHeader
2-1-2. Syntaxes concernant le pied de page▲
- Section gauche = PageSetup.LeftFooter
- Section centrale = PageSetup.CenterFooter
- Section droite = PageSetup.RightFooter
2-2. Appliquer à la feuille active▲
Sub
feuille_active
(
)
With
ActiveSheet.PageSetup
'en-tête de page
.LeftHeader
=
"texte section gauche"
.CenterHeader
=
"texte section centrale"
.RightHeader
=
"texte section droite"
'pied de page
.LeftFooter
=
"texte section gauche"
.CenterFooter
=
"texte section centrale"
.RightFooter
=
"texte section droite"
End
With
End
Sub
2-3. Appliquer à toutes les feuilles▲
Sub
toutes_feuilles
(
)
Dim
x As
Byte
For
x =
1
To
Sheets.Count
With
Sheets
(
x).PageSetup
'en-tête de page
.LeftHeader
=
"texte section gauche"
.CenterHeader
=
"texte section centrale"
.RightHeader
=
"texte section droite"
'pied de page
.LeftFooter
=
"texte section gauche"
.CenterFooter
=
"texte section centrale"
.RightFooter
=
"texte section droite"
End
With
Next
x
End
Sub
3. Les codes d'insertions automatiques▲
Une série de codes vont permettre d'insérer automatiquement la date, l'heure, le nom du fichier, etc.
Désignations | Codes |
---|---|
Date | "&D" |
Heure | "&T" |
Nom du fichier | "&F" |
Nom de la feuille | "&A" |
Numéro de page | "&P" |
Nombre total de pages | "&N" |
- Exemple d'utilisation :
Sub
exemple_codes_auto
(
)
With
ActiveSheet.PageSetup
'en-tête de page
.LeftHeader
=
""
.CenterHeader
=
"fring"
.RightHeader
=
""
'pied de page
.LeftFooter
=
"&D / &T"
'<-- date / heure
.CenterFooter
=
"&A"
&
Chr
(
10
) &
"&F"
'<-- nom feuille + saut de ligne + nom fichier
.RightFooter
=
"&P/&N"
'<-- numéro de page / nombre de pages
End
With
End
Sub
4. Les codes de mise en forme▲
Une série de codes permettent d'appliquer une mise en forme au texte (police de caractères, taille, italique, gras, etc.).
Désignations | Codes |
---|---|
Police de caractères (exemple : Comic Sans Ms) |
"&""Comic Sans Ms""Texte" |
Taille (exemple : taille 12) |
"&12Texte" |
Style Gras | ">exte" |
Style Italique | "&ITexte" |
Soulignement simple | "&UTexte" |
Soulignement double | "&ETexte" |
Texte barré | "&STexte" |
Style Exposant | "&XTexte" |
Style Indice | "&YTexte" |
Il est bien sûr possible d'enchaîner plusieurs codes afin par exemple de mettre le texte en gras/italique/taille 12 ("&G&I&12Texte")
- Exemple d'utilisation :
Sub
exemple_codes_mise_en_forme
(
)
With
ActiveSheet.PageSetup
'en-tête de page
.LeftHeader
=
Sheets
(
1
).Range
(
"A1"
) '<-- contenu de la cellule A1 (sans précision = style par défaut)
.CenterHeader
=
"&G&12&""Comic Sans Ms""fring"
'<-- texte (style gras + taille 12 + style police)
.RightHeader
=
"P.WQ.156&Yind.A"
'<-- texte + indice'pied de page
.LeftFooter
=
"&I&D / &T"
'<-- date / heure (style italique)
.CenterFooter
=
"&G&A"
&
Chr
(
10
) &
"&G&F"
'<-- nom feuille (activation style gras) + saut de ligne + nom fichier (désactivation style gras)
.RightFooter
=
"&8&P/&N"
'<-- numéro de page / nombre de pages (taille 8)
End
With
End
Sub
5. Insertion d'une image▲
Depuis la version Excel 2002, il est possible d'insérer une image (un logo d'entreprise par exemple) dans une des sections de l'en-tête ou du pied de page.
La syntaxe (pour la section gauche de l'en-tête) est la suivante : PageSetup.LeftHeaderPicture
Les propriétés associées à cette syntaxe sont :
- Filename = Chemin complet et Nom de l'image
- Height = Hauteur de l'image
- Width = Largeur de l'image
Les propriétés Height et Width sont facultatives, sans les préciser l'image aura sa taille initiale.
Remarque : afin que l'image s'affiche, il est nécessaire d'ajouter le code "&G" dans la section concernée (info issue de l'aide en ligne d'Excel).
ActiveSheet.PageSetup.LeftHeader = "&G"
- Exemple d'utilisation :
Sub
insertionImage_EntetePage
(
)
With
ActiveSheet.PageSetup.LeftHeaderPicture
.Filename
=
"C:\Documents and Settings\Moi\Dossier\Temp\Image.jpg"
.Height
=
40
'<-- redéfinit la largeur de l'image
.Width
=
80
'<-- redéfinit la hauteur de l'image
End
With
ActiveSheet.PageSetup.LeftHeader
=
"&G"
'<-- ajout du code &G
End
Sub
L'exemple ci-dessus affichera une image dans la section gauche de l'en-tête de page.
Pour insérer l'image dans une autre section, il suffit de remplacer LeftHeader (voir le point 2.1 ci-dessus).
L'insertion d'une image a été testée avec les types de fichiers suivants : jpg, jpeg, gif et bmp
6. Remerciements▲
Merci à :
Antoun pour la relecture de cet article
Silkyroad pour l'info complémentaire concernant l'insertion d'une image
mon ami Lomi pour m'avoir assisté dans les essais, Jean-Pierre49 pour avoir testé les différents types de fichier image.
7. Téléchargements▲
Le fichier "démo" disponible ci-dessous est constitué d'un UserForm permettant une manipulation rapide des en-têtes et pieds de pages.
Fichier Demo