XL 2016 VBA - Est-il possible de récupérer toutes les valeurs de filtre possible sans parcourir la colonne

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Dudu2

XLDnaute Barbatruc
Bonjour,

Supposons un colonne qui peut être filtrée et qui est ou non filtrée.
Peut-on récupérer toutes les valeurs listées dans la liste déroulante du filtre sans parcourir les données.

Soit ce tableau:
1757853539139.png


Je voudrais récupérer ça:
1757853684753.png
ou
1757854549856.png
 
Dernière édition:
@Bernard_XLD
C'est quoi ces chiffres 318, 879.75, 144, 210 dans le Set Objet_Segment
Bonsoir,
Je pense qu'il s'agit des valeurs 'Top', 'Left', 'Height' et 'Width' du segment ajouté.


Slicers.Add, méthode (Excel)​

  • 07/04/2023
Crée un segment et retourne un objet Slicer .

Syntaxe​

expression. Ajouter (SlicerDestination, Level, Name, Caption, Top, Left, Width, Height)
Expression Variable qui représente un objet Slicers .

Parameters​

SlicerDestinationRequisVariantChaîne qui spécifie le nom de la feuille, ou objet Worksheet qui représente la feuille, où le segment obtenu sera placé. La feuille de destination doit se trouver dans le classeur qui contient l’objet Slicers spécifié par expression.
LevelFacultatifVariantPour les sources de données OLAP, ordinale ou nom MDX (Multidimensional Expression) du niveau de création du slicer. Aucune prise en charge pour les sources de données non OLAP.
NameFacultatifVariantNom du slicer. Si aucun nom n’est spécifié, Excel en génère automatiquement un. Il doit être appliqué à tous les slicers d’un classeur.
CaptionFacultatifVariantLégende du slicer.
TopFacultatifVariantPosition verticale initiale du segment, en points, par rapport au coin supérieur gauche de la cellule A1 d’une feuille de calcul.
LeftFacultatifVariantPosition horizontale initiale du slicer, en points, par rapport à l’angle supérieur gauche de la cellule A1 dans un classeur.
WidthFacultatifVariantLargeur initiale, en points, du contrôle de slicer.
HeightFacultatifVariantHauteur initiale, en points, du contrôle de slicer.
 
C'est quoi ces chiffres 318, 879.75, 144, 210 dans le Set Objet_Segment
le positionnement du segment dans la feuille

Je pense qu'il s'agit des valeurs 'Top', 'Left', 'Height' et 'Width' du segment ajouté.
tout à fait cela

les segments sont très puissants pour des filtres en cascade quoiqu'un peu délicats à manipuler en vba parfois
 

Pièces jointes

Bonsoir @Dudu2
Objet : Ajout des fichiers et précisions sur le module de classe
J’ai ajouté les fichiers dans Poste :
  • #12 : sur filtre actif
  • #13 : uniquement les filtres actifs, et tous les champs si, par défaut, aucun n’est décoché
Ensuite, grâce au module de classe, il est possible de récupérer les données comme souhaité. Il suffit d’adapter le module standard, qui est très flexible
 
Tu peux regarder dans le classeur joint STP ?
j'ai remplacé tes variables workbook et Worksheet par Wbk et Wsh, c'est plus lisible et clair.

VB:
Function TabValeursUniquesColonneTS(Tbl As ListObject, TblNoColonne As Integer) As Variant()
    Dim SlicerItem As SlicerItem
    Dim Segment As Object
    Dim TabValeursUniques() As Variant
    Dim Wbk As Workbook
    Dim Wsh As Worksheet
    Dim NomColonne As String
    Dim i As Long
   
    Set Wbk = Tbl.Parent.Parent
    Set Wsh = Tbl.Parent
    NomColonne = Tbl.HeaderRowRange(TblNoColonne)
    Set Segment = Wbk.SlicerCaches.Add2(Tbl, NomColonne).Slicers.Add( _
                            Wsh, , NomColonne, NomColonne, 318, 879.75, 144, 210)
    ReDim TabValeursUniques(1 To Wbk.SlicerCaches("Segment_" & NomColonne).SlicerItems.Count)
    For Each SlicerItem In Wbk.SlicerCaches("Segment_" & NomColonne).SlicerItems
        i = i + 1
        TabValeursUniques(i) = SlicerItem.Name
    Next SlicerItem
    Segment.Delete
    'Return value
    TabValeursUniquesColonneTS = TabValeursUniques
End Function
 
@laurent950,
c'est pas ce que l'on comprend en #Poste 1
J'ai écrit:
Supposons un colonne qui peut être filtrée et qui est ou non filtrée.
Peut-on récupérer toutes les valeurs listées dans la liste déroulante du filtre sans parcourir les données.

Et en plus j'ai placé 2 screenshots avec ce que je veux récupérer (colonne filtrée ou non)
Tu trouves que ce n'est pas clair ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
72
Affichages
1 K
Réponses
1
Affichages
140
Retour