Mettre en place un contrôle Onglet
Comment réorganiser les objets d’un formulaire dans un contrôle Onglet ?
Le contrôle Onglet (ou « boîte à onglets ») est pratique pour organiser les informations d’un formulaire en pages (vous connaissez la boîte de dialogue Format / Cellule, dans Excel, par exemple). Il y a juste quelques petites choses à savoir pour l’utiliser de manière correcte…
Ce qu’il ne faut pas faire
Si vous souhaitez transférer des objets existants dans un onglet, il est tentant d’aller au plus simple, c’est-à-dire :
- Ouvrir le formulaire en mode Création.
- Y placer un contrôle Onglet.
- Glisser à la souris les objets sur l’un des onglets.
… mais en faisant ça, vous « posez » seulement vos objets par-dessus le contrôle Onglet, vous ne les « rangez » pas dans une page précise. Le symptôme : cliquez sur chaque page du contrôle Onglet, vous constatez que les objets restent toujours à l’écran. Pas bon 🙂
Ce qu’il faut faire
L’astuce consiste à utiliser le Couper/Coller :
- Ouvrez votre formulaire en mode Création.
- Cliquez sur l’icône Contrôle Onglet de la boîte à outils.
- Cliquez sur le formulaire pour placer la « boîte à onglets ».
- Sélectionnez les objets qui doivent être rangés dans une page de la boîte.
- Cliquez sur l’icône Couper (ou utilisez n’importe quel autre équivalent !).
- Sélectionnez la page d’arrivée, sur le contrôle Onglet (en cliquant sur un onglet, pas sur l’intérieur de la page).
- Cliquez sur l’icône Coller.
Si ce n’est pas clair, cliquez sur le screencast associé à ce billet pour voir une vidéo de démo !
RFU > A quoi vont servir les données des onglets qui reprennent les infos du formulaire principal ?
Et à quoi servent les champs indépendants du formulaire principal, précisément ?
Bonjour, suite à une modification conséquente de ma BD, j’ai du utiliser des onglets. J’ai donc un formulaire principale, avec des champs indépendants. J’ai 3 autres onglets qui reprennent les champs du FormPrincipal. Ce que je ne sais pas, c’est comment mettre à jour les 3 formulaires quand je change une donnée du FormPrincipal. Merci de me dire ou je mets le code et comment le composer. MERCI encore une fois.
mohamed > De quelle version d’Access s’agit-il ?
Sinon, est-ce que c’est bien le contrôle Onglet qui pose problème, ou d’autres objets autour ? La zone Détail est-elle correctement dimensionnée ?
j’ai un pb de positinnement des onglets, quand je passe d’une page d’onglet à une autre la position du formulaire principal change, ce qui est dérangeant
Verlos > Quelle serait l’application pratique ?
Je me dis qu’un formulaire est généralement créé par le concepteur de la base et n’évolue pas ensuite dynamiquement (sauf intervention du concepteur). On peut afficher / masquer des champs, mais ce n’est pas nécessairement pratique d’en rajouter, voire d’en copier/coller. D’autant qu’en MDE/ACCDE, c’est impossible, les formulaires et les états étant verrouillés.
Peut-être pour une création d’Assistant ?
Il semble que la méthode vaille pour les groupes d’options (pour rajouter une option)…
Mais comment faire ce couper coller en vba ?
ticabri > Le 1000 est l’indice qui numérote les champs, et qui ne fait qu’augmenter, indépendamment du nombre d’objets. Donc il n’est pas significatif.
Par contre, si tu as tant d’objets, est-ce que la structure des tables est optimale ? En général, les données se répartissent sur plusieurs tables, ce qui donne des formulaires avec sous-formulaires, et qui évite d’atteindre la limite de champs.
Bonjour,
j’ai créé un long formulaire et j’arrive enfin maintenant à la « mise en page » avec les onglets. Or, je rencontre un problème au niveau des contrôles avec l’affichage du message d’erreur (j’en suis au 1/3 de ce que le formulaire doit contenir):
« Microsoft Office Access ne peut pas créer plus de contrôles sur ce formulaire ».
La limite pour access 2003 est à 754 et je ne pense pas atteindre les 200.
Pourtant, si j’efface le dernier contrôle et que je le crée de nouveau, le chiffre indiqué est supérieur à 1000.
Est-il alors indispensable (et possible) de créer un autre formulaire qui s’ouvrirait à la fin du remplissage de celui-ci?
Merci d’avance pour votre aide.
caro > Exact. Ou plus précisément : le code VBA est conservé, mais l’association entre les objets coupés/collés et les bouts de code VBA est perdue. C’est un vrai défaut (un bug ?).
La solution consiste à reprendre les objets impactés (par exemple un bouton qui aurait « perdu son clic »), à faire apparaître les propriétés de ces objets (onglet Evénement), et à redéfinir la mention «
Procédure événementielle
» dans l’événement. Ca suffit pour rétablir la liaison.Bonjour, n’importe quelle procédure évènement(après mise à jour, clic, etc…) qui serait présente sur le formulaire et que l’on place sur l’onglet grâce à un couper/coller, est perdue.
> Jean-Pierre : A priori, je dirais que les onglets servent juste à la répartition des données, ils n’ont pas d’effet sur le code. Si j’ai suivi la question, un sous-formulaire activé par code est quand même manipulable ensuite (les onglets ne devraient pas l’affecter), ses champs sont accessibles et manipulables par le formulaire principal. Est-ce que je peux avoir un exemple de scénario qui ne marcherait pas, ou un bout de code (pour préciser) ? Merci.
Bonjour,
La pratique que vous décrivez comporte un inconvénient majeur.
Dans le cas d’un formulaire comportant des sous formulaires activés par du code événementiels, les controles de ces sous_Forms ne sont pas reconnus. A moins que j’ai raté quelque chose.
Merci de me répondre.