Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Compter le nombre de pages à imprimer

23 réponses
Avatar
bcar
Bonjour,

Comment faire sous excel 2003 pour compter le nombre de pages qui vont
être imprimée dans une worksheet ?

Sous 2007 je fais ThisWorkbook.Worksheets(1).PageSetup.Pages.Count et
c'est bon, mais la propriété Pages n'existe pas sous 2003.

Mon but est de compter le nombre de pages total qui vont être imprimées
dans le classeur pour faire uns numérotation globale (et non pas qui
repart à 1 pour chaque worksheet) : 1/x, 2/x, ... dans les pieds de page
des feuilles imprimées.

sous 2007 je fais grosso modo :
cpt = cpt + ThisWorkbook.Worksheets(1).PageSetup.Pages.Count
cpt = cpt + ThisWorkbook.Worksheets(2).PageSetup.Pages.Count
total = cpt
cpt = 0
With ThisWorkbook.Worksheets(1)
.PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
cpt = cpt + .PageSetup.Pages.Count
.PrintOut Copies:=1, Collate:=True
End With
With ThisWorkbook.Worksheets(2)
.PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
cpt = cpt + .PageSetup.Pages.Count
.PrintOut Copies:=1, Collate:=True
End With

Merci pour vos réponses

10 réponses

1 2 3
Avatar
Mgr Banni
bonjour bcar
trouvé au hasard des réponses de l'excellent michel du québec :

MsgBox ActiveWindow.SelectedSheets.HPageBreaks.Count + 1

HTH

Mgr T.B.



"bcar" a écrit dans le message de news:
fov43n$ojt$
Bonjour,

Comment faire sous excel 2003 pour compter le nombre de pages qui vont
être imprimée dans une worksheet ?

Sous 2007 je fais ThisWorkbook.Worksheets(1).PageSetup.Pages.Count et
c'est bon, mais la propriété Pages n'existe pas sous 2003.

Mon but est de compter le nombre de pages total qui vont être imprimées
dans le classeur pour faire uns numérotation globale (et non pas qui
repart à 1 pour chaque worksheet) : 1/x, 2/x, ... dans les pieds de page
des feuilles imprimées.

sous 2007 je fais grosso modo :
cpt = cpt + ThisWorkbook.Worksheets(1).PageSetup.Pages.Count
cpt = cpt + ThisWorkbook.Worksheets(2).PageSetup.Pages.Count
total = cpt
cpt = 0
With ThisWorkbook.Worksheets(1)
.PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
cpt = cpt + .PageSetup.Pages.Count
.PrintOut Copies:=1, Collate:=True
End With
With ThisWorkbook.Worksheets(2)
.PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
cpt = cpt + .PageSetup.Pages.Count
.PrintOut Copies:=1, Collate:=True
End With

Merci pour vos réponses


Avatar
JB
Bonjour,

NbPages = (Sheets(1).HPageBreaks.Count + 1) *
(Sheets(1).VPageBreaks.Count + 1)

JB
http://boisgontierjacques.free.fr


On 13 fév, 16:59, bcar wrote:
Bonjour,

Comment faire sous excel 2003 pour compter le nombre de pages qui vont
être imprimée dans une worksheet ?

Sous 2007 je fais ThisWorkbook.Worksheets(1).PageSetup.Pages.Count et
c'est bon, mais la propriété Pages n'existe pas sous 2003.

Mon but est de compter le nombre de pages total qui vont être imprimée s
dans le classeur pour faire uns numérotation globale (et non pas qui
repart à 1 pour chaque worksheet) : 1/x, 2/x, ... dans les pieds de page
des feuilles imprimées.

sous 2007 je fais grosso modo :
cpt = cpt + ThisWorkbook.Worksheets(1).PageSetup.Pages.Count
cpt = cpt + ThisWorkbook.Worksheets(2).PageSetup.Pages.Count
total = cpt
cpt = 0
With ThisWorkbook.Worksheets(1)
     .PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
     cpt = cpt + .PageSetup.Pages.Count
     .PrintOut Copies:=1, Collate:=True
End With
With ThisWorkbook.Worksheets(2)
     .PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
     cpt = cpt + .PageSetup.Pages.Count
     .PrintOut Copies:=1, Collate:=True
End With

Merci pour vos réponses


Avatar
bcar
Oui, merci, c'est effectivement la première chose que j'avais tenté,
mais curieusement cette méthode ne me donne pas le bon résultat (sauf
quand il n'y a qu'une page :) ) ni sous 2007 ni sous 2003.Et la
différence est conséquente : en vrai 33 pages, avec cette méthode 12...

bonjour bcar
trouvé au hasard des réponses de l'excellent michel du québec :

MsgBox ActiveWindow.SelectedSheets.HPageBreaks.Count + 1

HTH

Mgr T.B.



Avatar
news.microsoft.com
Celle-là est-elle mieux ?

(ActiveSheet.HPageBreaks.Count + 1) * (ActiveSheet.VPageBreaks.Count + 1)

Julien

"Mgr Banni" a écrit dans le message de news:

bonjour bcar
trouvé au hasard des réponses de l'excellent michel du québec :

