Imprimer si cellule différent de vide

Bonjour à vous tous!

J'ai un petit classeur qui contient un bouton imprimer sur la première feuille. Je voudrais lui inclure un code pour que le bouton imprime aussi la feuil2 uniquement s’il y a quelque chose d'inscrit dans la cellule "C2" de la feuil2. J'ai recherché ailleurs sur le net, j'ai trouvé un bout de code (à partir du "With" dans mon code), mais ça ne fonctionne pas. Est-ce qu'un d'entre vous est capable de modifier le code pour que ça fonctionne?

Par ailleurs, je me demandais si c'était possible avec ce même bouton de créer 2 zones d'impressions différentes sur la feuil3, une en noir et blanc et une en couleur (j'ai fait une section grise pour celle en noir et blanc et une section en vert pour celle en couleur), mais je suis presque certain que ça ne peut se faire sur Excel, je demande au cas où je serais dans l'erreur.

Merci et passez de joyeuses fêtes ainsi qu'une très bonne année 2017!

bonjour,

une solution en pièce jointe.

Pour la deuxième question, la Zone d'Impression est une conséquence (pas une condition) :

Si la condition est vrai (il y a quelque chose dans la zone verte) la zone d'impression est la zone verte

sinon (si la zone verte est vide) c'est la zone grise qui s'imprime.

Avec d'autres conditions on pourrait choisir d'imprimer successivement les 2 zones d'impression...

A+

[Edit] Pièce jointe supprimée à la demande de l'auteur...

Bonjour Galopin01,

Merci pour la solution. Je ne peux pas le tester maintenant mais je ferai ça demain.

Concernant les zones d'impressions de la feuil3, il y aura toujours des données inscrites à quelque part dans la zone grise. La zone de couleur restera toujours vide, on ajoute cette section à la main. Est-ce qu'il y a un moyen de garder la zone en vert lorsqu'on imprime tout en gardant la zone grise en noir et blanc même si il y a des données dans la zone grise?

Je ne comprend pas trop la question...

Tu définis bien la zone d'impression comme tu veux, la couleur n'a rien à voir dans l'histoire : C'est juste une histoire d'imprimante.

Si tu as une imprimante noir et blanc tu auras du noir et blanc (et du gris...) Si tu as une imprimante couleur tu auras de la couleur...

En noir et blanc, la couleur du fond est traité différemment selon l'intensité de couleur. Certaines couleurs très claires n'étant pas traitées en noir et blanc. (encore que... c'est probablement variable selon le type d'imprimante et le genre de papier !)

A+

il doit y avoir un problème avec l'imprimante du bureau alors. Quand j'essaie chez un ami, ça fonctionne bien. Je vais vérifié ça demain.

J'ai une dernière question concernant ceci. Si la cellule C2 de la feuil2 a quelque chose d'inscrit dedans, je voudrais que ça enregistre uniquement la feuil2 en document pdf dans le même emplacement que le classeur Excel. Le code que j'ai écrit ne semble pas fonctionner lorsque la macro imprime les autres feuilles, mais si j'enlève la partie où elle imprime les autres feuilles, ça fonctionne. Je ne vois pas où est le problème dans le code, j'ai l'erreur d'exécution 424 Objet requis. Est-ce que tu vois le problème?

Merci!

25print-2.xlsm (45.14 Ko)

Bonjour,

Déjà ce serait bien que tu fasses un peu le ménage dans ton code... (ça s'appelle optimisation) parce que là j'ai un peu de mal à suivre : Tu passes plus de temps à te balader de feuille en feuille qu'à faire quelque chose réellement...

1- Supprimer tous les Select ... ActiveSheet ...Page de ... à ... Collate ...

Sheets("Feuil1").PrintOut

suffit amplement... (Preview:=True) pour afficher l'aperçu avant impression et faire des essais sans gaspiller de papier...

2- Je n'ai pas d'erreur 424... (mais c'est peut-être du au fait que ton fichier joint est pas très convaincant... Je ne sais pas !)

3- ...Par contre tu ne peux pas enregistrer de fichier (qu'ils soient xls ou pdf) avec le caractère "/"

Pour résumer quelque chose comme ça devrait convenir :

Private Sub CommandButton1_Click()
Dim i%, sRep As String, sFilename As String

   Range("B18").Cut Destination:=Range("H18")
       For i = 1 To 7
            Sheets("Feuil" & i).PrintOut Preview:=True
       Next
   Range("H18").Cut Destination:=Range("B18")

   With Sheets("Feuil2")
      If .Range("C2") <> "" Then
         .PrintOut Preview:=True

         sRep = ThisWorkbook.Path
         sFilename = "\" & .Range("C2") & ".pdf"
         sFilename = WorksheetFunction.Substitute(sFilename, "/", " ")
         ThisWorkbook.Sheets("Feuil4").ExportAsFixedFormat _
         Type:=xlTypePDF, _
         Filename:=sRep & sFilename, _
         Quality:=xlQualityStandard, _
         IncludeDocProperties:=True, _
         IgnorePrintAreas:=False, _
         OpenAfterPublish:=False
       End If
       'Et si vraiment on insiste pour changer de feuille après
       .Activate
   End With
End Sub

A+

Bonjour,

oui en effet mon code n'était vraiment pas du tout optimisé. Avec le nouveau ode, j'avais encore une autre erreur cette fois c'était la 1004 mais il semblerait qu'il y avait un problème avec la feuille #2 alors je l'ai recréée et les 2 codes marchent l'ancien et le nouveau.

Merci beaucoup pour le temps que tu as consacré à tout ceci!

Rechercher des sujets similaires à "imprimer different vide"