Masquer une cellule avant impression

Bonjour

J'ai besoin de modifier cette macro :

Option Explicit

Private Sub CommandButton1_Click()

Application.ScreenUpdating = False

With Me.CommandButton1

If .Caption = "Masquer" Then

Selection.Name = "mem"

[mem].Font.Color = Selection.Interior.Color

ActiveSheet.PrintPreview

.Caption = "Afficher"

.BackColor = &HFF00&

Else

.Caption = "Masquer"

.BackColor = &HFF&

[mem].Font.Color = 1

End If

End With

Application.ScreenUpdating = True

End Sub

afin que la cellule B5 de la feuille "tableau de bord" du classeur joint soit masquée juste avant l'impression de la feuille et a nouveau visible après.

Autrement dit que sa valeur ne s'imprime jamais.

Merci d'avance

Bonjour Edouard 9

Edouard 9 a écrit :

cellule B5 de la feuille "tableau de bord" du classeur joint soit masquée

ce n'est pas possible !

Il est possible de masquer une ligne, une colonne mais pas une seule cellule !

Cependant plusieurs solutions "de fortune" existent pour répondre à ton problème :

  1. Il est possible de masquer toute la ligne contenant B5 donc on masque cette ligne
  2. Il n'est pas possible de masquer toute la ligne donc il est possible de faire semblant en changeant les couleurs de cette cellule Blanc/Blanc par exemple

Çà ne pose pas de Pb de masquer la ligne entière, mais je sais pas faire la macro.

Le masque doit être opérant uniquement pendant l'impression et être supprimer après...

Bon weekend

(re)

à mettre dans ThisWorkBook

Private Sub Workbook_BeforePrint(Cancel As Boolean)
   ' Dans ce code je ne fais que l'aperçu avant impression
    ' il faut donc faire ensuite les manipulations pour imprimer (ou pas)

   ' pour savoir si on se trouve bien sur "tableau de bord"
    If ActiveSheet.Name = "tableau de bord" Then
        Cells(5, 1).EntireRow.Hidden = True ' Pour masquer la ligne 5
         ActiveWindow.SelectedSheets.PrintPreview
        Cells(5, 1).EntireRow.Hidden = False ' Pour afficher la ligne 5
    End If

End Sub

C'est bon l’inconvénient est que lorsque je fais un aperçu avant impression, à la fermeture de l’aperçu, l'impression est systématiquement lancé. La macro ne me laisse pas le choix de lancer ou pas.

Bon weekend

(re)

Oui effectivement, j'avais oublié ce détail !

Je regarde ça au plus vite !

(re)

En essayant comme ça...

ActiveWindow.SelectedSheets.PrintOut preview:=True

au lieu de

ActiveWindow.SelectedSheets.PrintPreview

Bonjour Andréa

Ta modification de code est efficace, maintenant mais elle aboutit a un autre Pb, c'est que pour fermer l’aperçu sur impression il faut le faire deux fois ...!!

Bon dimanche

Bonjour,

