Cet article a pour but de montrer comment afficher un repère dans l'onglet d'un contrôle
contenant un résultat de requête.
Même s'il contient un peu de code, il s'adresse à tout public.
Commentez ♪
Personnalisez l'affichage des onglets dans vos formulaires Access par BALLAT Jean
I - Introduction..............................................................................................................................................................3
II - Le cahier des charges........................................................................................................................................... 3
III - Les tables..............................................................................................................................................................3
IV - Le formulaire de consultation............................................................................................................................... 4
IV-A - La liste déroulante....................................................................................................................................... 4
IV-A-1 - Étape 1 : Sélection du type de la source des données......................................................................4
IV-A-2 - Étape 2 : Choisir la table source........................................................................................................ 4
IV-A-3 - Étape 3 : Choisir les champs sources de la liste déroulante..............................................................5
IV-A-4 - Étape 4 : Choisir les clés de tri.......................................................................................................... 5
IV-A-5 - Étape 5 : Modifier la largeur de colonne............................................................................................ 5
IV-A-6 - Étape 6 : Changer la légende de la liste............................................................................................ 5
IV-A-7 - Que s'est-il passé au niveau du contrôle ?........................................................................................ 5
IV-A-8 - Modifier le nom de notre contrôle liste déroulante............................................................................. 6
IV-A-9 - Concaténation des deux champs....................................................................................................... 6
IV-A-9-a - Définition..................................................................................................................................... 6
IV-A-9-b - Étape 1 : Afficher la requête source de la liste.......................................................................... 7
IV-A-9-c - Étape 2 : Modifier la structure de la requête..............................................................................7
IV-A-9-d - Étape 3 : Modifier les propriétés de la liste déroulante..............................................................7
IV-B - Les sous-formulaires par catégorie............................................................................................................. 8
IV-B-1 - Création de la requête source............................................................................................................ 8
IV-B-2 - Création du sous-formulaire................................................................................................................8
IV-B-3 - Modifier les propriétés du formulaire.................................................................................................. 8
IV-C - L'insertion des sous-formulaires..................................................................................................................9
IV-C-1 - Implantation du contrôle Onglet..........................................................................................................9
IV-C-2 - Implantation du sous-formulaire dans le contrôle Onglet................................................................. 10
IV-D - Le code d'affichage des repères...............................................................................................................11
IV-D-1 - À l'ouverture du formulaire............................................................................................................... 11
IV-D-2 - Après sélection d'un auteur.............................................................................................................. 11
IV-D-2-a - Déclaration des variables.........................................................................................................12
IV-D-2-b - Initialisation des variables........................................................................................................ 12
IV-D-2-c - Traitement................................................................................................................................. 12
IV-D-2-c-i - Exécution des requêtes.................................................................................................... 13
IV-D-2-c-ii - Récupération du nombre d'enregistrements.................................................................... 13
IV-D-2-c-iii - Affichage des images...................................................................................................... 13
IV-D-2-c-iv - Fermeture et libération des RecordSet........................................................................... 13
IV-D-2-d - Intégralité de la procédure....................................................................................................... 14
V - Conclusion........................................................................................................................................................... 15
VI - Remerciements................................................................................................................................................... 15
VII - Téléchargement................................................................................................................................................. 15
-2-
Copyright ® 2009 Jean BALLAT. 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.
https://jeannot45.developpez.com/articles/access/afficherreperes/
Personnalisez l'affichage des onglets dans vos formulaires Access par BALLAT Jean
I - Introduction
L'utilisation du contrôle d'onglet est souvent très intéressante lorsqu'on a besoin d'afficher beaucoup d'informations
sur un formulaire. Hormis l'organisation des champs à afficher par thème afin d'alléger l'interface, celui-ci permet
aussi d'organiser l'affichage du résultat d'une requête concernant plusieurs thèmes différents.
À partir de là, comment savoir dans quel onglet la requête retourne des informations ?
Quelle galère pour l'utilisateur, s'il doit cliquer sur chaque onglet afin de voir si un enregistrement est renvoyé pour
un thème donné.
L'objectif de ce petit article est donc de montrer comment afficher un repère dans le ou les onglets qui contiennent
une information répondant au critère posé.
Afin de prendre en main la base et les tables qui entrent en jeu, vous trouverez ci-dessous le modèle relationnel.
-3-
Copyright ® 2009 Jean BALLAT. 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.
https://jeannot45.developpez.com/articles/access/afficherreperes/
Personnalisez l'affichage des onglets dans vos formulaires Access par BALLAT Jean
IV - Le formulaire de consultation
Le formulaire se compose donc d'une liste déroulante qui nous permettra de sélectionner un auteur et d'un contrôle
d'onglets contenant les sous-formulaires (tous identiques, un par catégorie de lecteur) affichant les résultats des
différentes requêtes.
Cette liste déroulante est basée sur une requête qui récupère les données de la table T_Auteur.
Pour les débutants, nous allons reprendre les différentes étapes de la construction de la liste, puis nous allons
contrôler les différentes propriétés modifiées et enfin nous allons intervenir directement dans le contenu de la source
afin d'afficher le nom et le prénom de l'auteur concaténés comme demandé dans le cahier des charges.
Choix « Je veux que la liste déroulante recherche… » : la liste sera dynamique (fonction
du contenu de la table source) ;
Choix…« Je taperai les valeurs … » : liste statique, la mise à jour de la liste devra passer par
une séquence de code (voir dans la F.A.Q : Ajouter une valeur dans une liste).
Lors de cette étape, il nous faut choisir la table source de notre liste
déroulante.
Choisissez la table « T_Auteur » puis cliquez sur Suivant.
-4-
Copyright ® 2009 Jean BALLAT. 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.
https://jeannot45.developpez.com/articles/access/afficherreperes/
Personnalisez l'affichage des onglets dans vos formulaires Access par BALLAT Jean
Lors de la création de notre liste déroulante, tout en suivant les différentes étapes de la création, Access a modifié
les propriétés de notre contrôle.
Passons en revue les modifications.
-5-
Copyright ® 2009 Jean BALLAT. 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.
https://jeannot45.developpez.com/articles/access/afficherreperes/
Personnalisez l'affichage des onglets dans vos formulaires Access par BALLAT Jean
En affichant la fenêtre des propriétés (clic droit sur le contrôle puis clic sur
Propriétés), on trouvera deux onglets concernés par les modifications.
1) L'onglet Données :
1) Origine Source : propriété renseignée lors de la première étape ;
2) Contenu : propriété renseignée lors des étapes 2 et 3.
Représente une syntaxe SQL générée lors de la sélection de la table et
des champs à afficher dans la liste ;
3) Colonne liée : propriété renseignée par défaut à 1.
Représente la colonne de la requête contenant le champ dont la valeur
sera stockée dans la liste après sélection d'une ligne.
2) L'onglet Format :
1) Nombre de colonnes : propriété renseignée lors du choix des champs
(Étape 3).
Indique le nombre de champs contenus dans la requête (masqués ou
non) ;
2) Largeur des colonnes : propriété renseignée lors de l'étape 5.
On peut remarquer une largeur à 0 cm. Cette colonne fait partie de la
requête, mais est masquée à l'affichage.
IV-A-9-a - Définition
La concaténation est une opération permettant la juxtaposition de deux expressions alpha ou numérique. Le résultat
sera une expression de type texte.
L'opérateur à utiliser : &
Exemples :
bon & jour -> bonjour
1 & 2 -> 12
La modification du contenu de la liste (donc de la syntaxe SQL générée automatiquement par ACCESS) peut se faire
en direct dans la propriété correspondante ou par l'intermédiaire de l'assistant requête.
J'opte pour cette seconde solution, plus simple pour les débutants.
-6-
Copyright ® 2009 Jean BALLAT. 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.
https://jeannot45.developpez.com/articles/access/afficherreperes/
Personnalisez l'affichage des onglets dans vos formulaires Access par BALLAT Jean
Pour afficher notre requête, il nous faut passer par la fenêtre des
propriétés :
- cliquez droit sur la liste déroulante puis cliquez Propriétés ;
- cliquez sur l'onglet Données.
Nous voici à pied d'œuvre. Dans l'image ci-contre j'ai placé deux repères :
1) cliquez dans la ligne Contenu.
2) cliquez sur le bouton avec les points de suspension afin d'afficher
la fenêtre de création de requête.
2) C'est dans cette fenêtre que nous allons intervenir pour modifier le
contenu de la liste.
Les modifications de la structure de la requête étant terminées, il suffit de fermer l'interface et répondre par l'affirmative
à la demande de sauvegarde des modifications de la syntaxe SQL. De retour à la fenêtre des Propriétés, validez
la nouvelle syntaxe en faisant Entrée.
Nous mettons un espace entre guillemets afin de séparer le nom et le prénom lors de la
concaténation.
Remarquez que les dimensions de colonnes sont indiquées en cm. Il est inutile de saisir cette
unité, Access l'ajoute automatiquement.
-7-
Copyright ® 2009 Jean BALLAT. 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.
https://jeannot45.developpez.com/articles/access/afficherreperes/
Personnalisez l'affichage des onglets dans vos formulaires Access par BALLAT Jean
Voilà, nous en avons terminé avec notre liste déroulante, vous pouvez fermer votre formulaire et l'enregistrer sous
le nom de F_Consultation. Nous allons maintenant créer les différents sous-formulaires que nous insèrerons dans
un contrôle à onglets.
Afin de simplifier la mise en forme, l'affichage des sous-formulaires sera de type feuille de données.
Les trois sous-formulaires étant identiques, on pourra procéder à une copie de l'objet et seul le critère de sélection
dans la requête source sera à modifier.
-8-
Copyright ® 2009 Jean BALLAT. 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.
https://jeannot45.developpez.com/articles/access/afficherreperes/
Personnalisez l'affichage des onglets dans vos formulaires Access par BALLAT Jean
-9-
Copyright ® 2009 Jean BALLAT. 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.
https://jeannot45.developpez.com/articles/access/afficherreperes/
Personnalisez l'affichage des onglets dans vos formulaires Access par BALLAT Jean
L'insertion d'un sous-formulaire dans un contrôle d'onglet est une opération simple.
- Activez l'onglet qui doit recevoir le sous-formulaire.
- Suivant la version :
Antérieures à 2007 : affichez la fenêtre base de données (F11) puis cliquez maintenu sur le nom du sous-formulaire ;
Version 2007 : cliquez maintenu sur le nom du sous-formulaire affiché dans le volet de gauche.
Glissez dans le sous-formulaire. Lorsque le cadre noir apparaît, lâchez la souris.
Maintenant, il nous faut relier le formulaire principal et le sous-formulaire.
Pour cela, affichez la fenêtre des Propriétés :
- cliquez sur l'onglet Données ;
- modifiez les deux propriétés ci-dessous :
- Champs pères : saisir cboAuteur (nom de la liste déroulante);
- Champs Fils : saisir code_auteur (champ présent dans la requête source du sous-formulaire).
L'implantation est terminée. Il suffit de renouveler ces opérations sur les deux autres onglets
avec les deux autres sous-formulaires sans oublier de modifier les propriétés.
- 10 -
Copyright ® 2009 Jean BALLAT. 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.
https://jeannot45.developpez.com/articles/access/afficherreperes/
Personnalisez l'affichage des onglets dans vos formulaires Access par BALLAT Jean
Nous sommes dans l'éditeur de VBA (interface VBE : Visual Basic Editor). C'est ici que nous allons saisir les lignes
de code permettant d'implanter les images à l'ouverture du formulaire. Le curseur étant placé entre deux lignes
présaisies :
Pour avoir de plus amples informations sur la gestion des images dans une base de données,
je vous conseille la lecture du tuto de Caféine : Gestion des images et des photos.
Ce code concerne la liste déroulante. Chaque fois que je choisis un nouvel auteur, les sous-formulaires se mettent
à jour grâce au lien champ père/Champ fils, mais je ne sais pas qui contient des enregistrements.
Nous allons écrire une procédure qui va calculer le nombre d'enregistrements récupérés par chaque requête source
des sous-formulaires.
Cette procédure sera placée sur l'évènement Après MAJ de la liste déroulante.
Affichez les propriétés de la liste déroulante et cliquez sur l'onglet Évènements. Positionnez-vous dans l'évènement
Après MAJ et choisissez Procédure évènementielle puis cliquez sur les points de suspension. (Idem que ci-dessus
pour la procédure sur l'ouverture du formulaire.)
La procédure se divise en plusieurs parties :
1) Déclaration des variables ;
2) Initialisation des variables ;
3) Traitement.
- 11 -
Copyright ® 2009 Jean BALLAT. 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.
https://jeannot45.developpez.com/articles/access/afficherreperes/
Personnalisez l'affichage des onglets dans vos formulaires Access par BALLAT Jean
Nous allons exécuter en arrière-plan les requêtes sources des sous-formulaires. Pour cela nous aurons besoin de
zones de travail (dites variables en programmation).
' Création de la clause de condition avec récupération de la valeur stockée dans la liste
déroulante (Concaténation)
strWhereEnfant = "WHERE T_Categorie.code_categorie = 1 AND T_Auteur.code_Auteur = " &
Me.cboAuteur
' Concaténation de la requête de base et de la clause WHERE
strEnfant = strRequete & strWhereEnfant & ";"
' Création de la clause de condition avec récupération de la valeur stockée dans la liste
déroulante (Concaténation)
strWhereAdo = "WHERE T_Categorie.code_categorie = 2 AND T_Auteur.code_Auteur = " & Me.cboAuteur
' Concaténation de la requête de base et de la clause WHERE
strAdo = strRequete & strWhereAdo & ";"
' Création de la clause de condition avec récupération de la valeur stockée dans la liste
déroulante (Concaténation)
strWhereAdulte = "WHERE T_Categorie.code_categorie = 3 AND T_Auteur.code_Auteur = " &
Me.cboAuteur
' Concaténation de la requête de base et de la clause WHERE
strAdulte = strRequete & strWhereAdulte & ";"
IV-D-2-c - Traitement
Les éléments pour faire le traitement sont prêts. Celui-ci se déroule en quatre temps :
1) Exécution des requêtes ;
- 12 -
Copyright ® 2009 Jean BALLAT. 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.
https://jeannot45.developpez.com/articles/access/afficherreperes/
Personnalisez l'affichage des onglets dans vos formulaires Access par BALLAT Jean
Cet appel évite de réécrire plusieurs fois les mêmes instructions. Cette procédure est écrite
à la suite des autres procédures évènementielles.
- 13 -
Copyright ® 2009 Jean BALLAT. 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.
https://jeannot45.developpez.com/articles/access/afficherreperes/
Personnalisez l'affichage des onglets dans vos formulaires Access par BALLAT Jean
' Traitement
'----------------
' exécution des requêtes
Set rsEnfant = MaBase.OpenRecordset(strEnfant)
Set rsAdo = MaBase.OpenRecordset(strAdo)
Set rsAdulte = MaBase.OpenRecordset(strAdulte)
- 14 -
Copyright ® 2009 Jean BALLAT. 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.
https://jeannot45.developpez.com/articles/access/afficherreperes/
Personnalisez l'affichage des onglets dans vos formulaires Access par BALLAT Jean
V - Conclusion
L'utilisation du contrôle Onglet est évidente dans la création des interfaces contenant beaucoup d'informations.
J'espère que cette petite application vous ouvrira de nouveaux horizons dans la création de vos futures interfaces.
VI - Remerciements
Je voudrais remercier l'ensemble de l'équipe DVP qui fait un travail énorme, qui a fait de Développez.com ce qu'il
est aujourd'hui et qui nous tire toujours vers le haut.
Merci également à Arkham46, Philippe Jochmans, User et Tofalu pour leurs précieux conseils.
Merci à Chtulus et Claude Leloup pour leur relecture attentive.
VII - Téléchargement
- 15 -
Copyright ® 2009 Jean BALLAT. 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.
https://jeannot45.developpez.com/articles/access/afficherreperes/