Bonjour à tous,
Tout d'abord je vous précise que ne ne suis par un expert en programmation mais un autodidacte motivé.
Je souhaite mettre à disposition de quelques centaines d'utilisateurs un utilitaire excel 2016 générant des graphs pour des points de vente choisit dans une liste déroulante.
En PJ le jeux de données utilisé, par souci de confidentialité, j'ai remplacé les points de vente (Région) par des numéros fictifs.
Mon résultat fonctionne mais le temps d'exécution de ma macro est trop long, 2 minutes 30 chrono. C'est long pour un utilisateur, même avec le useform d'attente que j'ai intégré.
La partie du code concerné est la suivante (j'ai vérifié en l'exécutant pas à pas) :
Ici, je veux sélectionner uniquement 2 valeurs de mon PivotFields ("Région") : TOTAL systématiquement et la valeur choisit par l'utilisateur dans le menu déroulant (= la variable ChoixBtn)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Région") For i = 1 To ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Région").PivotItems.Count If .PivotItems(i).Value Like ("*" & ChoixBtn & "*") Or .PivotItems(i).Value = ("TOTAL") Then .PivotItems(i).Visible = True Else .PivotItems(i).Visible = False End If Next i End With
Mon code lit toutes les valeurs du PivotFields ("Région"), soit env 5000 lignes, et met Visible uniquement les 2 retenues : ça marche mais c'est long...
J'ai cherché dans de nombreux forum mais on me propose toujours de passer par une boucle, ce qui revient à mon problème
J'ai également essayé avec AddField mais je ne peux en ajouter qu'un seul...
Auriez-vous une meilleure solution à me proposer ?
Partager