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

Vba : prévisualiser toutes les feuilles visibles

5 réponses
Avatar
Jac
Bonjour à tous,

dans un classeur, selon certains critères, quand je lance l'impression
par macro, je démasque certaines feuilles et je prévisualise toutes les
feuilles visibles avec
ActiveWorkbook.PrintOut Copies:=1, Preview:=True
Mais ensuite, je ne peux pas choisir d'imprimante, ça part directement
sur l'imprimante par défaut.
Donc j'aimerais pouvoir écrire en vba que je veux prévisualiser toutes
les feuilles. Je voudrais faire plus simple que de récupérer le nom des
feuilles visibles et d'en faire un Array, de le sélectionner puis
d'envoyer avec ActiveWindow.SelectedSheets.PrintPreview

Y a-t-il un syntaxe pour dire
ActiveWindow.ToutesLesFeuilles.PrintPreview et/ou une façon simple et
rapide de sélectionner toutes les feuilles (genre
ActiveWindows.Sheets.All.select) ?

ActiveWindow.Worksheet.PrintPreview ou
ActiveWindow.Worksheets.PrintPreview ne fonctionnent pas et
ActiveWorkbook.PrintPreview n'envoie que la feuille active.

Merci d'avance.

Jac

5 réponses

Avatar
michdenis
Bonjour,

Pour obtenir ce que tu veux, tu dois d'abord l'exprimer clairement !
Ceci signifie énumérer toutes les actions que la procédure doit faire.


Dans le ThisWorkbook de ton classeur, tu peux écrire ceci :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Sh As Object
For Each Sh In ThisWorkbook.Worksheets
Sh.Select False
Next
For Each Sh In ActiveWindow.SelectedSheets
Sh.PrintPreview
Next
End Sub




for each Sh in Activewindow.selectedsheets





"Jac" a écrit dans le message de groupe de discussion :
uwaIyl$
Bonjour à tous,

dans un classeur, selon certains critères, quand je lance l'impression
par macro, je démasque certaines feuilles et je prévisualise toutes les
feuilles visibles avec
ActiveWorkbook.PrintOut Copies:=1, Preview:=True
Mais ensuite, je ne peux pas choisir d'imprimante, ça part directement
sur l'imprimante par défaut.
Donc j'aimerais pouvoir écrire en vba que je veux prévisualiser toutes
les feuilles. Je voudrais faire plus simple que de récupérer le nom des
feuilles visibles et d'en faire un Array, de le sélectionner puis
d'envoyer avec ActiveWindow.SelectedSheets.PrintPreview

Y a-t-il un syntaxe pour dire
ActiveWindow.ToutesLesFeuilles.PrintPreview et/ou une façon simple et
rapide de sélectionner toutes les feuilles (genre
ActiveWindows.Sheets.All.select) ?

ActiveWindow.Worksheet.PrintPreview ou
ActiveWindow.Worksheets.PrintPreview ne fonctionnent pas et
ActiveWorkbook.PrintPreview n'envoie que la feuille active.

Merci d'avance.

Jac
Avatar
Jac
... donc clairement expliqué :

ma macro affiche toutes les feuilles à imprimer (entre 1 et 5 sur 10,
les autres sont cachées, presque jamais les mêmes combinaisons) selon
des valeurs dans des cellules ou des cases à cocher de ma feuille de
saisie /// Ça, ça tourne sans problème.

je dois sélectionner toutes les feuilles visibles /// C'est ça qui
coince

ma macro prévisualise toutes les feuilles sélectionnées au point
précédent, en une seule fois car elles vont peut-être finir en un seul
pdf, puis en sortant de la prévisualisation, la macro cache toutes les
feuilles sauf la feuille de saisie /// Ça, ça tourne sans problème.


Nb : Ce que tu m'as proposé ci-dessous coince sur "Sh.Select False"


Après mûre réflexion, michdenis a écrit :
Bonjour,

Pour obtenir ce que tu veux, tu dois d'abord l'exprimer clairement !
Ceci signifie énumérer toutes les actions que la procédure doit faire.


Dans le ThisWorkbook de ton classeur, tu peux écrire ceci :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Sh As Object
For Each Sh In ThisWorkbook.Worksheets
Sh.Select False
Next
For Each Sh In ActiveWindow.SelectedSheets
Sh.PrintPreview
Next
End Sub




for each Sh in Activewindow.selectedsheets





"Jac" a écrit dans le message de groupe de discussion :
uwaIyl$
Bonjour à tous,

dans un classeur, selon certains critères, quand je lance l'impression
par macro, je démasque certaines feuilles et je prévisualise toutes les
feuilles visibles avec
ActiveWorkbook.PrintOut Copies:=1, Preview:=True
Mais ensuite, je ne peux pas choisir d'imprimante, ça part directement
sur l'imprimante par défaut.
Donc j'aimerais pouvoir écrire en vba que je veux prévisualiser toutes
les feuilles. Je voudrais faire plus simple que de récupérer le nom des
feuilles visibles et d'en faire un Array, de le sélectionner puis
d'envoyer avec ActiveWindow.SelectedSheets.PrintPreview

