Comment créer une zone d’impression dynamique et intelligente sur Excel
Aujourd’hui, nous allons découvrir un ensemble de techniques qui vont permettre de rendre la zone d’impression d’une feuille de calcul totalement dynamique, afin que celle-ci puisse permettre d’imprimer un tableau en particulier tout en s’adaptant en fonction du contenu de celui-ci.
Téléchargement
Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :
Tutoriel Vidéo
1. Qu’est-ce que la zone d’impression d’une feuille de calcul
La zone d’impression d’une feuille de calcul correspond aux cellules que nous souhaitons voir apparaître sur les feuilles éditées.
Par défaut, lorsque nous laissons Excel s’occuper lui-même de définir cette zone d’impression, il va chercher à imprimer toutes les cellules, et lorsque l’impression dépasse la simple feuille de calculs, alors celle-ci sera répartie sur plusieurs pages.
Nous pouvons ainsi retrouver la zone d’impression, ainsi que la mise en page appliquée par Excel en affichant l’aperçu avant impression (Menu Fichier > Imprimer, ou le raccourci clavier [Ctrl]+[p]) :
Dans notre exemple, nous pouvons alors nous rendre compte que la feuille de calcul n’est pas suffisamment grande pour contenir l’ensemble des cellules à imprimer.
Nous pouvons également visionner la zone d’impression directement depuis la feuille de calcul en cliquant sur le bouton « Aperçu des sauts de page », présent en bas à droite dans la barre d’état d’Excel.
L’apparence de la feuille va alors changer afin de visionner rapidement la zone d’impression, représentée par l’encadrement bleu :
Les cellules exclues de l’impression sont quant à elle grisées sur la feuille de calculs :
Enfin, nous pouvons retrouver les limites de chaque page imprimée avec les bordures en pointillés bleu :
Si vous voulez en savoir davantage sur la gestion des zones d’impressions dans Excel, vous pouvez consulter l’article « 6 ASTUCES POUR IMPRIMER DES TABLEAUX EXCEL QUI DÉCHIRENT », qui est justement dédié à cette notion.
2. Définir une zone d’impression manuelle
Revenons maitnenant sur notre feuille de calcul, au sein de laquelle nous allons souhaiter imprimer uniquement le tableau contenant les données relatives aux inscrits d’un service web, sans tenir compte des cellules se trouvant au-dessus.
Pour cela, nous allons devoir définir une zone d’impression personnalisée de la manière suivante :
Nous commençons par sélectionner les cellules du tableau (à la souris, ou en sélectionnant une des cellules du tableau et en appuyant sur les touches [Ctrl]+[*]) :
Ensuite, pour définir la zone d’impression en fonction des cellules sélectionnées, nous nous rendons dans le menu Mise en page du ruban, dans le groupe qui porte également le nom de Mise en page, nous déroulons le menu ZoneImpr afin de choisir l’option « Définir » :
Et à ce moment-là, comme vous pourrez le constater la zone d’impression va se réduire pour ne prendre en compte que les cellules du tableau :
Pour nous en assurer, nous pouvons également utiliser l’aperçu avant impression :
Les cellules sont maintenant affichées sur une seule page en hauteur, il suffit alors de réduire légèrement la largeur des colonnes pour afficher l’ensemble du tableau sur une seule page (pour cela, nous plaçons le curseur de la souris sur les en-têtes de colonnes, là où sont affichés les lettres de colonnes, puis nous faisons glisser le curseur e la souris vers la gauche) :
En revanche, cette méthode ne permet que de définir une zone d’impression statique, ce qui signifie que si nous insérons de nouvelles données à la suite du tableau, celles-ci ne seront pas incluses dans l’impression :
Pour régler ce problème, nous allons devoir mettre en place un système de zone d’impression dynamique !
3. Définir une zone d’impression dynamique
Pour comprendre comment fonctionne une zone d’impression, nous pouvons dérouler le menu de sélection des noms de cellules pour constater qu’Excel y a inclus un nouveau nom « Zone_d_impression » :
Il suffit alors de sélectionner celui-ci pour que toutes les cellules incluses dans cette zone soient sélectionnées :
Ce qui nous confirme alors que la dernière ligne du tableau n’en fait malheureusement pas partie…
Nous pouvons ensuite nous rendre dans le gestionnaire des noms d’Excel pour modifier directement les cellules incluses dans la zone d’impression.
Pour cela, nous nous rendons dans le menu Formules > Gestionnaire de noms :
Nous y retrouvons alors la zone nommée « Zone_d_impression » que nous avons découverte juste avant :
Nous pouvons la modifier en modifiant les coordonnées de la plage et en validant la modification en appuyant sur la coche verte :
La nouvelle ligne est maintenant incluse dans la zone d’impression.
Mais bien entendu, nous allons souhaiter que celle modification soit réalisée de manière automatique, dès lors que nous allons insérer un nouvel élément dans le tableau.
Pour cela, nous allons utiliser la fonction DECALER() qui permet comme son nom l’indique de décaler les coordonnées d’une cellule ou d’une plage de plusieurs cellules très simplement.
Cette fonction attend cinq arguments :
- L’argument Réf correspond à la cellule ou la plage de cellule de départ, à partir de laquelle nous allons souhaiter effectuer le décalage,
- L’argument Lignes correspond au nombre de lignes à décaler,
- L’argument Colonnes correspond au nombre de colonnes à décaler
- L’argument Hauteur correspond au nombre de colonnes que nous souhaitons inclure dans la plage de cellules retournées,
- L’argument Ligne correspond au nombre de lignes que nous souhaitons inclure dans la plage de cellules retournées
Pour définir les coordonnées de la plage des cellules de la zone d’impression, nous allons donc partir des cellules d’en-tête du tableau (les cellules A7 à F7).
Nous n’allons effectuer aucun décalage, les arguments Lignes et Colonnes vont donc être à zéro.
En revanche, c’est l’argument hauteur qui va nous intéresser, car celui-ci va permettre d’agrandir la plage initiale pour tenir compte du nombre de ligne du tableau !
Sachant que pour obtenir ce nombre de lignes, nous allons encore devoir utiliser une fonction EXCEL, qui est la fonction NBVAL(), qui retourne le nombre de cellules non vides passées en argument (nous allons y insérer une grande plage de cellule, par exemple les cellules A7 à A200).
La fonction est alors la suivante :
=DECALER($A$7:$F$7;0;0;NBVAL($A$7:$A$200))
Bien entendu, Excel va alors retourner les coordonnées d’une plage de cellules, qu’il n’est pas possible d’afficher simplement dans une cellule, et c’est pourquoi le résultat retourné est une erreur :
Mais il suffit de copier la cellule pour l’insérer la zone d’impression pour constater que maintenant toutes les cellules du tableau vont être intégrées dans la zone d’impression :
Ici, nous avons défini directement la largeur du tableau dans la plage de référence (A7:F7 pour six cellules de large), mais nous pourrions également calculer ce nombre de cellules automatiquement en partant de la cellule A7 uniquement et en définissant la largeur en fonction du nombre de cellules présentes sur la ligne 7 :
=DECALER(excelformation.fr!$A$7;0;0;NBVAL(excelformation.fr!$A$7:$A$200);NBVAL(excelformation.fr!$A$7:$Z$7))
Pour le moment, cela ne change rien à la feuille de calcul, mais il suffit d’ajouter une ligne en dessous, ou à droite pour que celles-ci s’intègrent à la zone d’impression :
Par contre, ces nouvelles entrées doivent impérativement être accolées au tableau, sous peine de nuire au bon fonctionnement de la zone d’impression :
En effet, si nous insérons trois lignes en dessous du tableau, EXCEL va alors agrandir la zone d’impression de trois lignes, sans pour autant s’arrêter après les trois lignes concernées…
Heureusement, il existe une solution que nous allons maintenant découvrir.
4. Définir une zone d’impression dynamique intelligente
L’astuce pour définir une zone d’impression dynamique intelligente consiste à transformer le tableau en un tableau e données Excel !
Un tableau de données (ou table de données) sur Excel permet de mettre en forme facilement les données et de pouvoir les exploiter très simplement en ajoutant un grand nombre de fonctionnalités :
- Mises-en-forme enrichie (en-tête, couleur de ligne alternée, …),
- Trie automatique des données,
- Filtre automatique des données,
- Ajout de totaux,
- Création de plages de cellules nommées et dynamiques, …
Vous trouverez toutes les informations sur la mise en place et l’utilisation de cet outil très puissant en consultant l’article « Les tableaux de données d'Excel ».
Pour créer un tableau de données, nous commençons par sélectionner une des cellules appartenant à la plage des cellules à transformer :
Puis, nous nous rendons dans le menu Insertion > Tableau :
À moment-là, Excel nous affiche une fenêtre pour que nous puissions contrôler la plage des cellules du tableau.
Nous vérifions alors que toutes les cellules y sont effectivement incluses, notamment si le tableau contient des lignes vides.
Étant donné que les colonnes contiennent un titre, nous cochons la case « Mon tableau comporte des en-têtes », puis nous validons en appuyant sur le bouton [OK]
La première chose à faire une fois le tableau crée va être de lui donner un nom afin de pouvoir l’identifier facilement lorsque nous en aurons besoin.
Pour cela, nous sélectionnons à nouveau une des cellules qui le compose, ce qui permet de faire apparaître le menu Création dans le ruban :
Tout à gauche, nous allons retrouver la zone Nom du Tableau, que nous allons pouvoir personnaliser :
Nous l’appelons par exemple « monTableau ».
Toutes nos cellules sont maintenant incluses dans le tableau de données :
Mais pour autant, la zone d’impression n’en est pas encore impactée !
Pour que la zone d’impression correspond à toutes les cellules du tableau, nous sélectionnons celui-ci (avec la souris ou la combinaison de touches [Ctrl]+[a] deux fois de suite pour y inclure les en-têtes), puis nous redéfinissons la zone d’impression (menu Mise en page > ZoneImpr > Définir) :
Si nous insérons de nouvelles lignes non accolées au tableau, celles-ci ne seront toujours pas intégrées dans la zone d’impression :
Par contre, il suffit d’agrandir les limites du tableau pour régler le problème :