Mise en surbrillance des cellule non protéger sans les voir à l'impression

J'ai modifié dans ce sens mais toujours pareil quand je demande à la macro de remettre les cases qui était en grise, la macro laisse sans couleur...

Option Explicit

Sub imprimer()

    Dim sh As Worksheet
    Dim Tg As Range

'active calcul manuel
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    With ActiveSheet
    .Protect Password:="", UserInterfaceOnly:=True

'active macro masque ligne
Call masque_ligne.masque_ligne

' met les cellules selectionne en blanc
    For Each Tg In Range("a1:Z1000")
      If Tg.Interior.Color = RGB(192, 192, 192) Then
        Tg.Interior.Color = xlNone
      End If
    Next Tg

'desactive mode plein ecran
    With Application
        .ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", true)" '***********
    End With

'met fenetre en grande taillee
    Application.WindowState = xlMaximized

'ouvre apercu avant impression
    ActiveWindow.SelectedSheets.Application.Dialogs(xlDialogPrintPreview).Show

'active mode plein ecran
    With Application
        .WindowState = xlMaximized
        .DisplayFormulaBar = False       ' Masquer barre de formule
        .DisplayStatusBar = False        ' Masque barre status
        .DisplayScrollBars = False
        .ExecuteExcel4Macro "Show.Toolbar(""Ribbon"", false)" '***********

    End With
    With ActiveWindow
        .DisplayHeadings = False        ' Masque quadrillage
        .DisplayWorkbookTabs = False    ' Masquer nom onglets
    End With

' masque pointille mise en page
    .DisplayAutomaticPageBreaks = False

'masque fenetre format de la forme
    Application.CommandBars("Format Object").Visible = False

'remet les cellules selectionnes en gris
    For Each Tg In Range("a1:z1000")
      If Tg.Interior.Color = xlNone Then
        Tg.Interior.Color = RGB(192, 192, 192)
      End If
    Next Tg

'active calcul automatique
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

End With
End Sub

Re,

Effectivement, je viens de m'apercevoir que je n'avais pas utiliser la bonne instruction
"Tg.Interior.Color" au lieu de "Tg.Interior.Colorindex" auquel cas pour Excel XlNone ou Blanc c'est la même chose

J'ai corrigé le post précédent, mais en voici un code plus adapté, je pense

Sub Imprimer()
  Dim Sh As Worksheet
  Dim Tg As Range
  ' Désactive le rafraichissmeent et le calcul auto
  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual
  ' Avec la feuille active
  With ActiveSheet
    ' déprotéger la feuille
    .Unprotect
    ' met les cellules selectionne en blanc
    For Each Tg In Range("A1:H21")
      ' Vérifier si c'est une cellule déverrouillée
      If Tg.Locked = False Then
        Tg.Interior.Color = RGB(255, 255, 255)
      End If
    Next Tg
    ' ouvre apercu avant impression
    ActiveWindow.SelectedSheets.Application.Dialogs(xlDialogPrintPreview).Show
    ' remet les cellules selectionnes en gris
    For Each Tg In Range("A1:H21")
      ' Vérifier si c'est une cellule déverrouillée
      If Tg.Locked = False Then
        Tg.Interior.Color = RGB(192, 192, 192)
      End If
    Next Tg
    ' Protéger la feuille
    .Protect Password:=""
    ' active calcul automatique
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
  End With
End Sub

A+

Bonjour Bruno,

Merci pour ta réponse impeccable.

A+

Rechercher des sujets similaires à "mise surbrillance proteger voir impression"