Détecter le changement de page dans un contrôle Onglet
Je voudrais du code VB qui réagirait lorsque l’utilisateur change de page, dans un contrôle Onglet. Pour ça, j’ai programmé l’événement
Sur clic
du contrôle Onglet. Mais ça ne marche pas, pourquoi ?
Le contrôle Onglet et ses pages
L’événement Sur clic
est un événement associé à une page, pas à la zone d’onglets complète. Il ne se produit que si on clique à l’intérieur de la page, et pas lorsqu’on change d’onglet. Ceci est normal 🙂
Ce qu’il vous faut en réalité est l’événement Sur changement
du contrôle Onglet complet. Vous l’obtenez en cliquant sur le contrôle Onglet et en vérifiant que c’est bien le pourtour de l’objet qui est sélectionné, pas l’intérieur d’une page. D’ailleurs, la fenêtre des propriétés doit mentionner « Contrôle Onglet » et non pas « Page« .
Identifier la page cliquée
Mais si l’événement Sur changement n’est plus associé à une page, comment savoir quelle page a été cliquée ?
L’objet Onglet a une propriété Value qui donne tout simplement le numéro de la page active (la 1ère page étant numérotée 0, histoire de…). Essayez donc l’événement qui suit :
1 2 3 |
Private Sub CtlTab0_Change() MsgBox "Changement de page : " & CtlTab0.Value End Sub |
A chaque changement de page, une boîte vous donne maintenant le numéro de la page active. A vous d’ajouter le code nécessaire pour réagir à ce changement de page…
Griffouiris > Le sous-formulaire est lui-même affiché de quelle manière ? Mode Formulaire (ou Colonne simple), Mode tabulaire, Mode Feuille de données ?
Parce que dans les cas 2 et 3, il y a aussi le problème de la ligne où il faut se positionner…
Bonjour, Comment on fait par VBA pour atteindre une zone texte d’un sous-formulaire qui est lui même dans une page d’un onglet? (j’ai access 2007)
Tu veux dire que tu as un formulaire, avec à l’intérieur un sous-formulaire, lequel contient un contrôle Onglets ?
Bonjour
Pourrais-tu stp m’expliquer comment référencier en VBA un champs se trouvant dans un Onglet d’un sous formulaire ?
Merci