Une alternative avec un bouton ( CommandButton dans l'exemple.

Cdlt.

Private Sub cmdImprimer_Click()
    With ActiveSheet
        .Cells(5, "B").NumberFormat = ";;;"
        .PrintOut preview:=True
        .Cells(5, "B").NumberFormat = "General"
    End With
End Sub

Bonjour Jean-Eric

Oui c'est vrai il y a aussi cette alternative à laquelle je ne pense jamais et pourtant j'ai créé un format spécial pour l'avoir sous la main au cas où... mais bon !

Par contre tu as lu le dernier message de Edouard 9 au sujet de

.PrintOut preview:=True

Edouard 9 a écrit :

c'est que pour fermer l’aperçu sur impression il faut le faire deux fois ...!!

là je ne comprends pas ?

Re,

Bonjour Andrea73,

S'il a opté pour ma proposition et qu'il a conservé la procédure évènementielle, peut-être !?

Cdlt.

(re) Jean-Eric

Effectivement ma procédure est placé dans Workbook BeforePrint... tu penses que cela fait en sorte de "dédoubler" le clic de fermeture ?

Il faudrait donc (pour répondre complètement au problème à savoir "cell B5 masquée" lors des impressions) plutôt un truc comme ça ?

' Dans ThisWorkBook
Public imprOk As Boolean

Private Sub Workbook_Open()
    imprOk = False
End Sub

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    ' Pour emepecher les impressions et forcer le passage par la proc Imprimer !
    Cancel = imprOk
End Sub

' Dans un module et assoicé à un bouton
Sub Imprimer()
    'masquer cell
    imprOk = True
    ' impression
    imprOk = False
    'demasquer cell
End Sub

Bonjour

Je crois que je me suis mélangé les pinceaux dans mes explications

Avec le fichier joint de la dernière modification ce sera plus claire...

Merci d'avance

Bonjour Edouard 9 (tous)

Edouard 9 a écrit :

Je crois que je me suis mélangé les pinceaux dans mes explications Avec le fichier joint de la dernière modification ce sera plus claire...

oui je confirme "tu as mélangé tes pinceaux" par contre "ce n'est pas plus clair !"

Que veux-tu faire ?

Est-ce que "mélanger les pinceaux" veux dire que tu "n'as pas bien copier la procédure ?"

et que tu obtiens

Code: Tout sélectionner
    Private Sub Workbook_BeforePrint(Cancel As Boolean)
       ' Dans ce code je ne fais que l'aperçu avant impression
       ' il faut donc faire ensuite les manipulations pour imprimer (ou pas)

       ' pour savoir si on se trouve bien sur "tableau de bord"
       If ActiveSheet.Name = "tableau de bord" Then
            Cells(5, 1).EntireRow.Hidden = True ' Pour masquer la ligne 5
            ActiveWindow.SelectedSheets.PrintOut preview:=True
            Cells(5, 1).EntireRow.Hidden = False ' Pour afficher la ligne 5
       End If

    End Sub

au lieu de :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
   ' Dans ce code je ne fais que l'aperçu avant impression
   ' il faut donc faire ensuite les manipulations pour imprimer (ou pas)

   ' pour savoir si on se trouve bien sur "tableau de bord"
   If ActiveSheet.Name = "tableau de bord" Then
        Cells(5, 1).EntireRow.Hidden = True ' Pour masquer la ligne 5
        ActiveWindow.SelectedSheets.PrintOut preview:=True
        Cells(5, 1).EntireRow.Hidden = False ' Pour afficher la ligne 5
   End If

End Sub

Andrea, j'ai bien introduit ta dernière macro avec la correction.

Par contre voila ce qui se passe

Si je lance l'impression, j'arrive sur un apercu avant impression ou effectivement la ligne est bien masquée; aprés il faut à nouveau lancer l'impression.

Si je lance un aperçu avant impression : je l'obtiens avec la ligne masquée, si je veux le fermer il faut que je lance la cde une deuxième fois...

Bonjour Edouard 9

Voilà j'ai trouvé la cause de l'erreur !

Dans la procédure évènementielle BeforePrint,

  1. je masque la ligne,
  2. je fais l'aperçu,
  3. je "démasque" les cellules

Parfait ! sauf que ! la procédure BeforePrint porte bien son nom => Avant l'impression (en français) !!!

Donc avant l'impression je fais

  1. je masque la ligne,
  2. je fais l'aperçu,
  3. je "démasque" les cellules

et après Excel fait l'impression ! Donc 2 fois !! - à cause du point 2 "je fais l'aperçu"

Tu trouveras la correction dans la nouvelle version !

Désolé pour cette erreur (de débutant )

Parfait

Ne soit pas désolé Andrea, perso je ne suis même pas débutant, je survole seulement les macro.

Merci encore

A+

(re)

Rechercher des sujets similaires à "masquer impression"