XL 2010 Modifier un code d'impression

rosabelle

XLDnaute Junior
Bonsoir à tous,

J'aurais besoin d'un coup de pouce pour compléter ce code que vous m'aviez donné pour imprimer en noir et blanc et uniquement les zones pour lesquelles mes formules donnent un résultat :

Public Sub Imprimerzonespleines()
Dim n As Long

n = 9
With Feuil16
.Unprotect Password:="toto"
Do
If .Cells(n + 1, 1).Value = "" Then .Rows(n + 1).Hidden = True
n = n + 1
Loop While .Cells(n + 1, 1).Formula <> ""
With .PageSetup
.BlackAndWhite = True
.PrintArea = "$A1:G" & n
End With
.PrintOut Preview:=True
.Rows.Hidden = False
.Protect Password:="transall", UserInterFaceOnly:=True
End With

End Sub


Ce code fonctionne mais je ne sais pas comment indiquer que en plus les cellules :
A35:C35
et A36:C36

doivent aussi obligatoirement être imprimées

Merci par avance pour votre aide
Je vous souhaite de bonnes fêtes de fin d'année
 
Solution
Re

Je te propose cette solution qui remplace tout ton code

VB:
Sub Imprimerzonesremplies()

Application.ScreenUpdating = False
Dim Derlig&, Derlig1&

With Feuil1
    .Unprotect Password:="toto"
    Derlig = .Range("B" & Rows.Count).End(xlUp).Row + 1
    Derlig1 = .Range("G" & Rows.Count).End(xlUp).Row - 1
    .Rows(Derlig & ":" & Derlig1).EntireRow.Hidden = True    'Masque les lignes vides

    With .PageSetup
        .BlackAndWhite = True
        .PrintArea = "$A$1:$G$36"
    End With
    .PrintPreview    'Prévisualisation
    .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False    'Lance l'impression
    .Rows(Derlig & ":" & Derlig1).EntireRow.Hidden = False    'Démasque les lignes vides
    .Protect Password:="toto"...

rosabelle

XLDnaute Junior
Bonjour,

Merci beaucoup @Phil69970 d'avoir pris le temps en cette période de "fêtes" de répondre à ma question.
J'ai bien noté pour le mot de passe.:confused:
J'ai collé le bout de code que vous avez ajouté et cela fonctionne très bien (j'ai juste modifié la zone supplémentaire à imprimer) :

Public Sub Imprimerzonespleines()
Dim n As Long

n = 9
With Feuil16
.Unprotect Password:="toto"
Do
If .Cells(n + 1, 1).Value = "" Then .Rows(n + 1).Hidden = True
n = n + 1
Loop While .Cells(n + 1, 1).Formula <> ""
With .PageSetup
.BlackAndWhite = True
.PrintArea = "$A$1:G" & n & ",$A$31:$G$36"
End With
.PrintOut Preview:=True
.Rows.Hidden = False
.Protect Password:="toto", UserInterFaceOnly:=True
End With

End SubPublic Sub Imprimerzonespleines()
Dim n As Long

n = 9
With Feuil16
.Unprotect Password:="transall"
Do
If .Cells(n + 1, 1).Value = "" Then .Rows(n + 1).Hidden = True
n = n + 1
Loop While .Cells(n + 1, 1).Formula <> ""
With .PageSetup
.BlackAndWhite = True
.PrintArea = "$A$1:G" & n & ",$A$31:$G$36"
End With
.PrintOut Preview:=True
.Rows.Hidden = False
.Protect Password:="transall", UserInterFaceOnly:=True
End With

End Sub

Le seul problème c'est que cela m'imprime systématiquement sur 2 pages alors que j'ai très peu d'infos et cela devrait tenir sur une seule....
Y a t il une solution?
Je joins mon fichier que j'ai anonymisé.
Merci par avance
 

Pièces jointes

  • test macro zones avec formules et zone signature.xlsm
    24.1 KB · Affichages: 5

Phil69970

XLDnaute Barbatruc
Re

Je te propose cette solution qui remplace tout ton code

VB:
Sub Imprimerzonesremplies()

Application.ScreenUpdating = False
Dim Derlig&, Derlig1&

With Feuil1
    .Unprotect Password:="toto"
    Derlig = .Range("B" & Rows.Count).End(xlUp).Row + 1
    Derlig1 = .Range("G" & Rows.Count).End(xlUp).Row - 1
    .Rows(Derlig & ":" & Derlig1).EntireRow.Hidden = True    'Masque les lignes vides

    With .PageSetup
        .BlackAndWhite = True
        .PrintArea = "$A$1:$G$36"
    End With
    .PrintPreview    'Prévisualisation
    .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False    'Lance l'impression
    .Rows(Derlig & ":" & Derlig1).EntireRow.Hidden = False    'Démasque les lignes vides
    .Protect Password:="toto", UserInterFaceOnly:=True
End With

End Sub

*Merci de ton retour

@Phil69970
 

Discussions similaires

Réponses
14
Affichages
491
Réponses
1
Affichages
275

Statistiques des forums

Discussions
297 960
Messages
1 964 643
Membres
200 628
dernier inscrit
pop600