XL 2013 Défiir une zone d'impression

ced30l

XLDnaute Nouveau
Bonjour,

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.
 

DoubleZero

XLDnaute Barbatruc
Bonjour, ced30l, Theze, le Forum,

Un essai, avec le code suivant :
Code:
Option Explicit
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    With ActiveSheet
        .PageSetup.PrintArea = Range("a1:i" & Rows.Count).Address
'        .PrintPreview
    End With
End Sub
A bientôt :)
 

Staple1600

XLDnaute Barbatruc
Bonsoir à tous

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
 

Staple1600

XLDnaute Barbatruc
Re

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é
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
 

DoubleZero

XLDnaute Barbatruc
Bonjour à toutes et à tous,

... Tel que tu as écrit, ta zone d'impression inclura toujours toutes les lignes du classeurs, non ?..

Avec ton code, j'obtiens ceci :

Version Staple1600.JPG





Avec le mien, j'obtiens cela :

Version 00.JPG



Par conséquent, je ne c:oops:mprends pas la subtilité.


A bientôt :):)
 

Staple1600

XLDnaute Barbatruc
Bonsoir à tous

00
Et avec cette macro, éclaire-je ta lanterne ? ;)
(macro à lancer plusieurs fois)
NB: A tester sur un classeur qui vient de naître ;)
VB:
Sub Subtility_Finder()
Dim OO, Staple
Randomize 7654321
Cells.Clear
Range("A1:I" & Int((Rnd * 1984) + 1)) = "=RAND()*ROW()"
OO = Range("a1:i" & Rows.Count).Address
Staple = ActiveSheet.Range("a1:i" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row).Address
MsgBox OO = Staple
MsgBox "OO-> " & OO & Chr(13) & "Staple-> " & Staple
End Sub
 

DoubleZero

XLDnaute Barbatruc
... Et avec cette macro, éclaire-je ta lanterne ? ;)
(macro à lancer plusieurs fois)
NB: A tester sur un classeur qui vient de naître ;)
VB:
Sub Subtility_Finder()
Dim OO, Staple
Randomize 7654321
Cells.Clear
Range("A1:I" & Int((Rnd * 1984) + 1)) = "=RAND()*ROW()"
OO = Range("a1:i" & Rows.Count).Address
Staple = ActiveSheet.Range("a1:i" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row).Address
MsgBox OO = Staple
MsgBox "OO-> " & OO & Chr(13) & "Staple-> " & Staple
End Sub

Bonjour à toutes et à tous,

Merci, Staple1600 :), pour la peine que tu te donnes afin que je puisse saisir la "Subtility".

Je remarque que ton code rend visible, à l'écran, la zone imprimable par un trait. Ma macro ne permet pas cela.

Mais chaque code imprime bien l'intégralité des valeurs présentes, sans page superflue.

Pffff :confused:, suis-je compréhensible ?

A bientôt :):)
 

Staple1600

XLDnaute Barbatruc
Bonsoir à tous

00
Je viens de comprendre ma méprise:(:confused::oops::rolleyes:o_O
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 ?
 

DoubleZero

XLDnaute Barbatruc
Bonjour à toutes et à tous,

... 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...

A ce jeu-là (débit d'âneries), tu seras toujours perdant. N:pn mais !

... Sur mon PC, avec ces deux syntaxes, Excel trouve deux pages à imprimer dont une vide.
Et chez toi ?

Sur "mon mien" (W2008 – XL2013), quatre pages, dont deux vides, sont trouvées.

A bientôt :):)
 

Pièces jointes

  • 00 - Arbres et papier.xlsm
    16.2 KB · Affichages: 45

Discussions similaires

Réponses
6
Affichages
769
Réponses
5
Affichages
259

Statistiques des forums

Discussions
314 948
Messages
2 114 651
Membres
112 206
dernier inscrit
salah zabi