Lorsque vous créez un état avec des groupes, il est bien utile de répéter les titres de section. On peut également, avec un doigt de VBA, ajouter (Suite) aux titres de section.
Vous pouvez télécharger la base de données que j'ai créée à votre intention, contenant l'état sus-mentionné afin de pouvoir suivre l'exercice :
Voici le résultat final que nous aimerions obtenir :
A la base, nous disposons d'une table T_Celebrite, dont voici un extrait :
Il s'agit de sortir un état, sur 3 colonnes, avec la liste de tous les noms des célébrités, ainsi que leur domaine d'activité, groupé, justement, par leur domaine.
Créez un état, sans assistant, basé sur T_Celebrite.
Supprimez l'entête et le pied de page avec le menu Affichage/Entête et pied de page.
Triez et groupez par Domaine, comme ceci :
Faites glisser le champ Domaine dans l'en-tête de groupe Domaine, et le champ NomCelebrite dans la section Détail, comme ceci :
Supprimez les étiquettes des deux champs, resserrez les sections de manière à ce que ça ne prenne pas trop de place, mettez un fond jaune, et en gras le champ Domaine, et décalez un tout petit peu NomCelebrite vers la droite, comme ceci :
Allez dans le menu Fichier/Mise en page, cliquez sur l'onglet colonnes, et mettez ces indications :
Quand vous cliquez sur la petite loupe "Aperçu avant impression, ça donne ceci, grosso-modo :
Vous constatez que les gens qui font de la Chanson commencent dans la première colonne, et se terminent dans la 2ème colonne. Pour le Cinéma, ça commence dans la 2ème colonne, ça continue dans la 3ème, et ça se termine même sur la page suivante.
Afin d'avoir un résultat plus lisible, une bonne idée serait de répéter le titre de section "Domaine" en haut de chaque colonne. Dans notre exemple, ce serait bien de réécrire "Chanson" au dessus de Morrisson, et "Cinéma" au dessus de Stallone.
Pour ce faire, double-cliquez sur l'en-tête de groupe Domaine afin defaire apparaître les propriétés. Dans l'onglet Format, mettez "Répoéter Section" à Oui, comme ceci :
Ce qui va donner le résultat suivant :
C'est maintenant qu'il va s'agit de mettre un peu les mains dans Visual Basic, car il n'y a simplement pas d'otpion dans les propriétés de l'en-tête de groupe qui permette d'écrire (suite) en haut des colonnes, quand il s'agit de la suite de la colonne précédente... ce qui serait pourtant bien pratique.. C'est comme ça...
Double-cliquez sur l'en-tête de groupe Domaine pour obtenir les propriétés, choisissez l'onglet Evénement, Cliquez dans la zone Sur Impression, et cliquez sur les 3 petits points à droite :
Choisissez Générateur de Code et OK :
Vous arrivez dans Visual Basic :
Copiez-y le code suivant :
Static VARDomaine
If VARDomaine = Domaine Then
EDIDomaine = Domaine & " (suite)"
Else
EDIDomaine = Domaine
End If
VARDomaine = Domaine
Comme ceci :
Si vous ne comprenez pas grand chose à ce code, c'est normal... A moins que vous soyez vous-même programmeur, c'est assez ardu. Ce didacticiel est pas censé vous expliquer en détail le fonctionnement de ce code, mais en grous, à chaque fois qu'il va imprimer l'en-tête de groupe Domaine, il va regarder si ce n'est pas par hasard le même en-tête que celui qu'il a précédemment imprimé. Si c'est le même, ça veut dire qu'il est dans le cas d'une nouvelle colonne ou page, et dans ce cas, il doit écrire le nom du domaine suivi de "(Suite)".
Fermez Visual Basic, comme ceci :
Et voila le travail :