IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Philippe Tulliez

[Actualité] VBA-Excel - Comment créer dynamiquement les onglets d'un contrôle TabStrip à l'aide d'une fonction générique

Noter ce billet
par , 25/03/2023 à 13h45 (3483 Affichages)
Préambule
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

Nom : Illustration_1.png
Affichages : 2034
Taille : 15,1 Ko

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

Nom : TabStrip - Properties.png
Affichages : 1531
Taille : 244,3 Ko

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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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.

Envoyer le billet « VBA-Excel - Comment créer dynamiquement les onglets d'un contrôle TabStrip à l'aide d'une fonction générique » dans le blog Viadeo Envoyer le billet « VBA-Excel - Comment créer dynamiquement les onglets d'un contrôle TabStrip à l'aide d'une fonction générique » dans le blog Twitter Envoyer le billet « VBA-Excel - Comment créer dynamiquement les onglets d'un contrôle TabStrip à l'aide d'une fonction générique » dans le blog Google Envoyer le billet « VBA-Excel - Comment créer dynamiquement les onglets d'un contrôle TabStrip à l'aide d'une fonction générique » dans le blog Facebook Envoyer le billet « VBA-Excel - Comment créer dynamiquement les onglets d'un contrôle TabStrip à l'aide d'une fonction générique » dans le blog Digg Envoyer le billet « VBA-Excel - Comment créer dynamiquement les onglets d'un contrôle TabStrip à l'aide d'une fonction générique » dans le blog Delicious Envoyer le billet « VBA-Excel - Comment créer dynamiquement les onglets d'un contrôle TabStrip à l'aide d'une fonction générique » dans le blog MySpace Envoyer le billet « VBA-Excel - Comment créer dynamiquement les onglets d'un contrôle TabStrip à l'aide d'une fonction générique » dans le blog Yahoo

Mis à jour 25/04/2023 à 12h47 par Philippe Tulliez

Catégories
VBA Excel

Commentaires

  1. Avatar de emmanuelle1208
    • |
    • permalink
    Bonjour, j'ai programmé un code en VBA qui permet de détecter des doublons, afficher la liste ainsi que leurs chemins et de demander à l'utilisateur s'il souhaite les supprimer. Or je voudrais que le code puisse également générer un PDF listant l'ensemble des doublons trouvés dans le dossier scanné. Pourriez-vous m'aider ? Je suis novice sur ce site et ne sait comment créer un forum

    D'avance merci,

    Cordialement
  2. Avatar de Philippe Tulliez
    • |
    • permalink
    Bonjour,
    Ceci est un blog mais pas un forum, je vous invite à le rejoindre en cliquant sur ce lien (Forum Excel)

    Citation Envoyé par emmanuelle1208
    Bonjour, j'ai programmé un code en VBA qui permet de détecter des doublons, afficher la liste ainsi que leurs chemins et de demander à l'utilisateur s'il souhaite les supprimer. Or je voudrais que le code puisse également générer un PDF listant l'ensemble des doublons trouvés dans le dossier scanné. Pourriez-vous m'aider ? Je suis novice sur ce site et ne sait comment créer un forum

    D'avance merci,

    Cordialement