Sub Imprimer()
Dim n%, c As Range, w As Worksheet, a$(), e
On Error Resume Next 'si une feuille n'existe pas
With Sheets("Liste Machine")
.Columns(3).Replace " / Inexistant", "", xlPart
.Columns(3).Replace " / Masqué", ""
n = n + 1
ReDim a(1 To 1)
a(1) = .Name
For Each c In .Range("A1", .UsedRange).Columns(4).Cells
If LCase(c) = "oui" Then
Set w = Nothing
Set w = Sheets(CStr(c(1, 0)))
If w Is Nothing Then c(1, 0) = c(1, 0) & " / Inexistant"
If w.Visible = xlSheetVisible Then Else c(1, 0) = c(1, 0) & " / Masqué"
n = n + 1
ReDim Preserve a(1 To n)
a(n) = w.Name
End If
Next
.Columns(3).AutoFit 'ajustement largeur
'---impression feuille par feuille---
For Each e In a
Sheets(e).PrintPreview 'aperçu avant impression
'Sheets(e).PrintOut 'impression
Next
.Activate
End With
End Sub