macro VBA pour zone d'impression variable

superbog

XLDnaute Occasionnel
Bonjour,

Je voudrais avec une macro pouvoir établir la zone d'impression d'une page en fonction d'une variable, la dernière ligne de la colonne G.
Je voudrais que la range("A1:F150") soit toujours dans la zone d'impression et que la suite débute à G1 et se termine à K de la dernière ligne non vide de la colonne G.

Voilà la macro que j'ai créé mais ca ne fonctionne pas...

Pouvez vous m'aider

Code:
Sub printarea()

Dim DerLigBase, fin As Integer
 Dim dossier As String
Dim nomNewClasseur As String
    

dossier = Range("A9")

'Recherche de la dernière ligne
DerLigBase = Sheets("recap").Range("G1000").End(xlUp).Row

Sheets("recap").PageSetup.PrintArea = "$A$1:$F$150,$G$1:$K(DerligBase)"

end sub

merci
 

Staple1600

XLDnaute Barbatruc
Re : macro VBA pour zone d'impression variable

Bonjour à tous

Si j'ai bien compris, une autre façon de faire.
Code:
Sub mPrintArea()
Dim DerLigBase&, fin%, dossier$, nomNewClasseur$
dossier = Range("A9").Text
'Recherche de la dernière ligne
With Sheets("recap")
    DerLigBase = .Cells(Rows.Count, "G").End(xlUp).Row
    .PageSetup.printarea = .Range("A1:K" & IIf(DerLigBase < 150, 150, DerLigBase)).Address
End With
End Sub
 

job75

XLDnaute Barbatruc
Re : macro VBA pour zone d'impression variable

Bonjour à tous,

Jean-Marie (Staple1600) ta proposition équivaut à :

Code:
Sheets("recap").PageSetup.PrintArea = "$A$1:$A$150:$K" & DerligBase
Mais pas sûr que superbog nous ait dit ce qu'elle veut exactement.

A+
 

superbog

XLDnaute Occasionnel
Re : macro VBA pour zone d'impression variable

J'ai essayé cela ne marche pas.
Ce que je veux exactement c'est avoir une zone d'impression de A1 à F150 et de G1 à Ki ou i est la dernière ligne de la colonne G

merci de votre attention
 

job75

XLDnaute Barbatruc
Re : macro VBA pour zone d'impression variable

Re superbog,

Oui on sait mais Il faudrait préciser votre pensée.

Si par exemple i = 200 que doit-on imprimer ?

Si vous ne voulez pas que soit imprimées les cellules A151:F200 dites-le nom d'une pipe.

A+
 

job75

XLDnaute Barbatruc
Re : macro VBA pour zone d'impression variable

Re,

Alors au moment de l'impression il faut créer un nouveau document dans lequel on effacera les cellules situées sous A150:F150.

Donc placez cette macro dans le ThisWorkbook du classeur à imprimer :

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name <> "recap" Then Exit Sub
Dim i As Long
Cancel = True
ActiveSheet.Copy 'nouveau document
With ActiveWorkbook.ActiveSheet
  i = .Cells(Rows.Count, "G").End(xlUp).Row
  .PageSetup.PrintArea = "$A$1:$A$150:$K" & i
  .Range("A151:F" & .Rows.Count).Clear
  .PrintOut Preview:=True 'avec l'aperçu
  .Parent.Close False 'fermeture du document
End With
End Sub
A+
 

Discussions similaires

Réponses
1
Affichages
177
Réponses
7
Affichages
334
Réponses
0
Affichages
156

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 520
dernier inscrit
Azise