Leonid a demandé s’il y avait un moyen de définir une couleur d’arrière-plan pour l’en-tête ou le pied de page d’une page. La réponse simple est qu’il n’y a pas une telle fonctionnalité dans Excel. Il existe cependant plusieurs façons de contourner le problème. Par exemple, si vous utilisez Excel 2002 ou Excel 2003, vous pouvez ajouter un graphique à un en-tête ou un pied de page. Avec le bon graphique, vous pouvez faire apparaître que l’en-tête et le pied de page contiennent de la couleur alors qu’en fait, c’est le graphique qui contient la couleur.

Une autre option consiste à créer de « faux » en-têtes et pieds de page. Si tout ce que vous voulez faire est d’avoir un en-tête de couleur différente, vous pouvez utiliser les deux premières lignes de la feuille de calcul comme en-tête. Vous pouvez formater ces lignes comme vous le souhaitez, y compris en définissant la couleur des lignes. Vous pouvez ensuite demander à Excel de répéter ces lignes en haut de chaque page de l’impression (utilisez la boîte de dialogue Mise en page pour cela).

La répétition des lignes pour la zone de pied de page devient plus problématique, car Excel n’inclut pas de fonctionnalité qui vous permet de répéter les lignes au bas de chaque page. La création d’une macro pour ajouter des lignes pour l’en-tête et le pied de page est possible, mais cela entraîne une modification de votre feuille de calcul. Des lignes doivent être ajoutées pour les faux en-têtes et pieds de page.

À titre d’exemple, considérons la macro suivante. Il suppose que vous voulez des bordures d’un pouce à gauche et à droite de l’impression et que vous souhaitez imprimer seulement 46 lignes par page. Il définit les marges, puis parcourt la feuille de calcul, en ajoutant les fausses lignes d’en-tête et de pied de page, si nécessaire. (Étant donné que la macro ajuste la conception de la feuille de calcul, assurez-vous d’enregistrer votre feuille de calcul avant d’exécuter la macro.)

Sub FakeHeaderFooter()

Dim LHeader As String     Dim CHeader As String     Dim LFooter As String     Dim CFooter As String     Dim CBottom As Integer     Dim CRow As Integer     Dim PageSize As Integer          LHeader = "Top Left"

CHeader = "Top Center"

LFooter = "Bottom Left"

CFooter = "Bottom Center"

PageSize = 46

With ActiveSheet.PageSetup         .PrintTitleRows = ""

.PrintTitleColumns = ""

.PrintArea = ""

.LeftHeader = ""

.CenterHeader = ""

.RightHeader = ""

.LeftFooter = ""

.CenterFooter = ""

.RightFooter = ""

.LeftMargin = Application.InchesToPoints(1)

.RightMargin = Application.InchesToPoints(1)

.TopMargin = Application.InchesToPoints(0)

.BottomMargin = Application.InchesToPoints(0)

.HeaderMargin = Application.InchesToPoints(0)

.FooterMargin = Application.InchesToPoints(0)

.PrintHeadings = False         .Orientation = xlPortrait     End With

CBottom = Range("A16000").End(xlUp).Row

CRow = 1     Do Until CRow > CBottom         If CRow Mod PageSize = 1 Then             Rows(CRow).Select             Selection.Insert Shift:=xlDown             Selection.Insert Shift:=xlDown             CBottom = CBottom + 2

Cells(CRow, 1).Value = LHeader             Cells(CRow, 4).Value = CHeader             Range(Cells(CRow, 1), _               Cells(CRow, 8)).Interior.ColorIndex = 34             Range(Cells(CRow + 1, 1), _               Cells(CRow + 1, 8)).Interior.ColorIndex = xlNone             CRow = CRow + 2         ElseIf CRow Mod PageSize = PageSize - 1 Then             Rows(CRow).Select             Selection.Insert Shift:=xlDown             Selection.Insert Shift:=xlDown             CBottom = CBottom + 2

Cells(CRow + 1, 1).Value = LFooter             Cells(CRow + 1, 4).Value = CFooter             Range(Cells(CRow + 1, 1), _               Cells(CRow + 1, 8)).Interior.ColorIndex = 34             CRow = CRow + 2         Else             CRow = CRow + 1         End If     Loop

LastPageNumber = PageNumber + 1     LastRow = LastPageNumber * PageSize     If CBottom <> LastRow Then             Range(Cells(LastRow, 1), _               Cells(LastRow, 8)).Interior.ColorIndex = 34             Cells(LastRow, 1).Value = LFooter             Cells(LastRow, 4).Value = CFooter     End If

CBottom = Range("A16000").End(xlUp).Row

CRow = 2     Do Until CRow > CBottom         If CRow Mod PageSize = 1 Then             Cells(CRow, 1).PageBreak = xlManual         End If         CRow = CRow + 1     Loop End Sub

Pour changer le nombre de lignes par page, changez simplement la valeur attribuée à la variable PageSize. Vous pouvez également modifier ce qui apparaît dans les zones « en-tête » et « pied de page » en modifiant ce qui est affecté aux variables LHeader, CHeader, LFooter et CFooter.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (3056) s’applique à Microsoft Excel 97, 2000, 2002 et 2003.