Y a-t-il un syntaxe pour dire
ActiveWindow.ToutesLesFeuilles.PrintPreview et/ou une façon simple et
rapide de sélectionner toutes les feuilles (genre
ActiveWindows.Sheets.All.select) ?

ActiveWindow.Worksheet.PrintPreview ou
ActiveWindow.Worksheets.PrintPreview ne fonctionnent pas et
ActiveWorkbook.PrintPreview n'envoie que la feuille active.

Merci d'avance.

Jac
Avatar
Jac
... en fait, ce qui me manque, c'est la transposition en vba de:
clic-droit sur un nom de feuille
puis clic sur Sélectionner toutes les feuilles

car l'enregistreur note en "dur" :
Sheets(Array("Offre", "B38", "B40")).Select

Jac a présenté l'énoncé suivant :
... donc clairement expliqué :

ma macro affiche toutes les feuilles à imprimer (entre 1 et 5 sur 10, les
autres sont cachées, presque jamais les mêmes combinaisons) selon des valeurs
dans des cellules ou des cases à cocher de ma feuille de saisie /// Ça, ça
tourne sans problème.

je dois sélectionner toutes les feuilles visibles /// C'est ça qui coince

ma macro prévisualise toutes les feuilles sélectionnées au point précédent,
en une seule fois car elles vont peut-être finir en un seul pdf, puis en
sortant de la prévisualisation, la macro cache toutes les feuilles sauf la
feuille de saisie /// Ça, ça tourne sans problème.


Nb : Ce que tu m'as proposé ci-dessous coince sur "Sh.Select False"


Après mûre réflexion, michdenis a écrit :
Bonjour,

Pour obtenir ce que tu veux, tu dois d'abord l'exprimer clairement !
Ceci signifie énumérer toutes les actions que la procédure doit faire.


Dans le ThisWorkbook de ton classeur, tu peux écrire ceci :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Sh As Object
For Each Sh In ThisWorkbook.Worksheets
Sh.Select False
Next
For Each Sh In ActiveWindow.SelectedSheets
Sh.PrintPreview
Next
End Sub




for each Sh in Activewindow.selectedsheets





"Jac" a écrit dans le message de groupe de discussion :
uwaIyl$
Bonjour à tous,

dans un classeur, selon certains critères, quand je lance l'impression
par macro, je démasque certaines feuilles et je prévisualise toutes les
feuilles visibles avec
ActiveWorkbook.PrintOut Copies:=1, Preview:=True
Mais ensuite, je ne peux pas choisir d'imprimante, ça part directement
sur l'imprimante par défaut.
Donc j'aimerais pouvoir écrire en vba que je veux prévisualiser toutes
les feuilles. Je voudrais faire plus simple que de récupérer le nom des
feuilles visibles et d'en faire un Array, de le sélectionner puis
d'envoyer avec ActiveWindow.SelectedSheets.PrintPreview

Y a-t-il un syntaxe pour dire
ActiveWindow.ToutesLesFeuilles.PrintPreview et/ou une façon simple et
rapide de sélectionner toutes les feuilles (genre
ActiveWindows.Sheets.All.select) ?

ActiveWindow.Worksheet.PrintPreview ou
ActiveWindow.Worksheets.PrintPreview ne fonctionnent pas et
ActiveWorkbook.PrintPreview n'envoie que la feuille active.

Merci d'avance.

Jac
Avatar
michdenis
Sub test()
For Each Sh In Worksheets
If Sh.Visible Then
Sh.Select False
End If
Next
End Sub




"Jac" a écrit dans le message de groupe de discussion :
OuC01zD#
... en fait, ce qui me manque, c'est la transposition en vba de:
clic-droit sur un nom de feuille
puis clic sur Sélectionner toutes les feuilles

car l'enregistreur note en "dur" :
Sheets(Array("Offre", "B38", "B40")).Select

Jac a présenté l'énoncé suivant :
... donc clairement expliqué :

ma macro affiche toutes les feuilles à imprimer (entre 1 et 5 sur 10, les
autres sont cachées, presque jamais les mêmes combinaisons) selon des valeurs
dans des cellules ou des cases à cocher de ma feuille de saisie /// Ça, ça
tourne sans problème.

je dois sélectionner toutes les feuilles visibles /// C'est ça qui coince

ma macro prévisualise toutes les feuilles sélectionnées au point précédent,
en une seule fois car elles vont peut-être finir en un seul pdf, puis en
sortant de la prévisualisation, la macro cache toutes les feuilles sauf la
feuille de saisie /// Ça, ça tourne sans problème.


Nb : Ce que tu m'as proposé ci-dessous coince sur "Sh.Select False"


Après mûre réflexion, michdenis a écrit :
Bonjour,

