XL 2013 Lire items d'un Segments filtré (VBA)

Jam

XLDnaute Accro
Bonjour à tous,

J'ai 2 Segments dans mon classeurs. Les 2 sont liés à un TCD.
Lorsque j'effectue une sélection dans un des segments l'autre se met à jour automatiquement. Dans mon cas si je choisi une ville dans un des segments, le second affiche la région.
Si j'utilise une macro qui lit les items sélectionnés dans le segment Région celle-ci me dit que tous sont sélectionnés. De même le filtre du TCD affiche aussi (Tous) ce qui corrobore le résultat de la macro. Or, le segment n'affiche bien qu'une seule Région et non plusieurs.
Précision: dans les options du segment, je masque les éléments n'ayant pas de données
Quelqu'un saurait-il comment lister via VBA les éléments d'un segment "filtré" ?
 

Jam

XLDnaute Accro
Bonjour

A priori si la région est masquée par le choix de la ville, sa propriété hasdata est false
Cela devrait permettre de repérer les items visibles et non visibles du segment Régions


Nickel, ça fonctionne parfaitement. Merci pour l'astuce !

Ci dessous mon code pour ceux que cela pourrait éventuellement intéresser:
VB:
Public Function GetSelectedSlicerItems(SlicerName As String) As String
    Dim oSc As SlicerCache
    Dim oSi As SlicerItem
    Dim lCt As Long
    On Error Resume Next
    Application.Volatile
    Set oSc = ThisWorkbook.SlicerCaches(SlicerName)
    If Not oSc Is Nothing Then
        For Each oSi In oSc.SlicerItems
            If oSi.Selected And oSi.HasData Then     '<--- modification ici
                GetSelectedSlicerItems = GetSelectedSlicerItems & oSi.Name & ", "
                lCt = lCt + 1
            End If
        Next
        If Len(GetSelectedSlicerItems) > 0 Then
            If lCt = oSc.SlicerItems.Count Then
                GetSelectedSlicerItems = "Tous les éléments"
            Else
                GetSelectedSlicerItems = Left(GetSelectedSlicerItems, Len(GetSelectedSlicerItems) - 2)
            End If
        Else
            GetSelectedSlicerItems = "Aucun élément sélectionné"
        End If
    Else
        GetSelectedSlicerItems = "le slicer avec le nom '" & SlicerName & "' n'existe pas !"
    End If
End Function
 

Discussions similaires

Réponses
3
Affichages
273
Réponses
10
Affichages
321

Statistiques des forums

Discussions
312 112
Messages
2 085 409
Membres
102 884
dernier inscrit
Macarena