Les états : en-têtes et pieds de page génériques

Fabrice Constans

Si la mise en page des états est un challenge, l'ajout d'en-têtes et de pieds de page est répétitif et peut à la longue devenir rébarbatif. Dans ce tutoriel, nous allons créer des entêtes et pieds de page génériques.

Commentez cet article : Commentez

- Titre : Les états : en-têtes et pieds de page génériques

- Auteur : Fabrice Constans

- Parution : 15 juin 2010

- Mise à jour : 15 juin 2010

- Licence : Copyright ® 2010 Fabrice CONSTANS. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- I-A. Prérequis

- II. La méthode

- III. L'en-tête de page

- III-A. En-tête interactive

- IV. Utilisation de notre en-tête.

- IV-A. Plus loin avec l'en-tête

- IV-B. Appliquer à un autre état

- V. Le pied de page

- V-A. Côté code

- V-B. Utiliser le pied de page

- VI. Conclusion

- VII. Remerciements

I - Introduction

Quel intérêt de créer des en-têtes génériques, me direz-vous ? Accroître sa productivité et gagner en uniformité sont déjà deux points séduisants. Des états en tous points identiques donnent l'impression d'un professionnalisme et d'une régularité que même certains progiciels n'atteignent pas. Dans ce tutoriel, nous allons mettre en pratique une méthode simple pour créer une régularité et une harmonie dans les états.

I-A - Prérequis

Pour notre exemple, j'ai choisi d'utiliser la base Northwind (Ex. « Les Comptoirs »). Vous pouvez utiliser votre propre application pour travailler sur ce tutoriel. J'utilise la version 2007 d'Access, mais vous pouvez réaliser la même chose à partir de la version 2000.

II - La méthode

Pour réaliser notre objectif nous allons créer deux états, l'un contenant l'en-tête et l'autre le pied de page. Nous inclurons ces deux états dans un troisième qui affichera les données.

III - L'en-tête de page

Commencez par ouvrir un état en mode création. La zone d'en-tête et de pied de page étant inutiles, pour les enlever, allez dans le bandeau Réorganiser et cliquez sur le bouton ci-dessous.

Nous allons rajouter des cadres (rouge et gris) ainsi qu'un trait blanc.

Contrôle

Propriété

Valeur

Cadre1

Couleur fond

#ED1C24

Style bordure

Transparent

Trait

Couleur bordure

#FFFFFF

Epaisseur bordure

2 pt

Cadre2

Couleur fond

#C7C5BC

Style bordure

Transparent

Veillez à bien nommer le cadre et la ligne comme spécifié dans la première colonne du tableau.

Veillez à laisser un espace à gauche pour insérer un logo.

Voici à quoi cela devrait ressembler.

Occupons-nous maintenant du logo et du titre général. Pour cela ouvrez le formulaire nommé « Interne » en mode création et faites un copier/coller du logo et du titre « Les Comptoirs ».

Repérez l'étiquette nommée « Auto_Title0 » et entrez le mot « Titre » puis ajoutez une zone de texte contenant la date du jour.

Contrôle

Propriété

Valeur

Auto_Title0

Légende

Titre

Style fond

#Transparent

Police

Calibri

Taille de police

18

Epaisseur police

Gras

Italique

Oui

Contrôle

Propriété

Valeur

ztDate

Source contrôle

=Maintenant()

Format

Date, complet

Police

Calibri

Taille de police

9

Aligner texte

Droite

Voilà ce que vous obtenez avec un minimum de mise en page.

Enregistrez cet état sous le nom « Entete ».

Passons à l'interactivité.

III-A - En-tête interactive

L'interactivité permet d'utiliser des informations issues de l'état principal que l'en-tête va récupérer automatiquement.

En mode création, cliquez sur la barre Détail pour obtenir ses propriétés. Sur l'événement Au formatage créez une procédure événementielle.

Le code précédent affecte à la propriété Légende de « Auto_Title0 » le contenu de la légende de l'étiquette Auto_Title0 situé dans l'état parent.

L'état parent est celui dans lequel l'en-tête sera placé. FormatCount=1 évite de l'effectuer de trop nombreuses fois.

Vous pouvez sauvegarder l'état et le fermer.

IV - Utilisation de notre en-tête.

Ouvrez l'état « Annuaire des employés » en mode création.

Sélectionnez la date et l'heure et supprimez-les.

Sélectionnez le titre et la zone de texte contenant le filtre et changez la propriété visible.