MsgBox ActiveWindow.SelectedSheets.HPageBreaks.Count + 1

HTH

Mgr T.B.



"bcar" a écrit dans le message de news:
fov43n$ojt$
Bonjour,

Comment faire sous excel 2003 pour compter le nombre de pages qui vont
être imprimée dans une worksheet ?

Sous 2007 je fais ThisWorkbook.Worksheets(1).PageSetup.Pages.Count et
c'est bon, mais la propriété Pages n'existe pas sous 2003.

Mon but est de compter le nombre de pages total qui vont être imprimées
dans le classeur pour faire uns numérotation globale (et non pas qui
repart à 1 pour chaque worksheet) : 1/x, 2/x, ... dans les pieds de page
des feuilles imprimées.

sous 2007 je fais grosso modo :
cpt = cpt + ThisWorkbook.Worksheets(1).PageSetup.Pages.Count
cpt = cpt + ThisWorkbook.Worksheets(2).PageSetup.Pages.Count
total = cpt
cpt = 0
With ThisWorkbook.Worksheets(1)
.PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
cpt = cpt + .PageSetup.Pages.Count
.PrintOut Copies:=1, Collate:=True
End With
With ThisWorkbook.Worksheets(2)
.PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
cpt = cpt + .PageSetup.Pages.Count
.PrintOut Copies:=1, Collate:=True
End With

Merci pour vos réponses





Avatar
isabelle
bonjour,

effectivement cela ne peut pas fonctionner si par exemple une feuille contient des données en cellule A1:A100 et AA1:AA30.

isabelle

Oui, merci, c'est effectivement la première chose que j'avais tenté,
mais curieusement cette méthode ne me donne pas le bon résultat (sauf
quand il n'y a qu'une page :) ) ni sous 2007 ni sous 2003.Et la
différence est conséquente : en vrai 33 pages, avec cette méthode 12...

bonjour bcar
trouvé au hasard des réponses de l'excellent michel du québec :

MsgBox ActiveWindow.SelectedSheets.HPageBreaks.Count + 1

HTH

Mgr T.B.





Avatar
MichDenis
Tu aurais pu lui suggérer ceci :

'-------------------------
For Each Sh In ActiveWindow.SelectedSheets
With Sh.PageSetup
' .CenterFooter = "&P & "" page"" /&N & "" Pages"
'OU
.CenterFooter = "&P/&N"
Sh.PrintPreview
End With
Next
'-------------------------

Et le monsieur pourrait insérer l'événement du Thiisworkbook et la
procédure générale deviendrait :
'----------------------------------
Private Sub Workbook_BeforePrint(Cancel As Boolean)
For Each Sh In ActiveWindow.SelectedSheets
With Sh.PageSetup
' .CenterFooter = "&P & "" page"" /&N & "" Pages"
'OU
.CenterFooter = "&P/&N"
End With
Next
End Sub
'----------------------------------



"Mgr Banni" a écrit dans le message de news:

bonjour bcar
trouvé au hasard des réponses de l'excellent michel du québec :

MsgBox ActiveWindow.SelectedSheets.HPageBreaks.Count + 1

HTH

Mgr T.B.



"bcar" a écrit dans le message de news:
fov43n$ojt$
Bonjour,

Comment faire sous excel 2003 pour compter le nombre de pages qui vont
être imprimée dans une worksheet ?

Sous 2007 je fais ThisWorkbook.Worksheets(1).PageSetup.Pages.Count et
c'est bon, mais la propriété Pages n'existe pas sous 2003.

Mon but est de compter le nombre de pages total qui vont être imprimées
dans le classeur pour faire uns numérotation globale (et non pas qui
repart à 1 pour chaque worksheet) : 1/x, 2/x, ... dans les pieds de page
des feuilles imprimées.

sous 2007 je fais grosso modo :
cpt = cpt + ThisWorkbook.Worksheets(1).PageSetup.Pages.Count
cpt = cpt + ThisWorkbook.Worksheets(2).PageSetup.Pages.Count
total = cpt
cpt = 0
With ThisWorkbook.Worksheets(1)
.PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
cpt = cpt + .PageSetup.Pages.Count
.PrintOut Copies:=1, Collate:=True
End With
With ThisWorkbook.Worksheets(2)
.PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
cpt = cpt + .PageSetup.Pages.Count
.PrintOut Copies:=1, Collate:=True
End With

Merci pour vos réponses


Avatar
ChrisV
Bonjour bcar,

Sub testImp()
MsgBox "Votre édition comportera : " _
& Application.ExecuteExcel4Macro("GET.DOCUMENT(50)") _
& " feuille(s)"
End Sub


ChrisV


"bcar" a écrit dans le message de news:
fov43n$ojt$
Bonjour,

Comment faire sous excel 2003 pour compter le nombre de pages qui vont
être imprimée dans une worksheet ?

Sous 2007 je fais ThisWorkbook.Worksheets(1).PageSetup.Pages.Count et
c'est bon, mais la propriété Pages n'existe pas sous 2003.

