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

Compter le nombre de pages avant d'imprimer et utiliser ce nombre dans un message-box

5 réponses
Avatar
Pierre F.
Bonjour;

J'ai la macro ci-dessous qui me permet d'imprimer une s=E9lection de=20
lignes d'une page d'un classeur de 16 feuilles.

---------------
'macro qui pr=E9pare la feuille pour l'impression (colonnes...)
PrepImpr
Dim c As Range, myTxt As String

' Impr A310 (s=E9lection des A310 seulement)
Selection.AutoFilter Field:=3D8, Criteria1:=3D"A310"
Columns("H:H").ColumnWidth =3D 0
Columns("I:I").ColumnWidth =3D 0

For Each c In [h6:h800].Cells
If c.EntireRow.Hidden =3D False Then myTxt =3D Range("C2") & " - Salle =
" &=20
CStr(c): Exit For
Next
ActiveSheet.PageSetup.CenterHeader =3D myTxt
ActiveSheet.PrintOut
-----------------

Je souhaiterais modifier cette macro pour qu'=E0 la place d'imprimer ces =

pages, elle me compte pour chaque feuille (feuilles 2 =E0 13) le nombre d=
e=20
pages qui seront imprim=E9es, qu'elle fasse le total pour toutes les page=
s=20
et garde ce nombre en m=E9moire pour pouvoir l'utiliser dans un=20
message-box qui serait:
"Voulez-vous vraiment imprimer les NOMBREdePAGES de ce classeur?"

Merci :-)

Cordialement,
Pierre F.

5 réponses

Avatar
MichDenis
2 façons de faire :

En supposant que les onglets des feuilles à imprimer sont sélectionnées

'-------------------------
Sub SelectToutesLesFeuilles

For each sh in ThisWorkbook.Worksheets
Sh.select false
next

MsgBox ActiveWindow.SelectedSheets.HPageBreaks.Count + 1
'OU
MsgBox ExecuteExcel4Macro("GET.DOCUMENT(50)") & " page(s) à imprimer."
End Sub
'-------------------------





"Pierre F." a écrit dans le message de news:
693d1$464d798a$55da2b80$
Bonjour;

J'ai la macro ci-dessous qui me permet d'imprimer une sélection de
lignes d'une page d'un classeur de 16 feuilles.

---------------
'macro qui prépare la feuille pour l'impression (colonnes...)
PrepImpr
Dim c As Range, myTxt As String

' Impr A310 (sélection des A310 seulement)
Selection.AutoFilter Field:=8, Criteria1:="A310"
Columns("H:H").ColumnWidth = 0
Columns("I:I").ColumnWidth = 0

For Each c In [h6:h800].Cells
If c.EntireRow.Hidden = False Then myTxt = Range("C2") & " - Salle " &
CStr(c): Exit For
Next
ActiveSheet.PageSetup.CenterHeader = myTxt
ActiveSheet.PrintOut
-----------------

Je souhaiterais modifier cette macro pour qu'à la place d'imprimer ces
pages, elle me compte pour chaque feuille (feuilles 2 à 13) le nombre de
pages qui seront imprimées, qu'elle fasse le total pour toutes les pages
et garde ce nombre en mémoire pour pouvoir l'utiliser dans un
message-box qui serait:
"Voulez-vous vraiment imprimer les NOMBREdePAGES de ce classeur?"

Merci :-)

Cordialement,
Pierre F.
Avatar
JB
Bonjour,

tpage = 0
For s = 2 To 16 '
tpage = tpage + (Sheets(s).HPageBreaks.Count + 1) *
(Sheets(s).VPageBreaks.Count + 1)
Next s
MsgBox tpage

JB

On 18 mai, 12:53, "MichDenis" wrote:
2 façons de faire :

En supposant que les onglets des feuilles à imprimer sont sélectionn ées

'-------------------------
Sub SelectToutesLesFeuilles

For each sh in ThisWorkbook.Worksheets
Sh.select false
next

MsgBox ActiveWindow.SelectedSheets.HPageBreaks.Count + 1
'OU
MsgBox ExecuteExcel4Macro("GET.DOCUMENT(50)") & " page(s) à imprimer."
End Sub
'-------------------------

"Pierre F." a écrit dans le message de ne ws:
693d1$464d798a$55da2b80$
Bonjour;

J'ai la macro ci-dessous qui me permet d'imprimer une sélection de
lignes d'une page d'un classeur de 16 feuilles.

---------------
'macro qui prépare la feuille pour l'impression (colonnes...)
PrepImpr
Dim c As Range, myTxt As String

' Impr A310 (sélection des A310 seulement)
Selection.AutoFilter Field:=8, Criteria1:="A310"
Columns("H:H").ColumnWidth = 0
Columns("I:I").ColumnWidth = 0

For Each c In [h6:h800].Cells
If c.EntireRow.Hidden = False Then myTxt = Range("C2") & " - Salle " &
CStr(c): Exit For
Next
ActiveSheet.PageSetup.CenterHeader = myTxt
ActiveSheet.PrintOut
-----------------

Je souhaiterais modifier cette macro pour qu'à la place d'imprimer ces
pages, elle me compte pour chaque feuille (feuilles 2 à 13) le nombre de
pages qui seront imprimées, qu'elle fasse le total pour toutes les pages
et garde ce nombre en mémoire pour pouvoir l'utiliser dans un
message-box qui serait:
"Voulez-vous vraiment imprimer les NOMBREdePAGES de ce classeur?"

Merci :-)

Cordialement,
Pierre F.


Avatar
lSteph
Bonjour MD,

;o)) voui!

MsgBox ExecuteExcel4Macro("GET.DOCUMENT(50)") & " page(s) à imprimer."


.. z'y avait des trucs biens qd même dans les fonctions macros excel 4
qd je pense que ma collègue l'an dernier voulait jeter le livre...
Je le garde désormais précieusement!

LSteph

Avatar
MichDenis
Pour trouver le Fichier d'aide pour les fonctions macros 4.0, c'est un peu vieux ok mais
quand même...
http://download.microsoft.com/download/excel2000/xlmacro/2000/win98/fr/xlmacro.exe



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

Bonjour MD,

;o)) voui!

MsgBox ExecuteExcel4Macro("GET.DOCUMENT(50)") & " page(s) à imprimer."


.. z'y avait des trucs biens qd même dans les fonctions macros excel 4
qd je pense que ma collègue l'an dernier voulait jeter le livre...
Je le garde désormais précieusement!

LSteph

Avatar
Pierre F.

Je souhaiterais modifier cette macro pour qu'à la place d'imprimer ce s
pages, elle me compte pour chaque feuille (feuilles 2 à 13) le nombre de
pages qui seront imprimées, qu'elle fasse le total pour toutes les pa ges
et garde ce nombre en mémoire pour pouvoir l'utiliser dans un
message-box qui serait:
"Voulez-vous vraiment imprimer les NOMBREdePAGES de ce classeur?"


Merci à tous!!

J'ai essayé vos différentes propositions.
J'ai eu moins de problèmes (mon niveau Macro est faible) à adapter la
solution de JB.

Cordialement,
Pierre F.