Contrôle

Propriété

Valeur

Auto_Title0

Visible

Non

txtReportFilter

Visible

Non

Faites glisser l'état « Entete » de la liste de gauche dans l'entête d'état. Supprimez l'étiquette du sous-formulaire.

Remontez le sous-formulaire pour qu'il soit collé en haut à gauche. Sélectionnez-le pour modifier ses propriétés.

Contrôle

Propriété

Valeur

Entete

Style bordure

Transparent

Enregistrez l'état et lancez un aperçu avant impression.

Voilà le résultat !

Le titre est bien hérité de l'état.

IV-A - Plus loin avec l'en-tête

Passons dans l'en-tête et ajoutons un contrôle étiquette que nous nommerons etFiltre.

Contrôle

Propriété

Valeur

EtFiltre

Police

Arial

Taille de police

8

Couleur de texte

#7F001B

Dans le code, ajoutez la ligne suivante.

EtFiltre va prendre la valeur contenue dans la zone de texte « txtReportFilter » de l'état parent.

Sauvegardez et fermez les états ouverts.

IV-B - Appliquer à un autre état

Ouvrez l'état « Etat ventes annuel » et insérez l'en-tête comme indiqué précédemment.

Mettez la bordure du sous-état « Entete » en transparent, supprimez les deux contrôles  « txtDate » et « txtTime » et mettez les propriétés Visible du contrôle « Auto_Title0 ».

Cet état diffère légèrement du précédent, il faut donc faire une adaptation dans celui-ci.

Contrôle

Propriété

Valeur

txtReportTimeFrame

Nom

txtReportFilter

Visible

Non

Sauvegardez et faites un aperçu avant impression.

Mission réussie !

V - Le pied de page

Pour le pied de page, rien de complexe. Faites un copier/coller du sous-état « Entete » sous le nom « PiedDePage ». Nous aurons ainsi la plupart des éléments déjà prêts. Ouvrez-le en mode création.

Supprimez le logo et les contrôles « Etfiltre » et « ZtDate ». Étendez les deux cadres, la ligne et l'étiquette « Auto_Title0 » vers la gauche pour qu'ils soient collés au bord gauche du sous-état.

Modifiez les contrôles restants comme indiqué dans le tableau ci-dessous.

Contrôle

Propriété

Valeur

Auto_Title0

Nom

EtPage

Police

Calibri

Taille de police

10

Italique

Oui

Epaisseur de police

Gras

Insérez le contrôle suivant :

Contrôle

Propriété

Valeur

EtNom

Légende

Nom

Police

Calibri

Taille de police

8

Aligner le texte

Droite

Après un placement judicieux, vous devriez obtenir ceci.

V-A - Côté code

Le code ressemble au précédent.

On affecte à l'étiquette nom le titre « Auto_Title0 » du parent comme pour l'en-tête et l'étiquette « EtPage » reçoit une expression qui doit indiquer le N° de la page sur le nombre de pages total.

Me.Parent.Page est la page courante.

Me.Parent.Pages est le nombre de pages total.

On Error Resume next évite de retourner une erreur si l'un des composants de Parent n'existait pas. Cela permet également de faire des prévisualisations de l'en-tête seule pour sa mise au point.

Enregistrez et fermez.

V-B - Utiliser le pied de page

Rien de plus simple que d'utiliser le pied de page. Commencez par ouvrir les deux états précédents « Annuaire des clients » et « Etat ventes annuel ».

Supprimez dans le pied de page le contrôle « txtPages » et faites-y glisser le pied de page.

Supprimez la petite étiquette créée en même temps que le sous-état et enlevez la bordure.

Contrôle

Propriété

Valeur

PiedDePage

Style bordure

Transparent

Faites un aperçu pour voir le résultat. Normalement le pied de page devrait être tronqué. Mettez la même hauteur pour le contrôle que pour la zone Détail du sous-formulaire « PiedDePage ».

VI - Conclusion

Comme vous l'avez constaté, au travers de ce tutoriel, il est facile de créer des états ayant une présentation homogène. Visual Basic pour Application crée une excellente interaction entre états et sous-états. Cela contribue très largement à la réussite de cette technique.

VII - Remerciements

Je remercie Jacques-jean pour ses corrections toujours judicieuses. Philippe Jochmans, JpCheck et Ormonth pour leurs remarques constructives et Caro-Line pour son coup de louche.