Aujourd'hui, je vous propose un tutoriel sur la gestion des sauts de page dans les fichiers Excel avec VBA. La possibilité d'automatiser l'insertion et la suppression des sauts de page va vraiment vous faciliter la vie. Car, on le sait tous, l'impression des documents Excel peut facilement tourner en une galère!
Prenons quelques exemples d'utilisation:
- il est possible d'insérer les sauts de page de manière dynamique – ainsi, si vos données à imprimer sont de taille différente, vous ne devez pas ajuster les sauts de page manuellement (ex. un jour le rapport à exporter/imprimer a 45 lignes, le lendemain 54…)
- si vous devez ajuster les sauts de page pour 40 pages manuellement, cela peut vite devenir long. En utilisant le code qui suit combiné à une itération (loop), rien de plus simple… Et rien de rapide! Vous éviterez également les erreurs de manipulation.
- à partir de Excel 2007, il est possible d'exporter des données en PDF. Avec l'automatisation des sauts de page, vous avez à votre disposition un puissant outil de publication.
Sommaire
- Insérer un saut de page avant la ligne spécifiée
- Insérer un saut de page avant la colonne spécifiée
- Supprimer un saut de page spécifié
- Supprimer tous les sauts de page manuels
- Multiples sauts de page via une itération (loop) en VBA
- Modifier l'affichage des sauts de page dans Excel
- Pour aller plus loin en VBA
Voici donc les codes VBA à utiliser pour les différentes manipulations des sauts de page dans Excel:
Insérer un saut de page avant la ligne spécifiée
1 |
Worksheets("MaFeuille").Rows(25).PageBreak = xlPageBreakManual |
Insérer un saut de page avant la colonne spécifiée
1 |
Worksheets("MaFeuille").Columns("E").PageBreak = xlPageBreakManual |
Il est également possible d'utiliser le numéro de colonne plutôt que son nom. Ceci peut s'avérer utile si vous voulez utiliser une itération (loop) ou si vous voulez modifier les sauts de page de manière dynamique.
1 |
Worksheets("MaFeuille").Columns(5).PageBreak = xlPageBreakManual |
Pourrait vous intéresser: Le code VBA pour convertir les noms de colonne en numéro et vice-versa
Supprimer un saut de page spécifié
Tout comme l'insertion des sauts de page, il est également possible d'automatiser via VBA leur suppression.
Pour supprimer un saut de page vertical en particulier, vous pouvez utiliser le code suivant:
1 |
Worksheets("MaFeuille").Columns("E").PageBreak = xlNone |
ou, si vous préférez, vous pouvez utiliser le numéro de colonne:
1 |
Worksheets("MaFeuille").Columns(5).PageBreak = xlNone |
Pour supprimer un saut de page horizontal en particulier, utilisez le numéro de ligne qui suit ce saut de page. Voici l'exemple:
1 |
Worksheets("MaFeuille").Rows(10).PageBreak = xlNone |
Supprimer tous les sauts de page manuels
Pour supprimer tous les sauts de page insérés manuellement, vous pouvez utiliser le code suivant:
1 |
Worksheets("MaFeuille").Cells.PageBreak = xlNone |
Multiples sauts de page via une itération (loop) en VBA
Et c'est ici que cela devient vraiment intéressant! Pour préparer votre fichier pour l'impression, il suffit de déterminer combien de lignes et colonnes devrait couvrir une page et de combien de pages vous avez besoin.
L'exemple suivant divise la Feuille "MaFeuille" du Classeur Excel en 20 pages (deux colonnes de 10 pages chacune). Chaque page couvre 35 lignes et 6 colonnes.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Sub ExempleMultiplesSautsDePage() ' par Excel-Malin.com ( https://excel-malin.com/ ) Dim ColonnesParPage, LignesParPage, ColonnesPages, NombreDePages As Long Dim SautVertical, SautHorizontal As Long Dim PagesParColonne As Double On Error GoTo ExempleErreur 'paramètres 'paramètres d'une page ColonnesParPage = 6 'changez selon vos besoins LignesParPage = 35 'changez selon vos besoins 'paramètres de la Feuille ColonnesPages = 2 'changez selon vos besoins NombreDePages = 20 'changez selon vos besoins PagesParColonne = NombreDePages / ColonnesPages For SautVertical = 1 To ColonnesPages Worksheets("MaFeuille").Columns(SautVertical * ColonnesParPage + 1).PageBreak = xlPageBreakManual Next SautVertical For SautHorizontal = 1 To PagesParColonne Worksheets("MaFeuille").Rows(SautHorizontal * LignesParPage + 1).PageBreak = xlPageBreakManual Next SautHorizontal Exit Sub ExempleErreur: MsgBox "Une erreur est survenue..." End Sub |
Cet exemple donnera donc ceci comme résultat:
Modifier l'affichage des sauts de page dans Excel
Vous pouvez utiliser VBA également pour changer l'affichage de vos fichiers. Voici comment basculer entre le mode "normal" et le mode "affichage des sauts de page":
Afficher les sauts de page sur l'écran
1 |
ActiveWindow.View = xlPageBreakPreview |
Retourner à l'affichage normal sur l'écran
1 |
ActiveWindow.View = xlNormalView |
Plus sur les sauts de page en Excel: Aide officielle de Microsoft: sauts de page en Excel
Pour aller plus loin en VBA
Voici quelques autres tutoriels qui pourraient rendre votre travail avec Excel/VBA plus efficace…
- Liste de toutes les fonctions VBA
- Envoyer un email avec VBA à partir d'Excel (un "must"!)
- Manipulation des fichiers avec VBA
- Exporter un fichier Excel comme PDF
- Fonction RECHERCHEV en VBA
- Calculer la SOMME en VBA
- Débloquer VBA dans les fichiers en provenance d'internet
4 commentaires sur “VBA: sauts de page en Excel (insérer, supprimer,…)”
Excellent : simple, clair, complet, bravo !
Amélioration proposée : ajouter les déclarations de variables pour un code plus sûr.
Merci Pat!
Concernant votre proposition: en effet, parfois je me laisse emporter par mon style un peu trop "droit au but" 😉
Je vais y remédier.
Bien à vous, Martin
C'est fait… Le code résistera dorénavant au
Option Explicit
🙂Merci beaucoup. pour votre aide.