Ken a un classeur contenant 30 feuilles de calcul. Il aimerait imprimer les feuilles 1 à 29 en noir et blanc et la feuille 30 en couleur. Il se demande s’il existe un moyen d’imprimer toutes les feuilles de calcul à la fois et de spécifier qu’une feuille de calcul particulière ne doit être imprimée qu’en couleur.

C’est plus simple avec une macro. Il suffit de définir la propriété .BlackAndWhite pour chaque feuille de calcul juste avant son impression.

Par exemple, considérons la macro simple suivante:

Sub PrintSingleColorSheet()

Dim w As Worksheet     Dim S As Integer

' Set worksheet to be in color     ' (All others will print in B/W)

S = 30

For Each w In Worksheets         w.PageSetup.BlackAndWhite = True         If w.Index = S Then             w.PageSetup.BlackAndWhite = False         End If         w.PrintOut     Next w End Sub

La macro stocke dans la variable S le numéro d’index de la feuille de calcul que vous souhaitez mettre en couleur. (Dans ce cas, le numéro d’index est 30.) Ensuite, chaque feuille de calcul est parcourue et la propriété .BlackAndWhite définie sur True. Si, cependant, la propriété .Index de la feuille de calcul correspond à la valeur stockée dans S, la propriété .BlackAndWhite est définie sur False, ce qui signifie qu’elle s’imprimera en couleur. L’impression est ensuite envoyée à l’imprimante par défaut.

Vous pouvez, si vous le souhaitez, devenir plus sophistiqué avec la macro, ce qui signifie que vous pouvez demander à l’utilisateur quelle feuille de calcul imprimer en couleur:

Sub PrintSingleColorSheet()

Dim w As Worksheet     Dim S As Integer     Dim sTemp As String     Dim sMsg As String

sMsg = "There are " & Worksheets.Count & " worksheets in this "

sMsg = sMsg & "workbook. Please enter the number of the single "

sMsg = sMsg & "worksheet you want to print in color. (All "

sMsg = sMsg & "others will print in black and white.)"



sTemp = InputBox(sMsg)

S = Val(sTemp)

If S > 0 And S <= Worksheets.Count Then         For Each w In Worksheets             w.PageSetup.BlackAndWhite = True             If w.Index = S Then                 w.PageSetup.BlackAndWhite = False             End If             w.PrintOut         Next w     Else         sMsg = "You entered a value that is out of range."

If sTemp <> "" Then             MsgBox sMsg         End If     End If End Sub

Cette version de la macro demande à l’utilisateur de saisir un numéro de feuille de calcul. Si la valeur entrée est hors plage, un message d’erreur s’affiche et la macro n’imprime rien. Si l’utilisateur clique sur Annuler ou laisse la zone de saisie vide, la macro se ferme simplement sans rien imprimer.

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (13738) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.