Afficher la fenêtre "Aperçu avant impression et Imprimer" pour une plage d'impression variable

titou83

XLDnaute Nouveau
Bonjour,

J'ai un fichier (de mesures) avec une zone d'impression variable (en gros, la zone à imprimer dépend du nombre de mesures.

Je souhaite donc pouvoir visualiser cette zone variable et ensuite l'imprimer en format papier ou pdf.

Le problème est que j'arrive à visualiser & imprimer mais je n'arrive pas à imprimer en pdf...

J'ai pour l'instant le code suivant :

Sub Impressionsheet1()

Dim nbligne As Integer

Range("A17:S17").Select
nbligne = Range("A17", Selection.End(xlDown)).Cells.Count
Range(Selection, Selection.End(xlDown)).Select
Selection.Rows.AutoFit

Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")

End Sub


En cherchant un peu j'ai aussi trouvé cette fonction qui me permet d'afficher la bonne fenêtre de visualisation + impression ou sauvegarde en pdf :

Sub Impressionsheet2()

Range("a1:b33").Select
Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")

End Sub


Cela marche parfaitement pour une plage à imprimer fixe mais pas pour une plage de variable...

D'où ma question : comment ouvrir la fenêtre zone d'impression qui me permet de choisir mon mode d'impression (imprimante ou pdf donc) et ce pour une plage de donnée variable?

Merci beaucoup d'avance.

Thierry
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Bonjour Thierry

La ligne: Range("A1:B33").Select ne fait que sélectionner une zone sur le feuille active et rien de plus

Entre ceci dans ton code

Code:
ActiveSheet.PageSetup.PrintArea = "A1:B33"
ActiveSheet.PrintPreview
Ça permettra de définir la zone d'impression et ensuite de la visualiser

à+
Philippe
 

titou83

XLDnaute Nouveau
Bonjour,

Merci pour la réponse. En effet cette ligne ne servait à rien comme ceci dans le deuxième code...

Je voulais surtout ouvrir la fenêtre printpreview pour laisser le choix à l'utilisateur d'imprimer sur imprimante ou en pdf. (d'où le PrintPreviewAndPrint)

Avec votre réponse, j'ai pu trouver une solution à mon problème (je précise bien une solution car à mon avis ce n'est pas la meilleure!) :

Sub Impressionsheet1()

Dim nbligne As Integer

Range("A17:S17").Select
nbligne = Range("A17", Selection.End(xlDown)).Cells.Count
Range(Selection, Selection.End(xlDown)).Select
Selection.Rows.AutoFit
ActiveSheet.PageSetup.PrintArea = "A17:S" & 17 + nbligne - 1

Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")

End Sub



Excellente journée!
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 948
Membres
101 850
dernier inscrit
Danigra