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
Derniers articles parBenoît RIVIERE (voir tous)
- Lancer l’exécution d’un script Python à partir d’une macro VBA - lundi 9 septembre 2024
- Open Data : quoi de neuf ? - lundi 2 septembre 2024
- Auditsi cité dans le podcast Marketing du cabinet comptable - mercredi 21 août 2024
- IA générative : aide à la rédaction de prompts efficaces - samedi 17 août 2024
- S’initier à l’analyse de données et l’automatisation des tâches - dimanche 11 août 2024
Pingback: 10 ans – Audit & Systèmes d'Information
Pingback: Meilleurs voeux pour 2022 - Audit & Systèmes d'Information