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
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
bonjour,
j'ai testé cette macro et elle fonctionne bien pour des zone d'impression défini,
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" <bcar4@laposte.net> a écrit dans le message de news:
fov43n$ojt$1@reader1.imaginet.fr...
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
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
isabelle
...et pour plusieurs feuille sélectionner,
Sub test3() Application.ScreenUpdating = False For Each f In ActiveWorkbook.Windows(1).SelectedSheets f.Activate ActiveWindow.View = xlPageBreakPreview strSheetName = "[" & ActiveWorkbook.Name & "]" & f.Name m = ExecuteExcel4Macro("Get.Document(50," & """" & strSheetName & """" & ")") total = total + m ActiveWindow.View = xlNormalView Next MsgBox total Application.ScreenUpdating = True End Sub
isabelle
bonjour,
j'ai testé cette macro et elle fonctionne bien pour des zone d'impression défini,
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
...et pour plusieurs feuille sélectionner,
Sub test3()
Application.ScreenUpdating = False
For Each f In ActiveWorkbook.Windows(1).SelectedSheets
f.Activate
ActiveWindow.View = xlPageBreakPreview
strSheetName = "[" & ActiveWorkbook.Name & "]" & f.Name
m = ExecuteExcel4Macro("Get.Document(50," & """" & strSheetName & """" & ")")
total = total + m
ActiveWindow.View = xlNormalView
Next
MsgBox total
Application.ScreenUpdating = True
End Sub
isabelle
bonjour,
j'ai testé cette macro et elle fonctionne bien pour des zone
d'impression défini,
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" <bcar4@laposte.net> a écrit dans le message de news:
fov43n$ojt$1@reader1.imaginet.fr...
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
Sub test3() Application.ScreenUpdating = False For Each f In ActiveWorkbook.Windows(1).SelectedSheets f.Activate ActiveWindow.View = xlPageBreakPreview strSheetName = "[" & ActiveWorkbook.Name & "]" & f.Name m = ExecuteExcel4Macro("Get.Document(50," & """" & strSheetName & """" & ")") total = total + m ActiveWindow.View = xlNormalView Next MsgBox total Application.ScreenUpdating = True End Sub
isabelle
bonjour,
j'ai testé cette macro et elle fonctionne bien pour des zone d'impression défini,
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
bcar
Oui effectivement cette fonction marche sauf dans au moins un cas : si on fait "mise en page - ajuster 1 page(s) en largeur" la fonction ne donnera pas le bon résultat, pourquoi ? Par contre si on choisit de spécifier "Réduire/Agrandir à" et qu'on y met le même pourcentage que celui qu'Excel avait calculé pour le "Ajuster-1 pages(s) en largeur" cela fonctionne. A mon avis c'est un bug.
C'est de là que vient mon problème. Je vais donc spécifier des pourcentage de réduction plutôt que de forcer l'ajustement
En tout cas merci pour toutes vos propositions qui m'ont permis d'avancer sur le sujet.
...et pour plusieurs feuille sélectionner,
Sub test3() Application.ScreenUpdating = False For Each f In ActiveWorkbook.Windows(1).SelectedSheets f.Activate ActiveWindow.View = xlPageBreakPreview strSheetName = "[" & ActiveWorkbook.Name & "]" & f.Name m = ExecuteExcel4Macro("Get.Document(50," & """" & strSheetName & """" & ")") total = total + m ActiveWindow.View = xlNormalView Next MsgBox total Application.ScreenUpdating = True End Sub
isabelle
bonjour,
j'ai testé cette macro et elle fonctionne bien pour des zone d'impression défini,
Oui effectivement cette fonction marche sauf dans au moins un cas :
si on fait "mise en page - ajuster 1 page(s) en largeur" la fonction ne
donnera pas le bon résultat, pourquoi ?
Par contre si on choisit de spécifier "Réduire/Agrandir à" et qu'on y
met le même pourcentage que celui qu'Excel avait calculé pour le
"Ajuster-1 pages(s) en largeur" cela fonctionne.
A mon avis c'est un bug.
C'est de là que vient mon problème. Je vais donc spécifier des
pourcentage de réduction plutôt que de forcer l'ajustement
En tout cas merci pour toutes vos propositions qui m'ont permis
d'avancer sur le sujet.
...et pour plusieurs feuille sélectionner,
Sub test3()
Application.ScreenUpdating = False
For Each f In ActiveWorkbook.Windows(1).SelectedSheets
f.Activate
ActiveWindow.View = xlPageBreakPreview
strSheetName = "[" & ActiveWorkbook.Name & "]" & f.Name
m = ExecuteExcel4Macro("Get.Document(50," & """" & strSheetName & """" &
")")
total = total + m
ActiveWindow.View = xlNormalView
Next
MsgBox total
Application.ScreenUpdating = True
End Sub
isabelle
bonjour,
j'ai testé cette macro et elle fonctionne bien pour des zone
d'impression défini,
Oui effectivement cette fonction marche sauf dans au moins un cas : si on fait "mise en page - ajuster 1 page(s) en largeur" la fonction ne donnera pas le bon résultat, pourquoi ? Par contre si on choisit de spécifier "Réduire/Agrandir à" et qu'on y met le même pourcentage que celui qu'Excel avait calculé pour le "Ajuster-1 pages(s) en largeur" cela fonctionne. A mon avis c'est un bug.
C'est de là que vient mon problème. Je vais donc spécifier des pourcentage de réduction plutôt que de forcer l'ajustement
En tout cas merci pour toutes vos propositions qui m'ont permis d'avancer sur le sujet.
...et pour plusieurs feuille sélectionner,
Sub test3() Application.ScreenUpdating = False For Each f In ActiveWorkbook.Windows(1).SelectedSheets f.Activate ActiveWindow.View = xlPageBreakPreview strSheetName = "[" & ActiveWorkbook.Name & "]" & f.Name m = ExecuteExcel4Macro("Get.Document(50," & """" & strSheetName & """" & ")") total = total + m ActiveWindow.View = xlNormalView Next MsgBox total Application.ScreenUpdating = True End Sub
isabelle
bonjour,
j'ai testé cette macro et elle fonctionne bien pour des zone d'impression défini,