Bonjour à tous,

Je fais appel à vos connaissances pour optimiser une proc que j'utilise sur beaucoup de mes fichiers, qui eux sont utilisés par plusieurs autres collaborateurs.

Il s’agit de fichiers de reporting, pour les rendre plus ludiques et faciles d'utilisation j'utilise les segments d'Excel.
Lorsque qu'il y a beaucoup de segments j'ajoute souvent un bouton qui permet de réinitialiser les filtres pour montrer l'ensemble des données ou presque.

Le problème arrive :
Sur certains fichiers, plus volumineux, la proc est assez longue à s'exécuter (5/6 secondes environs).
Ce temps est-il étonnant ? Si oui, je serais ravi de savoir comment l’optimiser ou même connaitre une autre méthode plus efficace.

Voilà la proc :
Code : 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
23
24
25
26
27
28
29
30
31
32
33
34
Sub init_segments()
 
    Application.ScreenUpdating = False
 
        'Déclaration des variables
        Dim Sli_C As SlicerCache: Dim Sli_Cs As SlicerCaches: Dim Sli As Slicer
 
        Set Sli_Cs = ActiveSheet.Parent.SlicerCaches 'récupere tous les segments du classeur
 
        If Sli_Cs Is Nothing Then Exit Sub 'si pas segment fin de la proc
 
        'Boucle sur les segments de la feuille active pour les vider
        For Each Sli_C In Sli_Cs
            For Each Sli In Sli_C.Slicers
                If Sli.Shape.Parent Is ActiveSheet Then
                    Sli_C.ClearManualFilter
                    Exit For
                End If
            Next Sli
        Next Sli_C
 
        'reinit d'un des segments
        With ActiveWorkbook.SlicerCaches("Segment_Top_Maganer")
            .SlicerItems("OUI").Selected = True
            .SlicerItems("NON").Selected = False
        End With
 
    Application.ScreenUpdating = True
    'Libération des variables
    Set Sli_Cs = Nothing
    Set Sli_C = Nothing
    Set Sli = Nothing
 
End Sub
Merci d'avance à tous, je suis certain que l'un d'entre vous connait une astuce