un essai:
toutes les feuilles de menu (1, 10, 11, 13...) sont imprimées pour chaque nom de la plage A33 à A62 de la feuille "1" (j'ai supposé que cette liste était valable pour toutes les feuilles.
Attention les lignes masquées 60 et 61(qui est vide) donneront lieu à impression...
Sub Imprim_Menus()
Dim i, T, DL As Integer, sh As Worksheet
With Worksheets("1")
DL = .Range("A" & Rows.Count).End(xlUp).Row
T = .Range("A33:A" & DL)
End With
For Each sh In Worksheets
If sh.Name <> "INFORMATIONS" And sh.Name <> "SUIVI APPRO " And sh.Name <> "SUIVI office)" Then
sh.PageSetup.PrintArea = "$A$1:$J$30"
For i = LBound(T, 1) To UBound(T, 1)
sh.Range("E3") = T(i, 1)
sh.PrintPreview ' prévisualisation mettre apostrophe devant cette ligne pour supprimer la visualisation
'sh.printout ' supprimer l'apostrophe pour imprimer
Next
End If
Next
End Sub
coller ce code dans un module standard.
Dans l'état la macro ne provoque que la visualisation de chaque feuille, ce qui permet d'avoir une idée .
Pour lancer l'impression réelle :
- supprimer la ligne : sh.PrintPreview '.... ou mettre un apostrophe devant
- supprimer l'apostrophe devant la ligne : 'sh.printout ' ...
A+