Masquer ou afficher une page d'un contrôle Onglet
Comment masquer ou afficher une page précise d’un contrôle Onglet ?
Solution
- Sur votre formulaire ouvert en mode Création, construisez – sans assistant – un bouton de commande.
- Faites apparaître les propriétés de ce bouton, et nommez-le par exemple
btnPage
. - Si nécessaire, faites apparaître aussi les propriétés du contrôle Onglet, et nommez-le
tabTest
. - Programmez l’événement
Sur clic
du bouton de commande en tapant :
1 |
Forms![Nom du formulaire]!tabTest.Pages(0).Visible = False |
Quelques précisions
- Les pages du contrôle Onglet sont numérotées de
0
àn-1
. Ceci a donc pour effet de masquer la première page. Remplacez bien sûrFalse
parTrue
pour faire apparaître une page.
- Vous pouvez également remplacer l’indice numérique par le nom de la page (propriété
Nom
et non propriétéLégende
). Par exemple :
1 |
Forms![Nom du formulaire]!tabTest.Pages("Coordonnées").Visible = True |
- Autre variante : les pages peuvent être identifiées comme objet à part entière. On peut donc encore écrire :
1 |
Forms![Nom du formulaire]![Coordonnées].Visible = True |
- Si les lignes de code ci-dessus agissent sur des onglets du formulaire dans lequel elles sont tapées (euh… c’est clair, ça ?), vous pouvez simplifier en remplaçant tous les
Forms![Nom du formulaire]
! parMe
. Par exemple :
1 |
Me.tabTest.Pages("Coordonnées").Visible = True |
Prézi > Tu veux afficher une seule page à la fois ?
Bonjour à tous.
Comment faut-il procéder pour qu’au démarrage d’une application faite d’un contrôle onglets comportant plusieurs pages, on puisse activer une seule page et masquer toutes les autres et pouvoir par la suite activer ou désactiver la page que l’on veut?
Merci d’avance.
@Bientôt.
AnneMa > C’est normal, il ne s’agit pas vraiment d’une personnalisation, mais d’une action dynamique, ponctuelle. Ce qui n’est pas fait en mode Création n’est pas conservé, c’est le comportement normal d’Access.
Merci ! Ça marche… par contre j’ai un autre problème. Lorsque j’enregistre le formulaire la personnalisation ne s’enregistre pas. I.e si le formualire pour l’individu A contient l’onglet X masqué … je l’enregistre et quand je l’ouvre de nouveau l’onglet est revenu…
Est-ce que c’est normal ? Merci
AnneMa > Par exemple, pour que le bouton marche en balance (une fois on masque, une fois on affiche une page), on peut transformer le code VBA en :
En d’autres termes, on dit à Access que la propriété Visible reçoit sa valeur inverse (
Not ...Visible
). SiVisible est True
, elle passe àFalse
, et inversement.Bonjour
Merci pour le code, il est très utile. Par contre, comment je peux faire pour que l’onglet s’affiche de nouveau si la personne s’est trompé. Je débute dans le VBA .
Merci beaucoup de votre aide.
daniel15 > Il s’agit du
Click
du bouton, qui lui-même règle la propriétéValue
du contrôle Onglets. Mais on est d’accord : pas duClick
du contrôle Onglet ou de l’une de ses pages.Bonjour,
Je me suis mal exprimé. En VBA, je dois aller sur une autre page. Donc pas de onClick.
J’ai trouvé simplement l’ordre SetFocus !!!
Mais je garde votre ordre qui pourra me servir.
Merci
daniel
daniel15> Il suffit dans ce cas d’écrire, dans l’événement
Sur clic
du bouton :1 étant le numéro de la page à activer, la première démarrant à 0.
Bonjour,
Effectivement. Je pensais pouvoir résoudre mon problème ainsi. Sans effet.
En Vba, la première page de l’onglet contient plusieurs boutons. J’aimerais que le clic sur l’un d’eux affiche la deuxième pag qui affiche une partie d’une table au moyen d’un ordre SQL.
Et je n’y arrive pas. Avez-vous une réponse possible ?
Merci beaucoup
daniel15 > Toutes les solutions proposées dans l’article marchent dans Access 2010.
Est-ce qu’il pourrait y avoir une erreur de syntaxe (ou une erreur sur un nom d’objet) dans ton code VBA ? Et est-ce que l’exécution de code VBA est autorisée dans ta base ?
Mais on ne parle peut-être pas de la même chose : dans cet article, il est question de masquer des onglets. Tu veux plutôt activer une page ?
Bonjour,
J’ai essayé dans access2010 cette solution. Mais elle ne marche pas. Que dois-je modifier ou ajouter pour que je puisse changer d’onglets en VBA ?
Merci. Daniel15