Lorsque vous travaillez avec des données relationnelles (données associées qui sont stockées dans des tables distinctes), vous devez souvent afficher plusieurs tables ou requêtes sur le même formulaire. Vous pouvez, par exemple, décider d’afficher en même temps des données client depuis une table et des informations concernant les commandes client depuis une autre table. Les sous-formulaires sont un outil pratique qui permet d’y parvenir, sachant qu’Access propose plusieurs méthodes vous permettant de créer des sous-formulaires rapidement.
En savoir plus sur les sous-formulaires
Un sous-formulaire est un formulaire inséré dans un autre formulaire. Le formulaire de base est appelé formulaire principal, tandis que le formulaire qui est inclus dans le formulaire est appelé sous-formulaire. Une combinaison formulaire/sous-formulaire est parfois appelée formulaire hiérarchique ou formulaire père/fils.
Les sous-formulaires sont particulièrement efficaces lorsque vous voulez afficher des données de tables ou de requêtes ayant une relation un-à-plusieurs. Une relation un-à-plusieurs est une association entre deux tables dans laquelle la valeur de clé primaire de chaque enregistrement dans la table primaire correspond à la valeur du ou des champs correspondants de nombreux enregistrements de la table liée. Par exemple, vous pouvez créer un formulaire qui affiche les données des employés et contient un sous-formulaire qui affiche les commandes de chaque employé. Les données de la table Employees sont le côté «un» de la relation. Les données de la table commandes sont le côté «plusieurs» de la relation: chaque employé peut avoir plusieurs commandes.
1. Le formulaire principal affiche les données du côté « un » de la relation.
2. Le sous-formulaire affiche les données du côté « plusieurs » de la relation.
Dans ce type de formulaire, le formulaire principal et le sous-formulaire sont liés, si bien que le sous-formulaire ne présente que les enregistrements associés à l’enregistrement actif du formulaire principal. Par exemple, lorsque le formulaire principal affiche les informations de Nancy Freehafer, le sous-formulaire affiche uniquement ses commandes. Si le formulaire et le sous-formulaire n’étaient pas liés, le sous-formulaire afficherait toutes les commandes, pas seulement celles de Nancy.
Le tableau suivant définit quelques termes relatifs aux sous-formulaires. Même si Access traite la plupart des détails liés à l’utilisation des procédures décrites dans cet article, il est utile de savoir ce qui se produit « en coulisses » pour apporter des modifications ultérieures.
Terme | Définition |
---|---|
Contrôle de sous-formulaire | Contrôle qui permet d’incorporer un formulaire dans un autre formulaire. Vous pouvez comparer le contrôle de sous-formulaire à une « vue » d’un autre objet de votre base de données, qu’il s’agisse d’un autre formulaire, d’une table ou d’une requête. Le contrôle de sous-formulaire possède des propriétés qui vous permettent de lier les données affichées dans le contrôle aux données du formulaire principal. |
Propriété Objet source | Propriété du contrôle de sous-formulaire qui indique l’objet qui s’affiche dans le contrôle. |
Feuille de données | Affichage simple de données sous forme de lignes et de colonnes, à la manière d’une feuille de calcul. Le contrôle de sous-formulaire affiche une feuille de données lorsque son objet source est une table ou une requête, ou encore un formulaire dont la propriété Affichage par défaut est définie sur Feuille de données. Dans ces cas, le sous-formulaire est parfois appelé feuille de données ou sous-feuille de données et non sous-formulaire. |
Propriété Lier les champs enfants | Propriété du contrôle de sous-formulaire qui indique le ou les champs du sous-formulaire qui lient le sous-formulaire au formulaire principal. |
Propriété Lier les champs pères | Propriété du contrôle de sous-formulaire qui indique le ou les champs du formulaire principal qui lient le formulaire principal au sous-formulaire. |
Remarques :
- Pour obtenir de meilleurs résultats, établissez des relations de table avant de suivre les procédures de cet article. Access peut ainsi créer automatiquement les liens entre les sous-formulaires et les formulaires principaux. Pour afficher, ajouter ou modifier les relations entre les tables de votre base de données, sous l’onglet Outils de base de données, dans le groupe Afficher/Masquer, cliquez sur Relations.
- Lorsqu’un contrôle de sous-formulaire a pour objet source un formulaire, il contient les champs que vous placez dans ce formulaire, et peut être affiché en tant que formulaire standard, formulaire continu ou feuille de données. Baser un sous-formulaire sur un objet de formulaire vous permet d’ajouter des champs calculés au sous-formulaire, par exemple, [Quantité] * [Prix unitaire].
- Vous pouvez insérer une feuille de données ou une vue croisée dynamique dans un formulaire en créant un contrôle de sous-formulaire dont l’objet source est une table ou une requête. Pour plus d’informations, voir la section plus bas Ajouter des données associées à un formulaire sans créer de sous-formulaire.
Créer ou ajouter un sous-formulaire
Utilisez le tableau suivant pour déterminer la procédure la plus adaptée à votre situation.
Scénario | Procédure recommandée |
---|---|
Vous souhaitez qu’Access crée à la fois un formulaire principal et un sous-formulaire, et lie le sous-formulaire au formulaire principal. | Créer un formulaire contenant un sous-formulaire à l’aide de l’Assistant Formulaire |
Vous souhaitez utiliser un formulaire existant en tant que formulaire principal, mais souhaitez qu’Access crée un nouveau formulaire et l’ajoute au formulaire principal. | Ajouter un ou plusieurs sous-formulaires à un formulaire existant à l’aide de l’Assistant Sous-formulaire |
Vous souhaitez utiliser un formulaire existant en tant que formulaire principal, et ajouter un ou plusieurs formulaires existants à ce formulaire en tant que sous-formulaires. | Créer un sous-formulaire en faisant glisser un formulaire sur un autre |
Créer un formulaire contenant un sous-formulaire à l’aide de l’Assistant Formulaire
Cette procédure permet de créer une combinaison formulaire/sous-formulaire à l’aide de l’Assistant Formulaire. C’est également le moyen le plus rapide de démarrer si vous n’avez pas déjà créé les formulaires que vous souhaitez utiliser en tant que formulaire principal ou sous-formulaire.
- Dans l’onglet Création, dans le groupe Formulaires, cliquez sur Assistant Formulaire.
- Dans la liste déroulante Tables/Requêtes de la première page de l’Assistant, sélectionnez une table ou une requête. Dans le cadre de cet exemple, pour créer un formulaire Employés qui présente les commandes de chaque employé dans un sous-formulaire, nous sélectionnerons Table : Employés (le côté « un » de la relation un-à-plusieurs).
Remarque : Peu importe la table ou la requête que vous choisissez en premier.
- Double-cliquez sur les champs de cette table ou requête que vous souhaitez inclure.
- Dans la même page de l’Assistant, sélectionnez une autre table ou requête dans la liste déroulante Tables/Requêtes. Pour cet exemple, nous sélectionneront la table Commandes (le côté « plusieurs » de la relation un-à-plusieurs).
- Double-cliquez sur les champs de cette table ou requête que vous souhaitez inclure.
- Lorsque vous cliquez sur Suivant, à supposer que vous ayez correctement configuré les relations avant de démarrer l’Assistant, celui-ci vous pose la question suivante : Comment souhaitez-vous afficher vos données ? (c’est-à-dire, en fonction de quelle table ou requête). Sélectionnez la table du côté « un » de la relation un-à-plusieurs. Dans le cadre de cet exemple, pour créer le formulaire Employés, nous cliquerons sur par employés. L’Assistant affiche une image réduite d’un formulaire. La page devrait ressembler à l’illustration suivante :
La zone dans la partie inférieure du diagramme du formulaire représente le sous-formulaire.
Remarque : Si l’Assistant ne vous demande pas Comment souhaitez-vous afficher vos données ?, cela signifie qu’Access n’a détecté aucune relation un-à-plusieurs entre les tables ou requêtes sélectionnées. L’Assistant se poursuivra, mais Access n’ajoutera pas de sous-formulaire au formulaire. Vous pourriez peut-être cliquer sur Annuler et examiner vos relations de table avant de continuer.
- En bas de la page de l’Assistant, sélectionnez Formulaire avec sous-formulaire(s), puis cliquez sur Suivant.
- Dans la page Quelle disposition souhaitez-vous pour votre sous-formulaire ?, cliquez sur l’option de disposition souhaitée, puis sur Suivant. Les deux styles disposent les données du sous-formulaire sous forme de lignes et de colonnes, mais la disposition tabulaire est plus personnalisable. Vous pouvez ajouter de la couleur, des graphiques et d’autres éléments de mise en forme, tandis qu’une feuille de données est plus compact, tout comme le mode Feuille de données d’une table.
- Dans la page suivante de l’Assistant, sélectionnez un style de mise en forme pour le formulaire, puis cliquez sur Suivant. Si vous avez choisi Tabulaire sur la page précédente, le style de mise en forme que vous sélectionnez sera également appliqué au sous-formulaire.
- À la dernière page de l’Assistant, entrez les titres des formulaires. Access nomme les formulaires en fonction des titres entrés et crée l’étiquette du sous-formulaire en fonction du titre attribué à celui-ci.
- Indiquez si vous souhaitez ouvrir le formulaire en mode Formulaire afin de pouvoir afficher ou entrer des données, ou en mode Création afin de pouvoir modifier sa structure, puis cliquez sur Terminer.Access crée deux formulaires : un pour le formulaire principal qui contient le contrôle de sous-formulaire et un pour le sous-formulaire proprement dit.
Ajouter un ou plusieurs sous-formulaires à un formulaire existant à l’aide de l’Assistant Sous-formulaire
Utilisez cette procédure pour ajouter un ou plusieurs sous-formulaires à un formulaire existant. Pour chaque sous-formulaire, vous pouvez décider de laisser Access créer un nouveau formulaire ou utiliser un formulaire existant comme sous-formulaire.
- Cliquez avec le bouton droit sur le formulaire existant dans le volet de navigation, puis cliquez sur Mode Création.
- Sous l’onglet Création, dans le groupe Contrôles, cliquez sur la flèche vers le bas pour afficher la galerie Contrôles, et vérifiez que Utiliser les Assistants Contrôle est sélectionné.
- Dans l’onglet Création, dans le groupe Contrôles, cliquez sur le bouton Sous-formulaire/Sous-état.
- Cliquez sur un emplacement du formulaire pour y placer le sous-formulaire.
- Suivez les instructions de l’Assistant.Quand vous cliquez sur Terminer, Access ajoute un contrôle de sous-formulaire à votre formulaire. Si vous décidez de laisser Access créer un nouveau formulaire pour le sous-formulaire au lieu d’utiliser un formulaire existant, Access crée le nouvel objet de formulaire et l’ajoute au volet de navigation.
Créer un sous-formulaire en faisant glisser un formulaire sur un autre
Utilisez cette procédure si vous souhaitez utiliser un formulaire existant comme formulaire principal, et ajouter un ou plusieurs formulaires existants à ce formulaire en tant que sous-formulaires.
- Dans le volet de navigation, cliquez avec le bouton droit sur le formulaire à utiliser comme formulaire principal, puis cliquez sur Mode Page.
- Faites glisser le formulaire à utiliser comme sous-formulaire du volet de navigation sur le formulaire principalAccess ajoute un contrôle de sous-formulaire au formulaire principal et lie le contrôle au formulaire que vous avez fait glisser du volet de navigation. Access tente également de lier le sous-formulaire au formulaire principal, en fonction des relations qui ont été définies dans votre base de données.
- Répétez cette étape pour ajouter d’éventuels sous-formulaires supplémentaires au formulaire principal.
- Pour vérifier que la liaison a réussi, sous l’onglet Accueil, dans le groupe Affichages, cliquez sur Affichage, sur Mode Formulaire, puis utilisez le sélecteur d’enregistrement du formulaire principal pour parcourir plusieurs enregistrements. Si le sous-formulaire est filtré correctement pour chaque employé, cela signifie que la procédure est terminée.
Si le test précédent ne fonctionne pas, cela signifie qu’Access n’a pas été en mesure de déterminer comment lier le sous-formulaire au formulaire principal, et que les propriétés Champs fils et Champs pères du contrôle de sous-formulaire sont vierges. Vous devez les définir manuellement en procédant comme suit :
- Dans le volet de navigation, cliquez avec le bouton droit sur le formulaire principal, puis cliquez sur Mode Création.
- Cliquez une fois sur le contrôle de sous-formulaire pour le sélectionner.
- Si le volet Office Feuille de propriétés n’est pas affiché, appuyez sur F4 pour l’afficher.
- Dans la feuille de propriétés, cliquez sur l’onglet Données.
- Cliquez sur le bouton créer en regard de la zone de propriété champs fils .La boîte de dialogue Éditeur de liens des champs des sous-formulaires s’affiche.
- Dans les listes déroulantes Champs pères et Champs fils, sélectionnez les champs auxquels vous souhaitez lier les formulaires, puis cliquez sur OK. Si vous hésitez quant aux champs à choisir, cliquez sur Suggérer pour qu’Access tente de déterminer les champs de liaison.
Conseil : Si vous ne voyez pas le champ que vous souhaitez utiliser pour lier les formulaires, vous devrez peut-être modifier la source d’enregistrement du formulaire père ou du formulaire fils pour s’assurer que le champ de liaison s’y trouve. Par exemple, si le formulaire est basé sur une requête, vous devez vous assurer que le champ de liaison est présent dans les résultats de la requête.
- Enregistrez le formulaire principal, passez en mode Formulaire, puis vérifiez que le formulaire fonctionne comme prévu.
Ouvrir un sous-formulaire dans une nouvelle fenêtre en mode Création
Si vous souhaitez apporter des modifications à un sous-formulaire pendant que vous travaillez sur son formulaire principal en mode Création, vous pouvez ouvrir le sous-formulaire dans sa propre fenêtre :
- Cliquez sur le sous-formulaire pour le sélectionner.
- Dans l’onglet Créer, dans le groupe Outils, cliquez sur Sous-formulaire dans une nouvelle fenêtre.
Changer l’affichage par défaut d’un sous-formulaire
Lorsque vous ajoutez un sous-formulaire à un formulaire, le contrôle de sous-formulaire/sous-état affiche le sous-formulaire en conformément à la propriété Affichage par défaut du sous-formulaire. Cette propriété peut être configurée avec les valeurs suivantes :
- Formulaire unique
- Formulaires continus
- Feuille de données
- Formulaire double affichage
Lorsque vous créez un sous-formulaire pour la première fois, cette propriété peut être configurée sur Formulaires continus ou peut-être Formulaire unique si vous voulez que le sous-formulaire s’affiche. Toutefois, si vous définissez la propriété Affichage par défaut d’un sous-formulaire sur Feuille de données, le sous-formulaire s’affiche alors sous forme de feuille de données sur le formulaire principal.
Pour configurer la propriété Affichage par défaut d’un sous-formulaire :
- Fermez tous les objets ouverts.
- Dans le volet de navigation, cliquez avec le bouton droit sur le sous-formulaire, puis cliquez sur Mode Création.
- Si la feuille de propriétés n’est pas affichée, appuyez sur F4 pour l’afficher.
- Dans la liste déroulante en haut de la feuille de propriétés, assurez-vous que Formulaire est sélectionné.
- Sous l’onglet Format de la feuille de propriétés, configurez la propriété Affichage par défaut pour l’affichage que vous souhaitez utiliser.
Remarque : Si l’affichage que vous voulez utiliser ne figure pas dans la liste, assurez-vous que le «autoriser… La propriété View de l’affichage est définie sur Oui. Par exemple, si vous souhaitez spécifier la feuille de données comme affichage par défaut du formulaire, assurez-vous que la propriété autoriser le mode feuille de données est définie sur Oui.
- Enregistrez et fermez le sous-formulaire, puis ouvrez le formulaire principal pour vérifier les résultats.
Ajouter des données associées à un formulaire sans créer de sous-formulaire
Il n’est pas toujours nécessaire de créer un objet de formulaire distinct pour afficher les données associées. Par exemple, si vous travaillez sur un formulaire en mode Page ou en mode Création et que vous faites glisser une table ou une requête à partir du volet de navigation sur le formulaire, Access crée un sous-formulaire/sous-état qui affiche les données de cet objet. La propriété Affichage par défaut de l’objet détermine la manière dont les données sont affichées. Elle est généralement définie sur Mode Feuille de données, mais vous pouvez également définir la propriété Affichage par défaut d’une table ou d’une requête sur Formulaire unique, Formulaire double affichage ou Formulaires continus, afin de vous offrir davantage de flexibilité dans l’affichage des données associées sur les formulaires.
Remarque : La modification de la propriété Affichage par défaut pour une table ou une requête détermine la manière dont elle est affichée à chaque fois qu’elle est ouverte, que vous l’ouvriez depuis le volet de navigation ou l’affichiez dans un contrôle de sous-formulaire/sous-état. La modification des paramètres d’affichage d’une table pouvant parfois semer la confusion à l’ouverture de la table depuis le volet de navigation, nous vous conseillons d’utiliser une requête au lieu d’une table pour cette procédure.