[VBA] Pied Page et Numéros de page, Comment faire svp ?

Staple1600

XLDnaute Barbatruc
Bonjour à tous

Voici un problème que je n'arrive pas à solutionner correctement
Dans un classeur Excel avec N onglets contenant chacun n pages, comment faire pour numéroter les pages de manières successives ?

Quelqu'un voit-il comment faire ?

Merci

Voilà ou j'en suis pour le moment (côté VBA)
Il faut grouper les feuilles pour que la numérotation soit correcte*
(je ne comprends pas pourquoi)

(Pour tester les codes, il faut utiliser un classeur vierge contenant 3 feuilles)

Code:
Sub a_creation_donnees_TEST() 
[COLOR=SeaGreen]' macro pour remplir un classeur de test
' contenant 3 onglets, chaque onglet contenant 2 pages
'soit un total de 6 pages[/COLOR]
Dim s As Worksheet
For Each s In Worksheets
With s
    With .Range("A1:G112")
        .FormulaLocal = "=ALEA()"
        .Value = .Value
    End With
    End With
Next
End Sub
Code:
Sub b_insertion_NUMPages() 
[COLOR=SeaGreen]' insertion des numéros de pages à ma manière[/COLOR]
Dim s As Worksheet, tp As Long
Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
Sheets("Feuil1").Activate
For Each s In Worksheets
    tp = tp + s.HPageBreaks.Count
Next
    For Each s In Worksheets
        With s
        .PageSetup.RightFooter = "&P" & "/" & tp
        End With
    Next
End Sub
Code:
Sub c_PiedPageNatifExcel() 
[COLOR=SeaGreen]'insertion des numéros de page en utilisant Mise en page/pied de page
'ne fonctionne pas correctement [/COLOR]
Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
Sheets("Feuil1").Activate
ActiveSheet.PageSetup.RightFooter = "&P / &N"
End Sub
Code:
Sub d_raz() 
[COLOR=SeaGreen]'macro à utiliser pour remettre me classeur à vide entre chaque test[/COLOR]
Dim s As Worksheet
For Each s In Worksheets
With s
    .Cells.Clear
    .PageSetup.RightFooter = ""
End With
Next
End Sub
*: numérotation correcte avec la macro b_insertion_NUMPages
mais problème aléatoire de numérotation sur classeur avec nombreux onglets.
 
Dernière édition:
Solution
Re : [VBA] Pied Page et Numéros de page, Comment faire svp ?

Bonsoir JNP, Efgé, le forum

Avec ce code, cela semble fonctionner ;)

Code:
Sub PiedsPages() [COLOR=Green]'merci Hasco ;-)[/COLOR]
'[B]Lien supprimé[/B]
    Dim sh As Worksheet
    For Each sh In Worksheets
        sh.PageSetup.RightFooter = "&""Arial""" & "&10" & "&P /&N"
    Next sh
End Sub
PS: Le code ci-dessus fonctionne si avant de faire l'aperçu avant impression , on groupe les 3 feuilles.
(clic-droit sur l'onglet de la Feuille 1 -> Sélectionner toutes les feuilles)

JNP

XLDnaute Barbatruc
Re : [VBA] Pied Page et Numéros de page, Comment faire svp ?

Re :),
En réalité, le problème vient du comportement erratique de HPageBreaks.Count...
dernière page non remplie : nbr page - 1
dernière page remplie : nbr page
Et si on a le malheur d'appliquer une zone d'impression : 1 :confused:...
Donc effectivement, il y a un lézard, mais comment le contourner ?
Bon courage :cool:
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] Pied Page et Numéros de page, Comment faire svp ?

Bonsoir JNP, Efgé, le forum

Avec ce code, cela semble fonctionner ;)

Code:
Sub PiedsPages() [COLOR=Green]'merci Hasco ;-)[/COLOR]
'[B]Lien supprimé[/B]
    Dim sh As Worksheet
    For Each sh In Worksheets
        sh.PageSetup.RightFooter = "&""Arial""" & "&10" & "&P /&N"
    Next sh
End Sub
PS: Le code ci-dessus fonctionne si avant de faire l'aperçu avant impression , on groupe les 3 feuilles.
(clic-droit sur l'onglet de la Feuille 1 -> Sélectionner toutes les feuilles)
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : [VBA] Pied Page et Numéros de page, Comment faire svp ?

Re :),
Oui, mais ça, on le savait depuis le début :p...
J'avais compris que ton but, c'était d'imprimer un seul onglet, mais avec les pages correctes :eek:... pour économiser le papier ;).
Bonne soirée :cool:
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] Pied Page et Numéros de page, Comment faire svp ?

Re


Au moins cela m'aura permis de saluer Hasco ;)

Le but recherché est:
Pour un classeur X, avec N onglets contenant N pages par onglet, la macro doit correctement numéroter les pages en suivant cette logique :

N= nombre total de pages contenu dans le classeur
n=numéro de page

Exemple :

Feuille 1, page 1 = Page n / N
Feuille 1, page 2 = Page n+1 /N
Feuille 2, page 1= Page n+1 /N
(et non pas Page 1 / Nombre de pages de la Feuille 2)
etc..
Dernière Feuille, dernière page de la dernière feuille = Page N / N

(Dans la pratique, le classeur peut avoir jusqu'à 100 pages à imprimer
répartis sur plusieurs onglets et non pas sur 100 onglets)

PS: le code doit fonctionner sans erreur, car je ne serai pas l'utilisateur final (et je ne voudrai pas aggraver la déforestation de la planète)
 

JNP

XLDnaute Barbatruc
Re : [VBA] Pied Page et Numéros de page, Comment faire svp ?

Re :),
Mais ça, il le fait tout seul (en tout cas sur 2007) dès qu'on sélectionne tous les onglets et qu'on demande une numérotation automatique...
A + :cool:
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 499
Messages
2 110 250
Membres
110 711
dernier inscrit
chmessi