VBA -Segment de TCD à mettre à jour

Bonjour,

dans mon code VBA j'ai cette partie :

  ' Sélectionner tous les éléments sauf "(vide)" dans le segment
                    With wb.SlicerCaches("Segment_WEEKS_ALL")
                        Dim item As SlicerItem
                        ' Boucle pour sélectionner tous les éléments sauf "(vide)"
                        For Each item In .SlicerItems
                            If item.Name = "(vide)" Then
                                item.Selected = False
                            Else
                                item.Selected = True
                            End If
                        Next item
                    End With
                End If
            Next ws

Dans mon excel j'ai des TCD avec des segment "WEEKS" qui suivent toujours la même logique : 2024SEM032 puis 2024SEM033 puis 2024SEM034 etc...

mon but est que chaque semaine quand j'ai mis les données à jour et que sur l'ensemble de mes TCD la semaine suivante soit selectionner, la seul méthode que j'ai trouvé est Si vide ne pas selectionner si non tout le reste le selectionner grâce à :

If item.Name = "(vide)" Then
                                item.Selected = False
                            Else
                                item.Selected = True

Mais c'est très très long + de 20min par fichier pour seulement rajouter une semaine, je suis plus rapide à la main, auriez vous une autre approche pour rajouter la nouvelle semaine à chaque actualisation ?

Merci d'avance

Bonjour,

ClearManualFilter devrait réponde à ton besoin pour supprimer tous les segments d'un coup et donc tout afficher :
ActiveWorkbook.SlicerCaches("WEEKS).ClearManualFilter ' (ou "Segment_WEEKS_ALL" d'après ton exemple)

Sinon tu dois pouvoir faire un truc du genre :

    With ActiveWorkbook.SlicerCaches("WEEKS")
        .SlicerItems("2024SEM032").Selected = True
    End With

Et si tu veux toutes les semaines sauf la semaine vide :

    With ActiveWorkbook.SlicerCaches("WEEKS")
        .ClearManualFilter
        .SlicerItems("").Selected = False
    End With

Benoît Marchand

Rechercher des sujets similaires à "vba segment tcd mettre jour"