Excel & VBA : automatiser l’impression des feuilles de calcul

Certaines tâches répétitives gagnent à être automatisées. Il en est ainsi des impressions. Il est en effet fréquent d’avoir à imprimer de manière récurrente des feuilles de travail. Sur des séries importantes, cette tâche se révèle rapidement fastidieuse. Or elle est aisément automatisable à l’aide de quelques lignes de code VBA.

L’instruction VBA qui permet à Excel d’imprimer est .PrintOut, elle s’utilise ainsi :

ActiveWorkbook.Sheets(1).PrintOut

Dans cet exemple, Excel va imprimer la première feuille (la plus à gauche) du classeur en cours.

Paramètres de l’instruction .PrintOut :

Nom Obligatoire/Facultatif Type de données Description
from Facultatif Variant Numéro de la page à partir de laquelle commencer l’impression. Si cet argument n’est pas défini, l’impression commence au début.
Vers Facultatif Variant Numéro de la dernière page à imprimer. Si cet argument n’est pas défini, l’impression se termine à la dernière page.
Copies Facultatif Variant Nombre de copies à imprimer. Si cet argument n’est pas défini, une seule copie est imprimée.
Preview Facultatif Variant True pour que Microsoft Excel affiche l’aperçu avant impression avant d’imprimer l’objet. False (ou non défini) pour imprimer l’objet immédiatement.
ActivePrinter Facultatif Variant Définit le nom de l’imprimante active.
PrintToFile Facultatif Variant True pour imprimer dans un fichier. Si PrToFileName n’est pas défini, Microsoft Excel invite l’utilisateur à entrer le nom du fichier de sortie.
Collate Facultatif Variant True pour assembler plusieurs copies.
PrToFileName Facultatif Variant Si PrintToFile est défini sur True, cet argument spécifie le nom du fichier dans lequel vous voulez imprimer.
IgnorePrintAreas Facultatif Variant True pour ignorer les zones d’impression et imprimer l’objet entier.
Source : https://msdn.microsoft.com/fr-fr/library/office/ff838253.aspx

A titre d’illustration, voici un programme qui n’imprime que les feuilles de calcul du classeur en cours qui répondent à un critère déterminé. Petit raffinement complémentaire, ce programme change la couleur des onglets imprimés pour les identifier visuellement.

Sub Traite_OngletsNonVides()
    Dim i As Integer
    Const CelluleATester = "F28"

    With ActiveWorkbook
        For i = 1 To .Sheets.Count - 1
            With .Sheets(i)
                If .Range(CelluleATester).Value <> 0 Then
                    With .Tab
                        .Color = 5296274
                        .TintAndShade = 0
                    End With
                    .PrintOut Copies:=2
                Else:
                    With .Tab
                        .ThemeColor = xlThemeColorAccent6
                        .TintAndShade = 0.799981688894314
                    End With
                End If
            End With
        Next i
    End With
End Sub

Pour résumer, le programme passe en revue toutes les feuilles de calcul du classeur en cours (ActiveWorkbook) à l’aide de la boucle compteur For… To… Next (sauf la dernière, d’où le -1) : si le contenu de la cellule F28 (constante CelluleATester) est différent de 0 (zéro), l’onglet est coloré en vert et la feuille est imprimée (.PrintOut) en deux exemplaires (Copie:=2). Ceci fait, le programme passe à la feuille suivante (Next).

Il ne reste plus qu’à sauvegarder le classeur et à affecter la macro à un bouton de commande.

Approfondir le sujet : Programmer en VBA / Initiation au langage Basic / Créez votre premier programme VBA avec l’enregistreur de macros

Share Button
The following two tabs change content below.
Après seize années passées en cabinet d’expertise-comptable et de commissariat aux comptes (où j’ai exercé comme expert-comptable et chef de mission audit), j’ai pris le poste de directeur comptable d’un groupe de distribution automobile en novembre 2014. Au cours de ma carrière, j’ai acquis une expérience significative en audit et en exploitation des systèmes d’information (analyse de données, automatisation des tâches, programmation informatique) au service de la production des comptes annuels et consolidés. C’est cette expérience personnelle et ma passion pour l’informatique que je partage sur ce blog. Mon CV / Réalisations personnelles et projets informatiques / Ma collection / Me contacter

2 commentaires

  1. Pingback: 10 ans – Audit & Systèmes d'Information

  2. Pingback: Meilleurs voeux pour 2022 - Audit & Systèmes d'Information

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.