VBA - Numérotation des pages

Résolu
Tramb -  
 Tramb' -
Bonjour,

J'essaie de mettre en en-tête le numéro de page actuel pour chaque feuille. Je veux par exemple que lors de l'impression de diverses feuilles contenant un à plusieurs pages, elles soient bien numérotées les une après les autres.

J'ai bien récupéré le nombre total de pages sans souci, mais
- soit je prend une variable que j'incrémente et je me retrouve avec dans une feuille qui contient plusieurs page le même numéro de page pour chaque page (à cause de l'en-tête statique)
- soit je met l'incrémentation automatique d'excel ("&P") mais il démarre à 1 à chaque feuille. Et comme c'est une chaine de caractère et non un integer, je ne peux pas l'incrémenter moi-même.

Une solution ?

Merci d'avance.

5 réponses

  1. Paf
     
    Bonjour,

    Avec le code on pourrait peut-être mieux voir !

    A+
    0
  2. Tramb
     
    For Each c In Worksheets
        c.PageSetup.CenterHeader = "&B" & PREP & Chr(13) & ETUDE & "&B"
        Pages = Pages + c.HPageBreaks.Count + 1
    Next
    
    For Each c In Worksheets
        c.PageSetup.RightHeader = ("&P" + Page) & "/" & Pages
    Next
    0
    1. Paf
       
      Re,
      il ne faut pas définir le RightHeader dans la boucle each ...., pour chaque élément le n° de page est 1.

      à l'impression
      Worksheets("clients").PageSetup.RightHeader = "&P" & "/" & "&N"
      affiche le N° de page incrémenté et le nombre de page de la feuille

      Maintenant si tu veux imprimer toutes les feuilles du classeur les unes à la suite des autres, avec des N° de page qui se suivent, c'est différent.

      A+
      0
    2. Tramb
       
      Re. Oui c'est exactement ça, je souhaite imprimer plusieurs feuilles du classeur avec les numéros qui se suivent. Et c'est là que je coince.
      0
    3. Paf
       
      j'ai bien trouvé quelque chose, mais ça ne fonctionne que s'il n'y a qu'une page par feuille!
      sinon "&P+5" n'additionne pas mais concatène. donc pour 3 pages par feuille on aura
      15,25,35 et pareil pour les pages suivantes!!
      pas sûr qu'il y ait une solution du moins pour mon niveau et ma version (2003)

      Vraiment désolé
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    a essayer

    Option Explicit
    Sub numeroter_pages()
    Dim nbre As Byte, cptr As Byte
    nbre = ThisWorkbook.Sheets.Count
    
    For cptr = 1 To nbre
        With Sheets(cptr).PageSetup
            .RightHeader = "&P" & "/" & nbre
            .FirstPageNumber = cptr
        End With
    Next
    End Sub
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Paf
     
    bonsoir,
    merci Michel,

    ton code marche mais seulement s'il n'y a qu'une page à imprimer par feuille.
    mais avec .FirstPageNumber j'ai trouvé:

    Dim nbre As Byte, cptr As Byte
    nbre = ThisWorkbook.Sheets.Count
    NBpage = 1
    
    '********** Calcul NB de pages total***************
    For cptr = 1 To nbre
        NBr = NBr + (Sheets(cptr).HPageBreaks.Count + 1) * (Sheets(cptr).VPageBreaks.Count + 1)
    Next
    
    '*********** Numérotation des pages pour chaque feuille ****************
    For cptr = 1 To nbre
        With Sheets(cptr).PageSetup
            .FirstPageNumber = NBpage
            .RightHeader = "&P" & "/" & NBr
        End With
        'Sheets(cptr).PrintPreview
        '*** determination du nombre de page imprimées pour décaler le n° de page pour la feuille suivante
        NBpage = NBpage + (Sheets(cptr).HPageBreaks.Count + 1) * (Sheets(cptr).VPageBreaks.Count + 1)
    Next
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour,

      Effectivement j'avais mal lu la demande...
      0
    2. Paf
       
      De toutes façons, a priori ca n'interesse plus Tramb
      0
    3. Tramb'
       
      Sisi. Merci beaucoup pour la réponse (je n'ai pas pu répondre, problème d'internet. Ca fonctionne au poil.
      Merci encore !
      0