Zone d'impression auto...

Douds68160

XLDnaute Occasionnel
Bonjour,

J'aimerais savoir s'il est possible de définir automatiquement une zone d'impression (voir fichier joint).
Si je remplis ligne 26 = sélection de la page 2 jusqu'à la ligne 45…
Je ne sais pas si c'est vraiment clair et réalisable ce que je raconte…

Merci par avance
 

Pièces jointes

  • Listes type.zip
    15.5 KB · Affichages: 41

job75

XLDnaute Barbatruc
Re : Zone d'impression auto...

Bonjour Douds68160,

Si je comprends bien, vous voulez imprimer la dernière page.

Cette macro dans Module1 définit donc la zone d'impression :

Code:
Sub ZoneImpression()
Dim entete&, hpage&, dercel As Range, derlig&, prem&
entete = 5 'nombre de lignes de l'en-tête
hpage = 20 'nombre de lignes de chaque page
Set dercel = Cells.Find("*", LookIn:=xlFormulas, _
  SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
derlig = Application.Max(dercel.Row, entete + 1)
prem = entete + 1 + Application.Floor(derlig - entete - 1, hpage)
ActiveSheet.PageSetup.PrintArea = "$A" & prem & ":$K" & prem + hpage - 1
End Sub
Eventuellement mettre dans ThisWorkbook :

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
ZoneImpression
End Sub
Noter que Application.Floor est la fonction PLANCHER dans Excel.

A+
 

Pièces jointes

  • Listes type(1).zip
    16.8 KB · Affichages: 40

job75

XLDnaute Barbatruc
Re : Zone d'impression auto...

Re,

Sur le fichier que j'ai joint, exécutez la commande Imprimer, ou la macro ZoneImpression.

La zone d'impression est alors $A$26:$K$45.

On peut le voir dans Mise en page ou dans le nom défini Zone_d_impression.

Ou alors vos lunettes ?

A+
 

Douds68160

XLDnaute Occasionnel
Re : Zone d'impression auto...

Bonjour Job75

En faite j'aimerai avoir directement la zone défini a l'écran pour voir jusqu'ou la 2éme (puis 3éme....)pour pouvoir faire les bordures sur la page compléte...
Mais bon je pense que ce n'est pas possible....
Ou alors faire un marquage pour que je puisse identifier les differentes pages au moment de ma saisie...

Merci
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Zone d'impression auto...

Bonjour Douds68160,

Si vous voulez visualiser la zone d'impression, la macro peut la colorer en même temps qu'elle la définit :

Code:
Sub ZoneImpression()
Dim entete&, hpage&, dercel As Range, derlig&, prem&, ad$
entete = 5 'nombre de lignes de l'en-tête
hpage = 20 'nombre de lignes de chaque page
Set dercel = [A:K].Find("*", LookIn:=xlFormulas, _
  SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
derlig = Application.Max(dercel.Row, entete + 1)
prem = entete + 1 + Application.Floor(derlig - entete - 1, hpage)
ad = "$A" & prem & ":$K" & prem + hpage - 1
ActiveSheet.PageSetup.PrintArea = ad
[A:K].Interior.ColorIndex = xlNone
Range(ad).Interior.ColorIndex = 40 'couleur orange
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Listes type(2).zip
    18.1 KB · Affichages: 41

job75

XLDnaute Barbatruc
Re : Zone d'impression auto...

Bonjour Douds68160, le forum,

A la réflexion, je pense que nous étions à côté de la plaque dans cette histoire.

Et que la zone d'impression n'a rien à voir là-dedans.

Alors voici ce que je propose :

- définir la zone d'impression $A:$K et ne plus y toucher

- ajuster la plage des bordures et celle de la formule en colonne L jusqu'à la dernière ligne occupée

- et ceci automatiquement bien sûr.

La macro dans Module1 :

Code:
Sub AjusterPlages()
If ActiveSheet.Name = "Accueil" Then Exit Sub 'feuille(s) à exclure
Dim derlig As Long
Application.EnableEvents = False 'désactive les évènements
derlig = [A:K].Find("*", LookIn:=xlFormulas, _
  SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
With Rows(derlig + 1 & ":65536")
  .ClearContents
  .Borders.LineStyle = xlNone
End With
If derlig > 5 Then
  Range("A6:K" & derlig).Borders.LineStyle = xlContinuous
  Range("J6:K" & derlig).Borders(xlInsideVertical).LineStyle = xlNone
  Range("L6:L" & derlig).FormulaR1C1 = "=RC[-3]*RC[-9]"
End If
Application.EnableEvents = True 'réactive les évènements
End Sub
Macro évènementielle dans ThisWorkbook :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
AjusterPlages
End Sub
Fichier (3).

Nota 1 : j'ai mis la hauteur des lignes à 40 jusqu'à la ligne 65536 (sur Excel 2003).

Je vous laisse mettre les formats adéquats pour les cellules jusqu'à cette ligne 65536.

[Edit : Le fait d'aller jusqu'à l'extrêmité de la feuille minimise le nombre d'octets utilisés.]

Nota 2 : j'ai ajouté la feuille Accueil uniquement pour montrer comment la macro doit l'exclure.

A+
 

Pièces jointes

  • Listes type(3).zip
    17.6 KB · Affichages: 40
Dernière édition:

Discussions similaires

Réponses
6
Affichages
481

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin