Cliquez ici pour avoir accès à la méthode pour bien démarrer sur Access
rapidement et sans être un expert en informatique
Tutoriel réalisé avec Access 2013
Un sous-formulaire est un formulaire inséré dans un autre formulaire. Il permet d’afficher les données de plusieurs tables ou requêtes au même endroit et en même temps.
Pour ce tutoriel, je vais utiliser la base de données utilisée pour la création de relations, car il est important que les tables des formulaires que je vais créer soient reliées. Pour cela, je vous invite à voir ou revoir l’article À quoi servent les relations entre les tables Access et comment les créer.
Pour mon exemple, je souhaiterais avoir un formulaire qui me permettrait d’afficher pour chaque client les factures qui lui ont été établies. Ce qui correspond à ce que l’on a pu voir précédemment lorsque l’on avait créé les relations et que nous sommes retournés dans la Table Clients.
La différence est, qu’en utilisant un sous-formulaire, je peux afficher plus de données et de manière plus agréable.
Pour commencer, je vais créer mon formulaire principal qui sera basé sur ma Table Clients. Je ne vais pas rentrer dans le détail, car j’ai déjà publié un tutoriel sur la création d’un formulaire Access, je vous invite donc à le lire ou relire.
Je crée mon formulaire en utilisant l’Assistant Formulaire dans l’onglet Créer. Je choisis la Table Clients et je conserve tous mes champs. Je choisis la disposition Colonne simple.
Je réorganise ensuite la présentation pour pouvoir avoir mon sous-formulaire juste en dessous de mon formulaire principal et pour lui appliquer une mise en page plus agréable.
Voici le formulaire principal mis en page :
Maintenant, il ne me reste plus qu’à insérer mon sous-formulaire.
Pour cela, j’agrandis la zone Détail en Mode création en faisant glisser le Pied de formulaire
.
Puis, dans l’onglet Création, je fais dérouler les options de Contrôles :
Je clique ensuite sur Sous-formulaire/Sous-état .
Comme dans l’article sur la création de formulaires, lorsque j’insérais une image, mon curseur se transforme en + avec une image de formulaire. Je peux donc soit dessiner le cadre de mon sous-formulaire soit faire un simple clic à l’endroit souhaité.
Au moment où je relâche mon clic, une boîte de dialogue apparaît : l’Assistant Sous-formulaire.
Je laisse cochée Utiliser les tables et les requêtes existantes puisque je n’ai pas créé d’autre formulaire, puis je clique sur Suivant.
Je sélectionne ma Table Factures puisque mon formulaire principal contient déjà les informations des clients et je fais passer tous mes champs à droite sauf N° client qui ne sert qu’aux relations et qui ne me serait d’aucune utilité pour ce sous-formulaire. Je clique donc une fois sur puis je me place sur N° client et je clique sur
. Je clique sur Suivant.
Comme j’ai créé une relation entre mes deux tables, je n’ai pas besoin de définir les champs effectuant le lien moi-même, je laisse cochée Choisir à partir d’une liste et Afficher Factures pour chaque enregistrement en Clients utilisant N° client. Je clique sur Suivant.
À cette dernière étape, je peux attribuer un nom à mon sous-formulaire, je laisse Factures sous-formulaire et clique sur Terminer.
J’ai bien mon sous-formulaire sous mon formulaire principal. Je peux retourner en mode formulaire soit en cliquant sur le bouton Mode formulaire soit sur la flèche en dessous puis Mode formulaire
pour visualiser la mise en page.
Je peux, en retournant sur le Mode création , modifier la mise en page comme un formulaire classique.
Je peux déjà supprimer le titre du sous-formulaire en le sélectionnant et en appuyant sur la touche Suppr. Je déplace le sous-formulaire en cliquant une fois dessus, puis, lorsque le curseur se transforme en croix fléchée, je glisse l’encadré vers l’endroit souhaité. Ensuite, je l’agrandis en l’étirant avec la double flèche sur les points situés au milieu de chaque côté, car en Mode formulaire on ne voyait pas toutes les données d’un seul coup et dans ce cas nous sommes obligés de naviguer avec la barre de défilement, ce qui fait perdre les avantages de la création de ce sous-formulaire : voir toutes les données en un clin d’œil.
En Mode formulaire, je peux réduire automatiquement les dimensions des champs en double-cliquant sur les lignes les séparant. Mais je peux également cliquer droit sur un des champs, puis Largeur de champ et entrer une largeur. Pour attribuer la même largeur à chaque champ, il suffit de tous les sélectionner avec la flèche noire et de cliquer sur Largeur de champ
. Je peux aussi centrer certains champs en retournant dans le Mode création en cliquant sur la flèche de l’Affichage
puis Mode création
.
Sachez que vous pouvez, en Mode formulaire, faire afficher le sous-formulaire avec la même présentation que le formulaire principal. Pour cela, cliquez droit sur le sous-formulaire, puis Sous-formulaire > Formulaire .
Pour mon exemple, je ne trouve pas cette présentation utile, car elle ne me permet pas de voir toutes les factures en une seule fois et je suis obligée de faire défiler les factures comme pour les clients.
Je peux repasser en mode Feuille de données en recliquant droit sur le sous-formulaire, toujours en Mode formulaire, puis Sous-formulaire > Feuille de données .
Je peux maintenant, créer un nouveau client et lui établir une facture ou établir une facture à un client existant.
Lorsque je referme mon formulaire, on me demande si je souhaite enregistrer les modifications du formulaire et du sous-formulaire, je clique sur Oui.
Mon sous-formulaire apparaît dans la liste des Formulaires et, lorsque je clique dessus, il est en mode feuille de données. Cependant, je ne l’utiliserais pas, car n’ayant pas ajouté mon champ N° client, je pourrais ajouter des factures, mais pas indiquer à quel client elle correspond.
Téléchargez « Créer un sous-formulaire Access » au format PDF
Oh…madame… Je t’aime et je vous remercie beaucoup : *
Vous êtes le meilleur professeur pour moi…je vous remercie… Merci.
Je vous ai aimée et j’ai adoré vos leçons 🙂
Bonjour,
Dans le cas où nous désirions ajouter, dans le formulaire clients, des factures déjà enregistrées dans la table facture, mais pas encore reliées à un client précis grâce aux tables, c’est impossible, car nous avons numéro auto pour N° de facture en fait ? Notre seule possibilité ici est d’ajouter de nouvelles factures qui iront directement s’enregistrer dans la table facture finalement ?
Merci d’avance si vous avez le temps de répondre.
Bonjour,
Dans ce cas, il faudrait attribuer les factures aux clients via les tables et non les formulaires de saisie, pour ensuite, utiliser ces derniers pour les nouvelles factures.
Je vois, merci beaucoup !
Peut-on faire le total des factures dans un sous-formulaire et reproduire ce total dans la table client ?
Probablement avec les mots magiques 😉
Bonjour,
Tout d’abord, un grand merci pour vos tutos ! J’ai réussi à commencer à créer une base telle que nous l’imaginions.
Une question concernant cette partie :
« Sachez que vous pouvez, en Mode formulaire, faire afficher le sous-formulaire avec la même présentation que le formulaire principal. Pour cela, cliquez droit sur le sous-formulaire, puis Sous-formulaire > Formulaire. »
Cela donne exactement ce que nous voulons, mais la modification ne s’enregistre pas et, dès que nous retournons sur le formulaire, nous devons refaire la manipulation. Comme nous avons 6 sous-formulaires sur notre formulaire, nous devons le faire 6 fois. Y a-t-il un moyen d’enregistrer cette manipulation ?
Je vous remercie,
Laura
Bonjour Laura,
Il faut ouvrir chacun des sous-formulaires indépendamment et modifier l’affichage dans la feuille de propriétés, à l’onglet Format, vous avez une ligne Affichage par défaut (« Formulaire unique » devrait être ce que vous recherchez). Enregistrez et, une fois que vous avez fait ça pour chaque formulaire, vous pourrez relancer le formulaire principal.
Bonjour à tous,
J’ai besoin d’aide en Access 2010.
J’ai fait une table employés, une 2ème équipement. Je voudrais, sur le formulaire d’enregistrement des employés, quand un employé a un assistant que je puisse cliquer sur assistant et s’affiche des zones de saisies du matricule, nom, prénom, téléphone.
Merci de la compréhension.
Bonjour,
Je ne suis pas sûre d’avoir compris, mais si un employé peut avoir plusieurs assistants, créez un sous-formulaire des assistants dans le formulaire de saisie des employés.
Bonjour Madame,
Je ne sais comment vous remercier assez !
Je suis débutant, j’ai pratiquement 2 semaines de formation et, grâce à vous, je peux me vanter d’atteindre 70 % de connaissances.
Cependant, Madame, j’utilise Access 2016 et il m’arrive, après avoir créé le sous-formulaire S/F_Date_Factures, lorsque je me lance à la création du S/F_Factures, l’assistant de création ne s’affiche pas et j’ai, à la place, le rectangle et son étiquette portant le nom File26, que faire ?
Merci pour votre assistance !
Bonjour Ken,
En cliquant sur la liste déroulante des contrôles (là où vous pouvez ajouter un sous-formulaire), regardez si Utiliser les Assistants contrôle est coché, sinon, cochez-le.
Bonjour Madame,
Je cherche la formule me permettant d’enregistrer la valeur dans la table client au cas où je souhaite faire une nouvelle commande et le nouveau client n’est pas dans la table client.
Je vous remercie vivement pour votre aide.
Bonjour,
Lorsqu’un sous-formulaire est créé dans un formulaire client, le lien entre le client et la facture est obligatoire donc vous ne pouvez pas créer une facture sans client.
Ok, merci beaucoup pour tout, mais on pourrait avoir une formule qui dit que lorsque le client n’existe pas alors on ouvre le formulaire client ?
Placez directement le formulaire des factures en sous-formulaire de celui des clients. Si vous ne trouvez pas le client, vous le créez, ce sera plus simple que de partir dans du VBA.
Je vous remercie vivement pour votre tuto. Une fois encore merci à vous.
Bonjour Madame,
Je souhaite avoir une formule ou une table me permettant de regrouper toutes les entrées de stock : un champ qui gère les entrées, un autre champ qui gère les sorties.
Bonjour Zoumana,
C’est le sujet d’une future formation.
Ok.
Bonjour,
Merci infiniment pour vos conseils, mais, effectivement, je rencontre le même problème et la case est cochée… Que faire ? Merci beaucoup.
Bonjour,
Vous avez fait ce que je vous ai conseillé sur YouTube ?