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

Philippe Tulliez

[Actualité] VBA - Excel - Comment filtrer et charger des données en fonction de la sélection d'un onglet du TabStrip

Noter ce billet
par , 19/04/2023 à 12h25 (4893 Affichages)
Préambule
Dans un billet précédent, titré Comment créer dynamiquement les onglets d'un contrôle TabStrip à l'aide d'une fonction générique, j'ai montré comment créer dynamiquement les onglets d'un objet TabStrip.

Nom : TabStrip_CRM.gif
Affichages : 3583
Taille : 404,3 Ko

Qu'est-ce qu'un TabStrip ?
Son aspect est proche de l'objet MultiPage mais la manière de l'utiliser est totalement différente.

Dans un MutliPage on peut afficher des contrôles différents par onglet tel que TextBox, ListBox, OptionButton, etc. alors que le TabStrip ne peut visuellement qu'avoir les mêmes contrôles.

Son usage est donc très approchant d'un OptionButton sa propriété Value renvoie un numéro. Le fait que l'on clique sur un onglet, le rend plus convivial à utiliser dans certaine circonstance.
Le but lorsque l'on sélectionne l'onglet d'un TabStrip étant d'obtenir les données correspondantes à cette sélection.

L'exemple
Pour illustrer ce billet, j'ai choisi comme exemple, d'afficher des données filtrées d'une liste des données de clients, Prospectou Suspects en fonction de la sélection d'un onglet du TabStrip

Pour rendre plus simple la compréhension de l’article et surtout pour se concentrer sur le sujet, à savoir, l’affichage dans un ListBox de données filtrées, on considérera que pour les contrôles :
  • ListBox : les propriétés ColumnCount et ColumnWidth sont déjà définies
  • TabStrip que le nombre d’onglet et la propriétés Caption sont définis.

Je me concentrerai donc dans cet article sur la procédure qui permet de filtrer les données en fonction de la sélection d’un onglet du TabStrip

La donnée source
La source de données est un tableau structuré nommé t_CRM et contient les données de Client, Prospect et Suspect. Le statut de ceux-ci est défini dans la colonne éponyme de la table.

Nom : Liste CRM + TabStrip (réduit).png
Affichages : 2014
Taille : 197,8 Ko

Le UserForm
Le UserForm nommé usf_TabStrip_Exemple contient 2 contrôles
  • TabStrip nommé tabClient
    Qui contient 3 onglets (Collection Tabs) dont la propriété Caption a comme valeur pour Tabs(0) Client, Tabs(1) Prospect, Tabs(2) Suspect
  • ListBox nommé lst_Client

Il contient également 3 procédures : RefreshList qui actualise le ListBox et deux procédures événementielles UserForm_Activate et tabClient_Click qui n'ont comme rôle que d'invoquer la procédure RefreshList

Nom : TabStrip - UserForm.png
Affichages : 1998
Taille : 31,6 Ko

La procédure RefreshList
Cette procédure actualise le ListBox nommé lst_Client en évaluant la fonction FILTRER (FILTER pour VBA) et modifie le titre du formulaire
Au préalable elle remplace la balise <CRITERIA> du modèle de la formule par le nom de l'onglet sélectionné
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
Private Sub RefreshList()
  Const FormulaPattern As String = "=FILTER(t_CRM,t_CRM[Statut]=<Criteria>)"
  Dim Text As String
  Dim FormulaText As String
  With Me
   With .tabClient
    Text = .Tabs(.Value).Caption
    ' Remplace le texte de la formule en remplacant la balise <Criteria>
    '    par le nom de l'onglet sélectionné
    FormulaText = Replace(FormulaPattern, "<Criteria>", Chr(34) & Text & Chr(34))
   End With
  .Caption = "CRM - Liste des " & Text     ' Modifie le titre du formulaire
  .lst_Client.List = Evaluate(FormulaText) ' Charge le ListBox
  End With
End Sub

Les procédures événementielles
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Private Sub UserForm_Activate()
  RefreshList '
End Sub
 
Private Sub tabClient_Click(ByVal Index As Long)
  RefreshList '
End Sub

La fonction FILTRE / FILTER
La fonction FILTRE, FILTER pour la version anglaise est utilisée dans la procédure RefreshList par évaluation (fonction Evaluate de VBA). Cette fonction qui n'est disponible que pour les versions 365 pour Windows et Mac ainsi que pour le version Excel Web permet de filtrer des données suivant un ou plusieurs critères

Dans l'illustration on peut constater les données filtrées par rapport au mot qui se trouve en cellule C1 qui est le paramètre. Dans la procédure RefreshList on devra pratiquer de la même façon.

Le texte générique de la formule est la valeur de la constante FormulaPattern, ci-dessous, et le paramètre est représenté par la balise <Criteria>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
=FILTER(t_CRM,t_CRM[Statut]=<Criteria>)
Pour obtenir le texte entier de la formule on utilisera la fonction Replace pour remplacer cette balise par la valeur de la propriété Caption de l'onglet sélectionné

Nom : FILTRER - (Excel).png
Affichages : 1970
Taille : 39,4 Ko

Ressources
Voici une liste de tutoriels ou billets en rapport avec cet article.


Un fichier de démonstration en téléchargement

Envoyer le billet « VBA - Excel - Comment filtrer et charger des données en fonction de la sélection d'un onglet du TabStrip » dans le blog Viadeo Envoyer le billet « VBA - Excel - Comment filtrer et charger des données en fonction de la sélection d'un onglet du TabStrip » dans le blog Twitter Envoyer le billet « VBA - Excel - Comment filtrer et charger des données en fonction de la sélection d'un onglet du TabStrip » dans le blog Google Envoyer le billet « VBA - Excel - Comment filtrer et charger des données en fonction de la sélection d'un onglet du TabStrip » dans le blog Facebook Envoyer le billet « VBA - Excel - Comment filtrer et charger des données en fonction de la sélection d'un onglet du TabStrip » dans le blog Digg Envoyer le billet « VBA - Excel - Comment filtrer et charger des données en fonction de la sélection d'un onglet du TabStrip » dans le blog Delicious Envoyer le billet « VBA - Excel - Comment filtrer et charger des données en fonction de la sélection d'un onglet du TabStrip » dans le blog MySpace Envoyer le billet « VBA - Excel - Comment filtrer et charger des données en fonction de la sélection d'un onglet du TabStrip » dans le blog Yahoo

Mis à jour 09/05/2023 à 16h46 par Philippe Tulliez

Catégories
VBA Excel

Commentaires