VBA EXCEL

Manipulation des en-têtes et pieds de pages
Date de publication : 27/04/2008 , Date de mise à jour : 04/06/2008
Par
Fred (fring) (autres articles)
Compléter les en-têtes et pieds de pages peut devenir une tâche fastidieuse lorsque le classeur comporte un nombre important d'onglets.
Il est possible d'effectuer, via un bout de code en VBA, cette tâche une seule fois et de l'appliquer automatiquement à l'ensemble des onglets.
1. Introduction
2. Les syntaxes
2.1. Généralités
2.1.1. Syntaxes concernant l'en-tête de page
2.1.2. Syntaxes concernant le pied de page
2.2. Appliquer à la feuille active
2.3. Appliquer à toutes les feuilles
3. Les codes d'insertions automatiques
4. Les codes de mise en forme
5. Insertion d'une image
6. Remerciements
7. Téléchargements
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
| Code VBA |
Sub feuille_active()
With ActiveSheet.PageSetup
.LeftHeader = "texte section gauche"
.CenterHeader = "texte section centrale"
.RightHeader = "texte section droite"
.LeftFooter = "texte section gauche"
.CenterFooter = "texte section centrale"
.RightFooter = "texte section droite"
End With
End Sub
|
2.3. Appliquer à toutes les feuilles
| Code VBA |
Sub toutes_feuilles()
Dim x As Byte
For x = 1 To Sheets.Count
With Sheets(x).PageSetup
.LeftHeader = "texte section gauche"
.CenterHeader = "texte section centrale"
.RightHeader = "texte section droite"
.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" |
| Code VBA |
Sub exemple_codes_auto()
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = "fring"
.RightHeader = ""
.LeftFooter = "&D / &T"
.CenterFooter = "&A" & Chr(10) & "&F"
.RightFooter = "&P/&N"
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")
|
| Code VBA |
Sub exemple_codes_mise_en_forme()
With ActiveSheet.PageSetup
.LeftHeader = Sheets(1).Range("A1")
.CenterHeader = "&G&12&""Comic Sans Ms""fring"
.RightHeader = "P.WQ.156&Yind.A"
.LeftFooter = "&I&D / &T"
.CenterFooter = "&G&A" & Chr(10) & "&G&F"
.RightFooter = "&8&P/&N"
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"
|
| Code VBA |
Sub insertionImage_EntetePage()
With ActiveSheet.PageSetup.LeftHeaderPicture
.Filename = "C:\Documents and Settings\Moi\Dossier\Temp\Image.jpg"
.Height = 40
.Width = 80
End With
ActiveSheet.PageSetup.LeftHeader = "&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


Copyright © 2008 fring. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300.000 € de dommages et intérêts.
Cette page est déposée à la
SACD.