Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Slicer VBA très lent

  • Initiateur de la discussion Initiateur de la discussion kakemphaton
  • 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 !

K

kakemphaton

Guest
Bonjour,

J'ai utilisé l'enregistreur de macro afin de sauvegarder mes changements de sélection dans un slicer. Si, sur le segment/slicer, je modifie à la main la sélection, le résultat est rapide.

En revanche quand j'utilise le code généré, le résultat prend 5 minutes à s'actualiser. D'après ce que j'ai pu observer, c'est comme si le code sélectionnait toutes les possibilités et retirait petit à petit les "false".

Voici le code :

Code:
Sub choix()

    Sheets("Indicateurs").Select
ActiveWorkbook.SlicerCaches("Secteur").ClearManualFilter
    With ActiveWorkbook.SlicerCaches("Secteur")
        .SlicerItems("Lille").Selected = True
        .SlicerItems("Paris").Selected = False
        .SlicerItems("Nancy").Selected = False
        .SlicerItems("Lyon").Selected = False
        .SlicerItems("Grenoble").Selected = False
        .SlicerItems("Aix en Provence").Selected = False
        .SlicerItems("Rouen").Selected = False
        .SlicerItems("Nantes").Selected = False
        .SlicerItems("Bordeaux").Selected = False
        .SlicerItems("Orléans").Selected = False
        .SlicerItems("Toulouse").Selected = False
    End With
    
End Sub

J'ai bien essayé de mettre ces options Application.Calculation = xlManual, mais cela ne change rien. Lorsque je sélectionne manuellement tout est rapide, mais dès que j'utilise le code, c'est catastrophique.

Merci
 
Dernière modification par un modérateur:
Re : Slicer VBA très lent

Bonjour,

Je suis sous Excel 2013. J'ai un fichier de 200 MO, 420 000 lignes et 80 colonnes. Le segment est relié à environ 80 TCD.

Merci
 
Re : Slicer VBA très lent

Bonjour

Le changement de filtre dans les TCD ne génèrent pas de calcul mais un SheetPivotTableUpdate.

On peut l'intercepter mais je ne crois pas qu'on puisse y changer quoi que ce soit.

Effectivement le ClearManual Filter défiltre tout (et c'est conseillé).

Il reste ensuite à mettre à false les valeurs non souhaitées. Le true est déjà actif donc inutile...
 
Re : Slicer VBA très lent

Je viens d'essayer cette solution, en effet, ca ne fonctionne pas

Code:
Sub choix()

    Sheets("Indicateurs").Select
Application.screenUpdating = False
Worksheets("Indicateurs").EnableCalculation= False
ActiveWorkbook.SlicerCaches("Secteur").ClearManualFilter
    With ActiveWorkbook.SlicerCaches("Secteur")
        .SlicerItems("Lille").Selected = True
        .SlicerItems("Paris").Selected = False
        .SlicerItems("Nancy").Selected = False
        .SlicerItems("Lyon").Selected = False
        .SlicerItems("Grenoble").Selected = False
        .SlicerItems("Aix en Provence").Selected = False
        .SlicerItems("Rouen").Selected = False
        .SlicerItems("Nantes").Selected = False
        .SlicerItems("Bordeaux").Selected = False
        .SlicerItems("Orléans").Selected = False
        .SlicerItems("Toulouse").Selected = False
    End With
   
End Sub
 
Re : Slicer VBA très lent

RE

Comme je l'ai expliqué, les villes avec =true ne servent à rien.

Si tu n'as que ces villes là, fais une boucle avec <>"Lille" pour mettre en false.
 
Re : Slicer VBA très lent

Je ne suis pas très doué, j'ai retiré les autres villes, mais du coup, il ne me sélectionne rien. Ca ne doit pas être la bonne méthode

Merci

Code:
Sub choix()

    Sheets("Indicateurs").Select
ActiveWorkbook.SlicerCaches("Secteur").ClearManualFilter
    With ActiveWorkbook.SlicerCaches("Secteur")
        .SlicerItems("Lille").Selected = True

    End With
   
End Sub
 
Re : Slicer VBA très lent

Bonjour

On tourne en rond car tu ne lis pas :
  1. ClearManualFilter affiche toutes les villes
  2. j'ai donc proposé une boucle qui cache toutes les villes sauf Lille
Code:
With ActiveWorkbook.SlicerCaches("Secteur")
    .ClearManualFilter
    For Each Ville In .SlicerItems
        if Ville<>"Lille" then Ville.Selected = False
    Nex Ville 
End With
 
Re : Slicer VBA très lent

Merci, mais, je ne suis pas très doué, j'ai un message d'erreur

"Propriété ou méthode non géré par cet objet" Il me souligne en jaune
Code:
If Ville <> "Lille" Then

J'ai utilisé ce code

Code:
Sub Macro1()
   
    Sheets("Indicateurs").Select
With ActiveWorkbook.SlicerCaches("Secteur")
    .ClearManualFilter
    For Each Ville In .SlicerItems
        If Ville <> "Lille" Then Ville.Selected = False
    Next Ville
End With


End Sub

Merci

Concernant ce point "Ne serait-il pas temps d'arreter?", je n'ai aucun souci de lenteur sur ma machine, c'est juste lors de l'exécution de cette macro.
 
Re : Slicer VBA très lent

Bonjour à tous

Quelques erreurs de ma part. Je rajoute aussi quelques améliorations

Code:
Dim Ville As SlicerItem
With ActiveWorkbook.SlicerCaches("Segment_Secteur")
    .ClearManualFilter
    For Each Ville In .SlicerItems
        if UCase(Ville.Caption) <> UCase("Lille") then Ville.Selected = False
    Nex Ville 
End With
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…