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
isabelle
salut geedee,

merci pour l'image,
une fois la fenêtre "Apercue des sauts de page" lancer cela fonction

Sub test1()
ActiveWindow.View = xlPageBreakPreview
MsgBox Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
ActiveWindow.View = xlNormalView
End Sub

fini le chiffre 6 j'ai maintenant le vrai... le 5
bisou isabelle

ps/ y'a t'il un de vous qui a réussi à faire fonctionner .VPageBreaks(i).Location

Sub mm()
Dim h()
Dim v()
With ActiveSheet

For i = 1 To .HPageBreaks.Count
ReDim Preserve h(i)
h(i) = .HPageBreaks(i).Location.Address
Next

For i = 1 To .VPageBreaks.Count
ReDim Preserve v(i)
v(i) = .VPageBreaks(i).Location
Next

For y = LBound(v) To UBound(v)
If v(y) = h(y) Then m = m + 1
Next

End With
End Sub

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




Avatar
isabelle
bonjour,
ps/ y'a t'il un de vous qui a réussi à faire fonctionner .VPageBreaks(i).Location


oublier ça, j'avions oublier de mettre .Column

isabelle

Avatar
bcar
Bonjour, je ne comprend pas pourquoi ca ne marcherait pas avec des
données en A1:A100 et AA1:AA30. Bug Excel connu ?
Mes documents contiennent plusieurs feuilles qui dans leur majorité ne
contiennent rien en A1 mais souvent avec une colonne A bien remplie, par
contre la colonne AA est toujours vide

Merci

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
bcar
Bonjour,

Non cette méthode ne focntionne pas mieux, mes données tenant sur une
seule page en largeur (en mode paysage) le VPageBreaks.count me renvoit
toujours 0 (donc 1 avec le +1) et comme le HPageBreaks est "faux"...

Merci pour votre temps

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
bcar
Bonjour,

Merci, mais ce n'est pas exactement ce que je cherche à faire, mon
classeurs contient plusieurs feuilles et je tient à avoir une
numérotation continue partant de 1/x pour la première page de la
première feuille et arrivant à x/x pour la dernière page de la dernière
feuille.
Et bien sûr tout cela automatisé dans une jolie macro.
Enfin au point ou j'en suis même si elle est moche la macro, je la prend
quand même :)

Merci

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
bcar
Bonjour,

merci beaucoup, je ne connaissais pas cette méthode.
Malheureusement elle ne fonctionne pas, elle s'obstine à me renvoyer 22
alors que mon la feuille que je teste contient 10 pages, et que
l'ensemble des feuilles que je désire imprimer fait 33 pages et que
l'ensemble du classeur en fait une centaine.

En fait le problème à l'air de venir du fait que :
- je suis en mode paysage
- je travaille avec les échelles : j'ajuste à 1 page en largeur ce qui à
pour conséquence de faire une Réduction d'échelle comprise suivant les
feuilles entre 70% et 80% de la taille normale.

Cependant comme cela marche parfaitement sous 2007, je reste persuadé
qu'il doit bien y avoir un moyen de le faire sous 2003, même si c'est
barbare ou détourné.



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
| je tient à avoir une numérotation continue partant de 1/x pour la première page de la

C'est exactement ce que fait la macro soumise :

Sélectionne toutes les feuilles que tu veux imprimer
Et lance aperçu avant imprimer ... tu devrais voir
le numéro des pages dans la section centrale
du pied de page. (je t'ai donné 2 syntaxes différentes
selon le format que tu veux l'afficher.)

La macro suivante doit être copié dans le ThisWorkbook de ton classeur.
'-------------------------
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
'-------------------------
Avatar
MichDenis
Essaie ceci pour tenir compte que tu imprimes format paysage
et que tu limites la largeur à une page

'---------------------
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Sh As Worksheet
For Each Sh In ActiveWindow.SelectedSheets
With Sh.PageSetup
.Orientation = xlLandscape
.Zoom = False
.FitToPagesWide = 1
' .CenterFooter = "&P & "" page"" /&N & "" Pages"
'OU
.CenterFooter = "&P/&N"
End With
Next
End Sub
'---------------------



"MichDenis" a écrit dans le message de news:

| je tient à avoir une numérotation continue partant de 1/x pour la première page de la

C'est exactement ce que fait la macro soumise :

Sélectionne toutes les feuilles que tu veux imprimer
Et lance aperçu avant imprimer ... tu devrais voir
le numéro des pages dans la section centrale
du pied de page. (je t'ai donné 2 syntaxes différentes
selon le format que tu veux l'afficher.)

La macro suivante doit être copié dans le ThisWorkbook de ton classeur.
'-------------------------
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
'-------------------------
Avatar
bcar
Non en fait le problème vient du fait que j'ai définit la zone
d'impression de chacune de mes feuilles, c'est cela qui fait que
ExecuteExcel4Macro("Get.Document"...) donne de mauvais résultats

Je continue de chercher, mais si quelqu'un à une astuce, je suis preneur

Bonjour,

merci beaucoup, je ne connaissais pas cette méthode.
Malheureusement elle ne fonctionne pas, elle s'obstine à me renvoyer 22
alors que mon la feuille que je teste contient 10 pages, et que
l'ensemble des feuilles que je désire imprimer fait 33 pages et que
l'ensemble du classeur en fait une centaine.

En fait le problème à l'air de venir du fait que :
- je suis en mode paysage
- je travaille avec les échelles : j'ajuste à 1 page en largeur ce qui à
pour conséquence de faire une Réduction d'échelle comprise suivant les
feuilles entre 70% et 80% de la taille normale.

Cependant comme cela marche parfaitement sous 2007, je reste persuadé
qu'il doit bien y avoir un moyen de le faire sous 2003, même si c'est
barbare ou détourné.



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
bcar
Oui effectivement, merci, je suis un peu vite passé sur cette solution
qui fonctionne parfaitement.

Il reste cependant un problème qui n'est pas résolu avec cette méthode,
mais je ne l'avais pas évoqué, il est vrai :
Je fait un sous numérotation par feuille, en fait mes pages sont
numérotées :
1/x - 1/3 [1/10]
2/x - 2/3 [1/10]
3/x - 3/3 [1/10]
4/x - 1/2 [2/10]
5/x - 2/2 [2/10]
6/x - 1/16 [3/10]
...
x/x - 4/4 [10/10]

Donc là j'obtiens bien la numérotation principale (numéro de la
page/nombre totale de pages imprimées), mais je ne peux plus faire la
sous notation (numéro de la page dans la feuille/nombre de pages total
de la feuille). La numération des onglets restant elle facile à effectuer)

En tout cas merci déjà pour cette approche que j'avais un peu rapidement
écartée.

| je tient à avoir une numérotation continue partant de 1/x pour la première page de la

C'est exactement ce que fait la macro soumise :

Sélectionne toutes les feuilles que tu veux imprimer
Et lance aperçu avant imprimer ... tu devrais voir
le numéro des pages dans la section centrale
du pied de page. (je t'ai donné 2 syntaxes différentes
selon le format que tu veux l'afficher.)

La macro suivante doit être copié dans le ThisWorkbook de ton classeur.
'-------------------------
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
'-------------------------


1 2 3