Mon but est de compter le nombre de pages total qui vont être imprimées
dans le classeur pour faire uns numérotation globale (et non pas qui
repart à 1 pour chaque worksheet) : 1/x, 2/x, ... dans les pieds de page
des feuilles imprimées.

sous 2007 je fais grosso modo :
cpt = cpt + ThisWorkbook.Worksheets(1).PageSetup.Pages.Count
cpt = cpt + ThisWorkbook.Worksheets(2).PageSetup.Pages.Count
total = cpt
cpt = 0
With ThisWorkbook.Worksheets(1)
.PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
cpt = cpt + .PageSetup.Pages.Count
.PrintOut Copies:=1, Collate:=True
End With
With ThisWorkbook.Worksheets(2)
.PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
cpt = cpt + .PageSetup.Pages.Count
.PrintOut Copies:=1, Collate:=True
End With

Merci pour vos réponses


Avatar
isabelle
Salut ChrisV,

j'ai essayé plusieurs chose mais rien ne marche pour compter le nb. de feuille à imprimer de se classeur,
http://cjoint.com/?cnwizCv5Tm

domage...

isabelle

Bonjour bcar,

Sub testImp()
MsgBox "Votre édition comportera : " _
& Application.ExecuteExcel4Macro("GET.DOCUMENT(50)") _
& " feuille(s)"
End Sub


ChrisV


"bcar" a écrit dans le message de news:
fov43n$ojt$
Bonjour,

Comment faire sous excel 2003 pour compter le nombre de pages qui vont
être imprimée dans une worksheet ?

Sous 2007 je fais ThisWorkbook.Worksheets(1).PageSetup.Pages.Count et
c'est bon, mais la propriété Pages n'existe pas sous 2003.

Mon but est de compter le nombre de pages total qui vont être imprimées
dans le classeur pour faire uns numérotation globale (et non pas qui
repart à 1 pour chaque worksheet) : 1/x, 2/x, ... dans les pieds de page
des feuilles imprimées.

sous 2007 je fais grosso modo :
cpt = cpt + ThisWorkbook.Worksheets(1).PageSetup.Pages.Count
cpt = cpt + ThisWorkbook.Worksheets(2).PageSetup.Pages.Count
total = cpt
cpt = 0
With ThisWorkbook.Worksheets(1)
.PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
cpt = cpt + .PageSetup.Pages.Count
.PrintOut Copies:=1, Collate:=True
End With
With ThisWorkbook.Worksheets(2)
.PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
cpt = cpt + .PageSetup.Pages.Count
.PrintOut Copies:=1, Collate:=True
End With

Merci pour vos réponses






Avatar
MichDenis
Dans l'en-tête de la section gauche, tu as ceci "&[Pages]"
défini comme mise en page de la feuil1. La mise en page
d'une feuille est enregistré avec le fichier si tu l'as enregistré.

En conséquence, dans le coin supérieur gauche, tu as le
nombre total de pages qui s'affiche lors d'un PrintPreview

Au-delà de ça, je n'y trouve rien d'anormal !



"isabelle" a écrit dans le message de news:
Salut ChrisV,

j'ai essayé plusieurs chose mais rien ne marche pour compter le nb. de feuille à imprimer de se
classeur,
http://cjoint.com/?cnwizCv5Tm

domage...

isabelle

Bonjour bcar,

Sub testImp()
MsgBox "Votre édition comportera : " _
& Application.ExecuteExcel4Macro("GET.DOCUMENT(50)") _
& " feuille(s)"
End Sub


ChrisV


"bcar" a écrit dans le message de news:
fov43n$ojt$
Bonjour,

Comment faire sous excel 2003 pour compter le nombre de pages qui vont
être imprimée dans une worksheet ?

Sous 2007 je fais ThisWorkbook.Worksheets(1).PageSetup.Pages.Count et
c'est bon, mais la propriété Pages n'existe pas sous 2003.

Mon but est de compter le nombre de pages total qui vont être imprimées
dans le classeur pour faire uns numérotation globale (et non pas qui
repart à 1 pour chaque worksheet) : 1/x, 2/x, ... dans les pieds de page
des feuilles imprimées.

sous 2007 je fais grosso modo :
cpt = cpt + ThisWorkbook.Worksheets(1).PageSetup.Pages.Count
cpt = cpt + ThisWorkbook.Worksheets(2).PageSetup.Pages.Count
total = cpt
cpt = 0
With ThisWorkbook.Worksheets(1)
.PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
cpt = cpt + .PageSetup.Pages.Count
.PrintOut Copies:=1, Collate:=True
End With
With ThisWorkbook.Worksheets(2)
.PageSetup.CenterFooter = "Page &P+" & cpt & " de " & total
cpt = cpt + .PageSetup.Pages.Count
.PrintOut Copies:=1, Collate:=True
End With

Merci pour vos réponses






Avatar
Modeste
Bonsour® isabelle avec ferveur ;o))) vous nous disiez :

j'ai essayé plusieurs chose mais rien ne marche pour compter le nb.
de feuille à imprimer de se classeur, http://cjoint.com/?cnwizCv5Tm


pour moi ça marche...
http://cjoint.com/?coamRukIn7

--
@+
;o)))

1 2 3