Au boulot, suite à de nombreuses erreur de mise en page, sur une base de données, j'ai créer une petite macro qui crée les zones d'impression de chaque pages, la mise en forme, etc....
Problème aujourd'hui le code pour la zone d'impression se limite à :
Sélection de la plage manuellement, zone d'impression, définir. et cela sur chaque page.
Problème le nombre de ligne est évolutif, j'ai pour le moment pris les 150 premières lignes de chaque pages, mais cela peut-être plus, et même souvent moins. Or en faisant comme cela, si mon tableau rentre sur une page, l'imprimante m'imprime une page blanche pour les lignes inutilisé.
Donc j'aimerais savoir comment modifier le code de base pour que l'on sélectionne Colonne de A à I et jusqu'à la dernière ligne utilisé, puis après je laisse le reste du code que j'ai.
Merci.
Je ne peux pas vous mettre de modèle, n'ayant plus office à la maison.
Option Explicit
Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheet
.PageSetup.PrintArea = Range("a1:i" & Rows.Count).Address
' .PrintPreview
End With
End Sub
00
Ne serait pas plutôt ceci que tu voulais écrire ?
VB:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheet
.PageSetup.PrintArea = Range("a1:i" & .Cells(Rows.Count, 1).End(xlUp).Row).Address
' .PrintPreview
End With
End Sub
00
Tel que tu as écrit, ta zone d'impression inclura toujours toutes les lignes du classeurs, non ?
Range("a1:i" & Rows.Count).Address'00
J'ai testé avant de poster mon message.
D’où mon rajout pour circonscrire la zone à la dernière ligne non vide
Range("a1:i" & .Cells(Rows.Count, 1).End(xlUp).Row).Address 'Staple
00
Je viens de comprendre ma méprise
Je pensais que lorsque on ne définissait pas la zone d'impression en identifiant le dernière ligne non vide, Excel imprimait des feuilles vides.
Mais Excel est plus intelligent que moi et plus eco-friendly. (il ne gâche de ramettes de papier par défaut)
Ce qui m'a induit en erreur, c'est quand on affiche l'adresse de la zone d'impression avec un MsgBox, ta syntaxe renvoie toujours $A:$I, la mienne $A1:Ix ou x= le numéro de la dernière ligne non vide.
Donc dès que tu le peux, n'hésites pas à me chambrer dans un prochain fil où je débiterai d'autres âneries (euh le terme n'est peut -être pas ici approprié ), donc d'autres inepties.
NB: Pour ma défense, ne voulant pas gâcher de papier, j'avais pas testé ni l'impression, ni l’aperçu, cependant cela m'a permis d'isoler un cas particulier où nos deux syntaxes sont prises en défaut, non?
VB:
Sub Gachons_Du_Papier_Ou_Pas()
Range("A1:A59") = "=ROW()"
ActiveSheet.PageSetup.PrintArea = ""
ActiveSheet.PageSetup.PrintArea = ActiveSheet.Range("a1:i" & Rows.Count).Address
ActiveSheet.PrintPreview
ActiveSheet.PageSetup.PrintArea = ""
ActiveSheet.PageSetup.PrintArea = ActiveSheet.Range("a1:i" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row).Address
ActiveSheet.PrintPreview
End Sub
Sur mon PC, avec ces deux syntaxes, Excel trouve deux pages à imprimer dont une vide.
Et chez toi ?
... Donc dès que tu le peux, n'hésites pas à me chambrer dans un prochain fil où je débiterai d'autres âneries(euh le terme n'est peut -être pas ici approprié ), donc d'autres inepties...