Prénom et nom dans un en-tête de page (Microsoft Excel)
David administre une élection pour une société professionnelle et la liste des électeurs éligibles est une feuille de travail. Il y a environ 1 200 électeurs éligibles, donc l’impression fait plus de vingt pages. David a un pied de page avec le numéro de page – ce qui est utile – mais ce serait bien s’il pouvait avoir, dans l’en-tête de chaque page, le prénom sur la page et le nom de famille sur la page.
Dans Excel, il n’existe aucun moyen natif de le faire. Cependant, il s’agit d’un accrochage relatif à faire dans Word, donc une solution consiste à coller les noms triés dans un document Word, puis à ajouter l’en-tête souhaité qui affiche les noms.
Bien que cela puisse fonctionner, il devient difficile de s’assurer que la version Word de la liste est toujours synchronisée avec la version Excel de la liste, et vice-versa.
Si vous décidez de conserver une seule version de la liste électorale dans Excel, la meilleure façon d’aborder le problème est d’utiliser une macro pour insérer le prénom et le nom dans l’en-tête. Le code d’une telle macro, évidemment, devrait être adapté à la mise en page des données dans votre feuille de calcul. La macro suivante suppose que les noms sont dans les colonnes A à C, avec les noms (ceux que vous souhaitez utiliser pour les en-têtes) sont dans la colonne C.
Sub PrintNamesInHeader() Dim iPages As Integer Dim iPage As Integer Dim iHorPgs As Integer Dim iHP As Integer Dim iHPNext As Integer Dim iCol As Integer Dim iColLast As Integer Dim lRow As Long Dim lRowLast As Long Dim sPrtArea As String iCol = 1 'Col A iColLast = 3 'Col C With ActiveSheet iPages = ExecuteExcel4Macro("Get.Document(50)") iHorPgs = .HPageBreaks.Count + 1 sPrtArea = .PageSetup.PrintArea For iPage = 1 To iPages iHP = ((iPage - 1) Mod iHorPgs) iHPNext = iHP + 1 If iHP = 0 Then If sPrtArea = "" Then lRow = 1 Else lRow = .Range(sPrtArea).Cells(1).Row End If Else lRow = .HPageBreaks(iHP).Location.Row End If If iHPNext > .HPageBreaks.Count Then lRowLast = .Cells(lRow, iColLast).End(xlDown).Row Else lRowLast = .HPageBreaks(iHPNext).Location.Row - 1 End If .PageSetup.LeftHeader = .Cells(lRow, iCol).Value & _ " - " & .Cells(lRowLast, iColLast) .PrintOut From:=iPage, To:=iPage, preview:=True Next End With End Sub
Lorsque vous exécutez la macro, il parcourt chaque page de la feuille de calcul. Les en-têtes sont définis pour la page, puis la page unique est imprimée, puis la page suivante est examinée et traitée.
_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 (9542) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:
link: / excelribbon-First_and_Last_Names_in_a_Page_Header [Prénom et nom dans un en-tête de page]
.