Execution plus rapide de ma macro (amélioration du code)

bornz

XLDnaute Nouveau
Bonjour,

Cela fait des jours que je bloque sur ma macro qui a pour but d'appliquer le même le filtre sur mes quatre segments. J'ai une macro qui fonctionne mais cependant mon code fait que l’exécution est trop long a cause des boucles car le code fait que je parcours toute une liste de pays et sur 4 segments ça le fait pas trop..


Code:
Dim toto As String
    
    With ActiveWorkbook.SlicerCaches("Segment_COUNTRYCODE1")
    
    Set k = ActiveWorkbook.SlicerCaches("Segment_COUNTRYCODE1")

    Sheets("Selection").Select
    toto = Range("C3").Value
    Sheets("OngletFinal").Select

  For i = 1 To .SlicerItems.Count

        If k.SlicerItems(i).Name = toto Then

           k.SlicerItems(i).Selected = True

  Exit For
            
        End If
        
  Next i
    
  For i = 1 To .SlicerItems.Count

       If k.SlicerItems(i).Name <> toto Then

          k.SlicerItems(i).Selected = False
                
       End If

  Next i
     
End With


Comme vous pouvez le remarquer j'ai réussi a placer un Exit For pour éviter qu'il continue a boucler une fois qu'il a trouvé la valeur toto que l'utilisateur entre dans une cellule d'une autre onglet.
J'aimerai trouver l'équivalent lorsqu'il désélectionne l'ancien filtre, ici il est obliger de tout parcourir le Exit For ne fonctionne pas car la première boucle rencontrera la condition et en sortira sans passer sur l'ancien filtre.

J'ai ce même code pour les 3 autres segments..

Merci d'avoir pris le temps de lire mon post.
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Re : Execution plus rapide de ma macro (amélioration du code)

Bonjour,

déjà tu devrais pouvoir ne faire qu'une seule boucle :
Code:
        For i = 1 To .SlicerItems.Count
            k.SlicerItems(i).Selected = k.SlicerItems(i).Name = toto
        Next i
Et le Sheets("Selection").Select me parait inutile.
Maintenant il y a peut-être d'autres possibilités mais sans fichier pour tester...

eric
 

bornz

XLDnaute Nouveau
Re : Execution plus rapide de ma macro (amélioration du code)

Bonjour,

Merci pour ton aide Eric, j'ai pu raccourcir mon code sauf que ça met toujours autant de temps car je suis obligé de parcourir la liste de 200 pays pour tout sélectionner et garder seulement le pays en question dans mon segment.
Et je parcours cette liste quatre fois car j'ai quatre segments, ça n'arrange rien...

Par confidentialité je ne peux pas joindre mon fichier..

PS: J'ai du rajouter
Code:
k.ClearManuelFilter
parce que si je choisi un pays qui est placé en dessous du précédent dans le segment, il me garde tous les pays au dessus du pays sélectionné.

J'y travaille toujours pour essayer de voir si il y a une possibilité ...
 
Dernière édition:

bornz

XLDnaute Nouveau
Re : Execution plus rapide de ma macro (amélioration du code)

Bonjour,

Qu'entends tu par données bidons ?

Je suis à la recherche d'une possibilité pour exécuter le parcours de mes segments pays, le tout en même temps..

Cordialement,
 

Discussions similaires

Réponses
4
Affichages
165
Réponses
5
Affichages
124

Statistiques des forums

Discussions
311 709
Messages
2 081 779
Membres
101 816
dernier inscrit
Jfrcs