Modification des en-têtes de section (Microsoft Excel)
Lorsque vous travaillez avec de grandes feuilles de calcul, il n’est pas inhabituel d’ajouter des sous-totaux afin de pouvoir regrouper les informations dans la feuille de calcul de manière logique. (L’outil Sous-total se trouve sur l’onglet Données du ruban dans le groupe Plan.) Lors de l’ajout de sous-totaux, vous pouvez spécifier qu’Excel démarre chaque groupe sur une toute nouvelle page. Ceci est très pratique pour tous les types de rapports dans Excel.
Si vous démarrez chaque groupe ou section de sous-total sur une nouvelle page, vous pouvez vous demander s’il existe un moyen de créer des en-têtes personnalisés qui s’impriment différemment pour chaque section, comme vous pouvez le faire avec différentes sections dans un document Word. Malheureusement, il n’existe aucun moyen de le faire dans Excel. Vous pouvez cependant créer une macro qui modifie de manière itérative l’en-tête et imprime chaque groupe d’une feuille de calcul. Considérez la macro suivante:
Sub ChangeSectionHeads() Dim c As Range, rngSection As Range Dim cFirst As Range, cLast As Range Dim rowLast As Long, colLast As Integer Dim r As Long, iSection As Integer Dim iCopies As Variant Dim strCH As String Set c = Range("A1").SpecialCells(xlCellTypeLastCell) rowLast = c.Row colLast = c.Column iCopies = InputBox( _ "Number of Copies", "Changing Section Headers", 1) If iCopies = "" Then Exit Sub Set cFirst = Range("A1") ' initialization start cell For r = 2 To rowLast ' from first row to last row If ActiveSheet.Rows(r).PageBreak = xlPageBreakManual Then Set cLast = Cells(r - 1, colLast) Set rngSection = Range(cFirst, cLast) iSection = iSection + 1 Select Case iSection ' substitute your CenterSection Header data ... Case 1: strCH = "Section 1" Case 2: strCH = "Section 2" ' etc ' Case n: strCH = "Section n" End Select ActiveSheet.PageSetup.CenterHeader = strCH rngSection.PrintOut _ Copies:=iCopies, Collate:=True Set cFirst = Cells(r, 1) End If Next r ' Last Section +++++++++++++++++++++++++++ Set rngSection = Range(cFirst, c) iSection = iSection + 1 ' substitute your Center Header data ... strCH = "Last Section ..." ActiveSheet.PageSetup.CenterHeader = strCH rngSection.PrintOut _ Copies:=iCopies, Collate:=True End Sub
Cette macro est un bon début pour accomplir ce que vous voulez faire. Il commence par vous demander combien de copies vous souhaitez imprimer de chaque section, puis il commence à parcourir chaque ligne pour voir s’il y a un saut de page avant cette ligne.
La vérification de ligne réelle est effectuée en examinant la propriété PageBreak de chaque ligne. Cette propriété est normalement définie sur xlPageBreakNone, mais lorsque vous utilisez la fonctionnalité Sous-totaux d’Excel, toute ligne comportant un saut de page avant que cette propriété ne soit définie sur xlPageBreakManual. Il s’agit du même paramètre qui se produirait si vous avez placé manuellement des sauts de page dans votre feuille de calcul.
Si la macro détecte qu’une ligne a un saut de page avant elle, la plage rngSection est définie comme égale aux lignes du groupe précédent. En outre, la structure Select Case est utilisée pour définir les différents en-têtes utilisés pour les différentes sections de la feuille de calcul. Cet en-tête est ensuite placé au centre de l’en-tête et la plage spécifiée par rngSection est imprimée.
Après avoir parcouru tous les groupes de la feuille de calcul, le groupe final (qui ne se termine pas par un saut de page) est imprimé.
Pour utiliser cette macro, tout ce que vous avez à faire est de spécifier dans la structure Select Case les différents en-têtes souhaités pour chaque section de la feuille de calcul. Vous pouvez également, si vous le souhaitez, modifier l’emplacement de l’en-tête dans l’en-tête. Tout ce que vous avez à faire est de modifier la propriété CenterHeader en LeftHeader ou RightHeader. Vous pouvez également utiliser LeftFooter, CenterFooter et RightFooter, si vous le souhaitez.
_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 (9867) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.