Contrairement à un contrôle MultiPage, un TabStrip n'a pas ses propres contrôles. Sa gestion est donc relativement simple.
Dans ce billet qui en précède d'autres sur le même sujet, je présente une fonction générique qui crée dynamiquement des onglets et j'évoquerai quelques propriétés telles que la taille des onglets (Tab)
Editeur VBE vs VBA
Nombre d'onglets : Lorsque l'on insère un objet TabStrip dans un UserForm, il y a deux onglets par défaut
Ajouter ou supprimer des onglets : Pour ajouter, supprimer ou renommer un onglet, il suffit de le sélectionner et faire un clic droit
Ajouter ou supprimer des onglets : Pour ajouter, supprimer ou renommer un onglet, il suffit de le sélectionner et faire un clic droit
Quelques propriétés et méthodes
Parmi les quelques propriétés intéressantes de l'objet TabStrip à connaître lorsque l'on crée dynamiquement des onglets (la collection Tabs) on retiendra MultiRow, TabFixedHeight, TabFixedWidth, Value.
- MultiRow : Propriété booléenne qui permet d'afficher les étiquettes sur plusieurs lignes si elles ne peuvent être complètement visibles sur une seule (voir illustration)
- TabFixedHeight, TabFixedWidth : Par défaut, la largeur des onglets (Tabs(x) s'adapte au nombre de caractères du texte (propriété Caption) et la hauteur est fixe.
Cependant, il est possible de définir une hauteur et une largeur fixe avec ces deux propriétés (voir illustration ci-dessous) - Value : Cette propriété dont la première valeur est 0, permet de savoir quel onglet est actif et sert également à définir celui qui sera actif.
- TabOrientation : Permet d'afficher les onglets (Tabs) à gauche, à droite, en bas et en haut (par défaut)
Les méthodes pour ajouter, supprimer des onglets (collection Tabs) sont
- Add : Crée un nouvel onglet
- Clear : Supprime tous les onglets
- Remove : Supprime un onglet
Dans l'illustration ci-dessous, nous avons de gauche à droite, la fenêtre des propriétés de l'objet TabStrip dans l'éditeur VBA, suivi d'une illustration de l'affichage avec la propriété MultiRow et enfin en dernière position l'affichage avec les onglets dont on a modifié la valeur des propriétés TabFixedWidth (en haut) et TabFixedHeight (en bas) qui par défaut sont à 0
Fonction générique de création dynamique des onglets
La fonction générique nommée TabStripAddTabs a pour but de créer dynamiquement des onglets en les nommant (propriété Caption) en fonction de l'argument Captions qui est une variable tableau (Array) à une dimension et dont la borne inférieure peut commencer indifféremment à 0 ou à 1.
La propriété Multiline sera par défaut à True si l'on ne modifie pas l'argument éponyme de la fonction et l'orientation des onglets par défaut est en haut
Code de la procédure
Code VBA : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Function TabStripAddTabs(oTabStrip As MSForms.TabStrip, _ Captions As Variant, _ Optional MultiLine As Boolean = True, _ Optional Orientation As fmTabOrientation) ' Philippe Tulliez (https://magicoffice.be) ' Arguments ' oTabStrip l'Objet TabStrip ' Captions Array (1 dimension) contenant les noms à passer à la propriété Caption des Tab ' [MultiLine] Si True (défaut), affiche les onglets sur plusieurs lignes si elle ne peuvent pas être affichée sur une seule ' [Orientation] Orientation des Tabs (fmTabOrientationBottom, ..Left, ..Right, ..Top) ' ' Déclaration et affectation Dim e As Byte With oTabStrip .Tabs.Clear ' Efface tous les onglets .TabOrientation = Orientation ' Orientation des onglets (Tabs) .MultiRow = MultiLine ' Défini la propriété MultiLine For e = LBound(Captions) To UBound(Captions) .Tabs.Add bstrCaption:=Captions(e) Next End With End Function |
Exemple pour l'invoquer
Pour cet exemple, le formulaire se nomme UserForm2 et le TabStrip, tabDynamic
La procédure se trouve dans un module standard
Code VBA : | Sélectionner tout |
1 2 3 4 5 6 7 8 | Sub TestTabStrip() Dim t As Variant t = Array("Afrique", "Amérique", "Asie", "Europe", "Océanie") With UserForm2 TabStripAddTabs oTabStrip:=.tabDynamic, Captions:=t .Show End With End Sub |
Ressources
Voici une liste de tutoriels ou billets en rapport avec cet article.