Pour obtenir ce que tu veux, tu dois d'abord l'exprimer clairement !
Ceci signifie énumérer toutes les actions que la procédure doit faire.


Dans le ThisWorkbook de ton classeur, tu peux écrire ceci :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Sh As Object
For Each Sh In ThisWorkbook.Worksheets
Sh.Select False
Next
For Each Sh In ActiveWindow.SelectedSheets
Sh.PrintPreview
Next
End Sub




for each Sh in Activewindow.selectedsheets





"Jac" a écrit dans le message de groupe de discussion :
uwaIyl$
Bonjour à tous,

dans un classeur, selon certains critères, quand je lance l'impression
par macro, je démasque certaines feuilles et je prévisualise toutes les
feuilles visibles avec
ActiveWorkbook.PrintOut Copies:=1, Preview:=True
Mais ensuite, je ne peux pas choisir d'imprimante, ça part directement
sur l'imprimante par défaut.
Donc j'aimerais pouvoir écrire en vba que je veux prévisualiser toutes
les feuilles. Je voudrais faire plus simple que de récupérer le nom des
feuilles visibles et d'en faire un Array, de le sélectionner puis
d'envoyer avec ActiveWindow.SelectedSheets.PrintPreview

Y a-t-il un syntaxe pour dire
ActiveWindow.ToutesLesFeuilles.PrintPreview et/ou une façon simple et
rapide de sélectionner toutes les feuilles (genre
ActiveWindows.Sheets.All.select) ?

ActiveWindow.Worksheet.PrintPreview ou
ActiveWindow.Worksheets.PrintPreview ne fonctionnent pas et
ActiveWorkbook.PrintPreview n'envoie que la feuille active.

Merci d'avance.

Jac
Avatar
Jac
... Chaque fois c'est pareil : la solution est tellement simple que
c'est à se demander pourquoi l'explication est si compliquée...

Merci encore.
Jac


Il se trouve que michdenis a formulé :
Sub test()
For Each Sh In Worksheets
If Sh.Visible Then
Sh.Select False
End If
Next
End Sub




"Jac" a écrit dans le message de groupe de discussion :
OuC01zD#
... en fait, ce qui me manque, c'est la transposition en vba de:
clic-droit sur un nom de feuille
puis clic sur Sélectionner toutes les feuilles

car l'enregistreur note en "dur" :
Sheets(Array("Offre", "B38", "B40")).Select

Jac a présenté l'énoncé suivant :
... donc clairement expliqué :

ma macro affiche toutes les feuilles à imprimer (entre 1 et 5 sur 10, les
autres sont cachées, presque jamais les mêmes combinaisons) selon des
valeurs dans des cellules ou des cases à cocher de ma feuille de saisie ///
Ça, ça tourne sans problème.

je dois sélectionner toutes les feuilles visibles /// C'est ça qui coince

ma macro prévisualise toutes les feuilles sélectionnées au point précédent,
en une seule fois car elles vont peut-être finir en un seul pdf, puis en
sortant de la prévisualisation, la macro cache toutes les feuilles sauf la
feuille de saisie /// Ça, ça tourne sans problème.


Nb : Ce que tu m'as proposé ci-dessous coince sur "Sh.Select False"


Après mûre réflexion, michdenis a écrit :
Bonjour,

Pour obtenir ce que tu veux, tu dois d'abord l'exprimer clairement !
Ceci signifie énumérer toutes les actions que la procédure doit faire.


Dans le ThisWorkbook de ton classeur, tu peux écrire ceci :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Sh As Object
For Each Sh In ThisWorkbook.Worksheets
Sh.Select False
Next
For Each Sh In ActiveWindow.SelectedSheets
Sh.PrintPreview
Next
End Sub




for each Sh in Activewindow.selectedsheets





"Jac" a écrit dans le message de groupe de discussion :
uwaIyl$
Bonjour à tous,

dans un classeur, selon certains critères, quand je lance l'impression
par macro, je démasque certaines feuilles et je prévisualise toutes les
feuilles visibles avec
ActiveWorkbook.PrintOut Copies:=1, Preview:=True
Mais ensuite, je ne peux pas choisir d'imprimante, ça part directement
sur l'imprimante par défaut.
Donc j'aimerais pouvoir écrire en vba que je veux prévisualiser toutes
les feuilles. Je voudrais faire plus simple que de récupérer le nom des
feuilles visibles et d'en faire un Array, de le sélectionner puis
d'envoyer avec ActiveWindow.SelectedSheets.PrintPreview

Y a-t-il un syntaxe pour dire
ActiveWindow.ToutesLesFeuilles.PrintPreview et/ou une façon simple et
rapide de sélectionner toutes les feuilles (genre
ActiveWindows.Sheets.All.select) ?

ActiveWindow.Worksheet.PrintPreview ou
ActiveWindow.Worksheets.PrintPreview ne fonctionnent pas et
ActiveWorkbook.PrintPreview n'envoie que la feuille active.

Merci d'avance.

Jac