[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 ?

Bonsoir Jean-Marie :p,
Pas sûr de faire avancer le schmimblick, chez moi (2007), tes 2 macros sont équivalentes. La numérotation est correcte dans les 2 cas :confused:...
Bonne soirée :cool:
 

Staple1600

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

Bonsoir JNP

Elle est correcte si tu sélectionnes toutes les feuilles
Puis si tu fais un aperçu avant impression
tu as bien 1/6 etc..

Mais si tu sélectionnes un seule feuille
Puis si tu fais un aperçu avant impression

Tu verras en pied de page : 1/2 puis 2/2

C'est cela que je ne comprends pas.
 

JNP

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

Re :),
Effectivement, j'ai bidouillé, et ta macro corrigée devrait convenir, sans Array.
Code:
Sub b_insertion_NUMPages()
' insertion des numéros de pages à ma manière
Dim s As Worksheet, tp As Long, dp As Long
For Each s In Worksheets
    tp = tp + s.HPageBreaks.Count + 1
Next
    For Each s In Worksheets
        With s
        .PageSetup.RightFooter = "&P+" & dp & "/" & tp
        dp = dp + s.HPageBreaks.Count + 1
        End With
    Next
End Sub
J'ai rajouté 1 au compteur de sauts de pages, car logiquement, il y a une page de plus que de sauts de pages...
Bon dimanche :cool:
 

Staple1600

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

Bonjour JNP

Chez moi cela ne fonctionne pas correctement.

Si tu essayes le code suivant, tu verras qu'il y a un problème ;)

Code:
Sub TEST_PAS_OK()
Dim nbc&, nwk As Workbook, s As Worksheet, tp&, dp&
Application.ScreenUpdating = False
nbc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 3
Set nwk = Workbooks.Add
With nwk
    For Each s In .Worksheets
    With s
        With .Range("A1:G112")
            .FormulaLocal = "=ALEA()"
            .Value = .Value
        End With
        End With
    Next
[COLOR=SeaGreen]'---> code JNP[/COLOR]
    For Each s In .Worksheets
        tp = tp + s.HPageBreaks.Count + 1
    Next
        For Each s In nwk.Worksheets
            With s
            .PageSetup.RightFooter = "&P+" & dp & "/" & tp
            dp = dp + s.HPageBreaks.Count + 1
            End With
        Next
[COLOR=SeaGreen]'<--- fin code JNP[/COLOR]
End With
Application.SheetsInNewWorkbook = nbc
End Sub

PS: Merci de te creuser les méninges avec moi sur ces pieds de page.
 

JNP

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

Re :),
Je viens de tester ton nouveau code, zéro défaut :p...
J'ai bien la création de 3 feuilles qui comprennent 3 feuilles d'impression chacune. Si je suis en Feuil1, numérotées de 1/9 à 3/9, Feuil2 de 4/9 à 6/9 et Feuil3 de 7/9 à 9/9...
Quel problème chez toi ?
A + :cool:
 

Staple1600

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

re

chez moi (xl2000)

j'ai 2 pages par feuille, et trois feuilles dans le classeur créé par la macro.

donc 2*3= 6 pages en tout, et non pas 9.

Avec la macro : TEST_PAS_OK

les numéros de pages sont:
feuille 1, page 1: 1/5
feuille 1, page 2: 2/5

feuille 2, page 1: 1/5
feuille 2, page 2: 2/5

feuille 3, page 1: 5/5
feuille 3, page 2: 6/5

le résultat souhaité étant (et que je n'arrive pas à obtenir jusqu'à maintenant) :
feuille 1, page 1: 1/6
feuille 1, page 2: 2/6

feuille 2, page 1: 3/6
feuille 2, page 2: 4/6

feuille 3, page 1: 5/6
feuille 3, page 2: 6/6

PS; c'est encore plus incohérent si je groupe les 3 feuilles. :confused:
1/5;2/5;6/5;7/5;9/5;10/5
 
Dernière édition:

JNP

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

Re :),
Je suis désolé, j'ai passé ("A1:G112") à ("A1:G100") pour n'obtenir que 2 pages par feuille (la présentation par défaut de 2007 est en Calibri 11pts, c'est ce qui doit donner 3 pages en impression), et le résultat obtenu est impeccable 1/6 à 2/6, 3/6 à 4/6 et 5/6 à 6/6 :eek:...
Il faut que tu trouves un autre cobaye sur 2000, car sur 2007, vraiment aucun souci :rolleyes:...
Bon courage :cool:
 

JNP

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

Re :),
En pièce jointe, tu trouveras un fichier à pages variables par feuille, qui traité par ma macro donne bien le résultat souhaité... En tout cas feuille par feuille, parce qu'évidemment, si après ce traitement, tu prends toutes les feuilles ensemble, tu additionnes le calcul automatique au décalage demandé, et le résultat est aberrant...
A + :cool:
 

Pièces jointes

  • JM.xls
    149.5 KB · Affichages: 145

Efgé

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

Bonjour Staple1600, JNP,

Juste pour ammener ma pierre à l'édifice (et malheureusement pour embrouiller la situation):
Avec Excel 2003 et sur la base de la macro TEST_PAS_OK;
Telle qu'elle est, avec Range("A1:G112"):
Résultat abérant:
feuille 1, page 1: 1/9
feuille 1, page 2: 2/9

feuille 2, page 1: 4/9
feuille 2, page 2: 5/9

feuille 3, page 1: 7/9
feuille 3, page 2: 8/9

avec Range("A1:G100"):
Résultat corect:
feuille 1, page 1: 1/6
feuille 1, page 2: 2/6

feuille 2, page 1: 3/6
feuille 2, page 2: 4/6

feuille 3, page 1: 5/6
feuille 3, page 2: 6/6

Je précise que ma police par défaut est Arial en 10 pts.
En éspérant que cela te sera utile...:)

Cordialement
 

Efgé

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

Re
JNP :
Beinh... ...Non. C'est pour ça que j'ai dit: et malheureusement pour embrouiller la situation...
Chez moi G112 est bien la dernière cellule en bas à droite de la seconde page, mais la numérotation se déroule comme si j'en avait trois (pages)
Je ne comprend pas ce qui ce passe
Cordialement
 

Efgé

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

Re
Je met le fichier en défaut JM(2) et une image(JM) qui montre l'apperçu de la feuille 1:
En bas il y a bien page 2 sur 2, en haut le bouton suivante est bien grisé, et la numérotation de page est 2/9....
Cordialement
 

Pièces jointes

  • JM(2).zip
    30.7 KB · Affichages: 71
  • JM.zip
    28.6 KB · Affichages: 52
  • JM.zip
    28.6 KB · Affichages: 48
  • JM.zip
    28.6 KB · Affichages: 57

JNP

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

Re :),
Le fait est que les pages étant pleines, le compteur de Break renvoie 3, d'où le 9.
Il suffit de supprimer la ligne 112 pour que tout rentre dans l'ordre...
Peut-être un test pour vérifier s'il y a un Break final ou pas...
A + :cool:
 

Discussions similaires

Réponses
7
Affichages
292

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 837
dernier inscrit
Ugo