Vba : prévisualiser toutes les feuilles visibles

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #22143031
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" 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
Jac
Le #22145161
... 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" 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
Jac
Le #22145271
... 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" 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
michdenis
Le #22145631
Sub test()
For Each Sh In Worksheets
If Sh.Visible Then
Sh.Select False
End If
Next
End Sub




"Jac" 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" 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
Jac
Le #22145621
... 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" 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" 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
Publicité
Poster une réponse
Anonyme