Cette fonctionnalité n'existe pas par défaut dans Word. Cependant, il y a moyen d'y arriver avec un peu de "bricolage"...

 Le problème :

  • On veut afficher une pagination pour chaque section à partir de 1 dans l'en-tête (N° page/Nb de pages dans la section),
  • Et on veut ajouter une pagination globale de 1 à n (jusqu'à la dernière page du document) dans le pied de page (N° page/Nb de pages dans le document)
  • On peut très bien doubler la pagination dans un document, mais il est impossible de dissocier ces numéros. En effet, si l'on décide qu'un numéro commence à 1, l'autre démarrera également à 1, et si l'on choisit une numérotation continue, l'autre sera également continue.

On va donc utiliser la numérotation par section, avec quelques calculs, pour faire la pagination globale.

Pour régler ce problème, je propose deux solutions : les champs et le VBA. 

Solution CHAMPS

Word 2000-2003

Le principe

  • La pagination par section est simple à mettre à œuvre, il suffit de penser à redémarrer la numérotation à 1 à chaque section.
  • La pagination globale est un peu plus complexe :
    • Pour chaque section, on va récupérer le nombre de pages dans une variable,
    • Ensuite, on va faire une addition : au numéro de page de la section, on va ajouter, grâce à  la variable, le nombre des pages précédentes.

Pour cela, on va jongler avec les champs.

NB :  Pour insérer les champs, et obtenir les { }, vous devez appuyer sur les touches Ctrl+F9. Il y a des champs imbriqués, et dans ce cas, vous devez également appuyer sur Ctrl+F9.

Pour basculer entre l'affichage de codes de champs et le résultat, appuyez sur Alt+F9.

 

Concrètement, voici comment procéder :

Tout d'abord, nous admettons que les différents sauts de sections ont été placés dans le document.

Insertion, en entête, de la variable qui va compter les pages de chaque section, ainsi que de la pagination par section
  • Posiitionnez le curseur dans la première section, puis menu AffichageEn-tête et pied de page
    • Insérez la variable :
      {SET SECTION1 {SECTIONPAGES}}
      SECTION1 est le nom de la variable pour le nombre de pages de la section 1
      Ce champ sera invisible.
    • Insérez ensuite la pagination de la section : 
      {PAGES} / {SECTIONPAGES}

    • Cliquez sur le bouton Numérotation de page, toujours sur la barre d'outils En-tête et pied de page, et choisissez l'option A partir de 1 sous la rubrique Numérotation des pages.


  • Passez à la section suivante en cliquant sur le bouton Basculer En-tête/Pied de page suivant situé sur la barre d'outils En-tête et pied de page, puis :
    • Désactivez l'outil Lier au précédent toujours sur la barre d'outils En-tête et pied de page.
    • Modifiez le champ SET en remplaçant SECTION1 par SECTION2 (numéro de la section en cours)  afin d'obtenir : 
      {SET SECTION2 {SECTIONPAGES}}
      SECTION2 est le nom de la variable pour le nb de pages de la section 2
  • Passez à la section suivante, remplacez le numéro 2 par 3 dans le champ SET, et ainsi de suite jusqu'à l'avant-dernière section.

 

Seconde étape

 Insertion de la pagination continue en bas de page
  • Positionnez le curseur dans la première section, puis menu AffichageEn-tête et pied de page
  • Cliquez sur le bouton Basculer en-tête/Pied de page, situé sur la barre d'outils En-tête et pied de page pour atteindre le pied de page.
  • Insérez le champ Page : { PAGE } / {NUMPAGES }
  • Passez à la section suivante en cliquant sur le bouton  Afficher En-tête/Pied de page suivant situé sur la barre d'outils En-tête et pied de page :
    • Dans la section 2, désactivez l'outil Lier au précédent situé  sur la barre d'outils En-tête et pied de page.
    • Effacez le champ de numérotation  et, à la place entrez le champ suivant : 
       { = { PAGE } + SECTION1 } / {NUMPAGES }
      Ainsi le résultat sera le numéro de la page plus le nombre de pages de la section 1.
    • Passez à la section suivante (section 3) puis :
      • désactivez l'outil Lier au précédent
      • modifiez le champ en ajoutant à l'addition le nombre de pages de la section 2, ce qui  donnera :
         { = {PAGE} + SECTION1 + SECTION2} / {NUMPAGES}
    • Continuez ainsi pour chaque section jusqu'à la dernière en répétant les actions ci-dessus, c'est-à-dire en ajoutant à chaque fois la variable résultat du nombre de pages de la section précédente :
       { = {PAGE} + SECTION1 + SECTION2 + SECTION3} / {NUMPAGES}
       { = {PAGE} + SECTION1 + SECTION2 + SECTION3 + SECTION4} / {NUMPAGES}
      ...

 

Word 2007 et ultérieur

Le principe

  • La pagination par section est simple à mettre à œuvre, il suffit de penser à redémarrer la numérotation à 1 à chaque section.
  • La pagination globale est un peu plus complexe :
    • Pour chaque section, on va récupérer le nombre de pages dans une variable,
    • Ensuite, on va faire une addition : au numéro de page de la section, on va ajouter, grâce à  la variable, le nombre des pages précédentes.

Pour cela, on va jongler avec les champs.

NB :  Pour insérer les champs, et obtenir les { }, vous devez appuyer sur les touches Ctrl+F9. Il y a des champs imbriqués, et dans ce cas, vous devez également appuyer sur Ctrl+F9.

Pour basculer entre l'affichage de codes de champs et le résultat, appuyez sur Alt+F9.

 

Concrètement, voici comment procéder :

Tout d'abord, nous admettons que les différents sauts de sections ont été placés dans le document.

Première étape

 Insertion, en en-tête, de la variable qui va compter les pages de chaque section, ainsi que de la pagination par section
  • Positionnez le curseur dans la première section, puis Onglet Insertion, groupe En-tête et pied de page, bouton En-tête, commande Modifier l'en-tête.
    • Insérez la variable :
      {SET SECTION1 {SECTIONPAGES}}
      SECTION1 est le nom de la variable pour le nombre de pages de la section 1
      Ce champ sera invisible.
    • Insérez ensuite la pagination de la section : 
      {PAGES} / {SECTIONPAGES}



      • Sous l'onglet Outils En-têtes et pieds de page/Création, groupe En-tête et pied de page, cliquez sur le bouton Numéro de page, puis sur la commande Format des numéros de page, et choisissez l'option A partir de 1 sous la rubrique Numérotation des pages.



  • Passez à la section suivante en cliquant sur le bouton Suivante situé dans le groupe Navigation, puis :
    • Désactivez l'outil Lier au précédent.
    • Modifiez le champ SET en remplaçant SECTION1 par SECTION2 (numéro de la section en cours)  afin d'obtenir : 
      {SET SECTION2 {SECTIONPAGES}}
      SECTION2 est le nom de la variable pour le nb de pages de la section 2
  • Passez à la section suivante, remplacez le numéro 2 par 3 dans le champ SET, et ainsi de suite jusqu'à l'avant-dernière section.

 

 

Seconde étape

Insertion de la pagination continue en bas de page
  • Positionnez le curseur dans la première section, puis Onglet Insertion, groupe En-tête et pied de page, bouton Pied de page, commande Modifier le pied de page.
  • Insérez le champ Page : { PAGE } / {NUMPAGES }
  • Passez à la section suivante en cliquant sur le bouton Suivante situé dans le groupe Navigation, puis :
    • Dans la section 2, désactivez l'outil Lier au précédent .
    • Effacez le champ de numérotation et, à la place entrez le champ suivant : 
      { = { PAGE } + SECTION1 } / {NUMPAGES }
      Ainsi le résultat sera le numéro de la page plus le nombre de pages de la section 1.
    • Passez à la section suivante (section 3) puis :
      • désactivez l'outil Lier au précédent
      • modifiez le champ en ajoutant à l'addition le nombre de page de la section 2, ce qui donnera :
        { = {PAGE} + SECTION1 + SECTION2} / {NUMPAGES}
    • Continuez ainsi pour chaque section jusqu'à la dernière en répétant les actions ci-dessus, c'est-à-dire en ajoutant à chaque fois la variable résultat du nombre de pages de la section précédente :
      { = {PAGE} + SECTION1 + SECTION2 + SECTION3} / {NUMPAGES}
      { = {PAGE} + SECTION1 + SECTION2 + SECTION3 + SECTION4} / {NUMPAGES}
      ...

 

Le VBA

Si la solution des champs vous paraît trop compliquée, vous pouvez alors utiliser la macro suivante. Cette macro va insérer en en-tête la pagination de chaque section, en redémarrant à 1, sur le nombre total de pages de la section, puis en pied de page la pagination générale de 1 à n, sur le nombre total de pages du document.

La difficulté de cette macro vient du fait que Word, via le VBA, ne sait pas compter le nombre de pages contenues dans une section. Il va donc falloir lui demander de faire une soustraction car l'information qu'on peut récupérer est le numéro de la dernière page de chaque section.

Si vous ne connaissez pas les macros, cette solution est toutefois moins souple, au cas où vous souhaitez ajouter d'autres informations en en-tête ou pied de page, ou faire une présentation spécifique.

 

IMPORTANT !

Cette macro est à lancer une fois le document terminé. Si toutefois vous devez faire des modifications après avoir exécuté la macro, comme ajout ou suppression de pages, de sections, etc., il faudra relancer la macro.

Sub pagination_mixte()
'macro écrite par m@rina
Application.ScreenUpdating = False
Dim x As Integer, y As Integer
Dim mondoc
Dim der_page As Integer, der_page_prec As Integer
Set mondoc = ActiveDocument
'====================================================
'suppression de tous les entêtes et pieds de page
For y = 1 To mondoc.Sections.Count
With mondoc.Sections(y)
    .Footers(wdHeaderFooterPrimary).Range.Delete
    .Footers(wdHeaderFooterEvenPages).Range.Delete
    .Footers(wdHeaderFooterFirstPage).Range.Delete
    .Headers(wdHeaderFooterPrimary).Range.Delete
    .Headers(wdHeaderFooterEvenPages).Range.Delete
    .Headers(wdHeaderFooterFirstPage).Range.Delete
    .PageSetup.DifferentFirstPageHeaderFooter = False
    .PageSetup.OddAndEvenPagesHeaderFooter = False
End With
Next
'=====================================================

If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow.ActivePane.View.Type = wdOutlineView Then
    ActiveWindow.ActivePane.View.Type = wdPrintView
End If
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter


For x = 1 To mondoc.Sections.Count
    der_page = mondoc.Sections(x).Range.Information(3)
    If x <> 1 Then der_page_prec = mondoc.Sections(x - 1).Range.Information(3)
    mondoc.Sections(x).PageSetup.DifferentFirstPageHeaderFooter = False
    With mondoc.Sections(x).Footers(wdHeaderFooterPrimary)
        .PageNumbers.RestartNumberingAtSection = True
        .PageNumbers.StartingNumber = 1
        .LinkToPrevious = False
    End With

If x = 1 Then
    nb_pages = der_page
    commence_a = 0
    Else
    nb_pages = der_page - der_page_prec
    commence_a = der_page_prec '+ 1
End If
'=====================================================

'pagination générale en pied de page de 1 à n sur le nb total de pages du document
mondoc.Sections(x).Footers(wdHeaderFooterPrimary).Range.Select
ActiveWindow.View.ShowFieldCodes = True
With Selection

    .Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, preserveformatting:=False
    .TypeText Text:="="
    .Fields.Add Range:=Selection.Range, Type:=wdFieldPage, preserveformatting:=False
    .MoveRight Unit:=wdCharacter, Count:=1
    .TypeText Text:="+" & commence_a
    .MoveRight Unit:=wdCharacter, Count:=1
    .TypeText Text:="/"
    .Fields.Add Range:=Selection.Range, Type:=wdFieldNumPages, preserveformatting:=False
    .ParagraphFormat.Alignment = wdAlignParagraphCenter
End With
'=====================================================

'pagination par section en en-tête de 1 à n sur le nb total de pages de la section

mondoc.Sections(x).Headers(wdHeaderFooterPrimary).Range.Select
With Selection
    .Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="PAGE"
    .TypeText Text:="/" ' & texte
    .Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="SECTIONPAGES"
    .ParagraphFormat.Alignment = wdAlignParagraphCenter
End With

Next

ActiveWindow.View.ShowFieldCodes = False
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
Application.ScreenUpdating = True
End Sub