XL 2010 Boucle PivotTable

fil28

XLDnaute Nouveau
Bonjour le forum,

J'ai besoin de vos lumières car je suis bloqué sur une macro.

Une valeur est définie par l'utilisateur elle s'appelle JourOver qui est en général aux alentours de 15
Je fais ensuite une boucle sur le pivot table (sur toutes le valeurs de p)

Le problème que j'ai c'est que dans ce pivot table je peux avoir des milliers de lignes et la boucle que je fais prend beaucoup trop de temps. Dis autrement il y a beaucoup trop de P.value
Du coup j'aimerais un coup de main pour que ca aille plus vite.
Auriez vous une solution ?

Peut être faudrait-il tout décocher puis sélectionner les valeurs de p de 0 à JourOver ? Je n'arrive pas à le traduire par code




VB:
    ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotCache.Refresh
    ActiveSheet.PivotTables("Tableau croisé dynamique2").ClearAllFilters

With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Days Overdue")
    'For Each p In .PivotItems
        'p.Visible = True
    'Next p
    For Each p In .PivotItems
        If Val(p.Value) >= JourOver Then p.Visible = False
    Next p

    End With



Merci d'avance pour votre aide
Philippe
 
Dernière édition:

fil28

XLDnaute Nouveau
J'ai lu des posts avec manual update sur un tcd quelqu un sait comment intégrer cette fonction dans la procédure ?
VB:
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Days Overdue")

J'ai essayé de le positionner à la fin mais ça n'a pas l'air de fonctionner

Merci
Philippe
 

Staple1600

XLDnaute Barbatruc
Bonsoir @fil28

Ai-je bien compris la problématique ?
Code:
Sub Test()
Dim pvFld As PivotField, JourOver$
Set pvFld = ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Groupement")
pvFld.ClearAllFilters
JourOver = InputBox("Overdue supérieurs ou égal à en J", "Overdue", 15)
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Groupement").PivotFilters.Add2 Type:=xlCaptionIsGreaterThanOrEqualTo, Value1:=JourOver
End Sub
 

fil28

XLDnaute Nouveau
Bonjour le Forum, @Staple1600

Merci @Staple1600 pour ton retour
VB:
       '*******************CALULATION OFF*********************************************************************************
    
    Application.Calculation = xlCalculationManual
    
    
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Days Overdue")
    'For Each p In .PivotItems
        'p.Visible = True
    'Next p
    For Each p In .PivotItems
        If Val(p.Value) >= JourOver Then p.Visible = False
    Next p
    End With
    

   ' Range("A51").Select
  
  
  '*******************CALULATION ON*********************************************************************************


Ce qui me pose problème c'est que lorsque je fais une boucle sur toutes les valeurs de p. Excel recalcule à chaque changement de valeur. Et comme j'ai énormement de valeur p ca prend un temps fou.
Je souhaitais savoir si vous aviez une solution pour empêcher ce recalcul.


Par ailleurs peux tu stp m'expliquer dans
Code:
Dim pvFld As PivotField, JourOver$

Pourquoi mets tu JourOver$ à droite de Pivot Field et pourquoi mets tu un $

Merci encore
Philippe
 

Discussions similaires

Statistiques des forums

Discussions
312 210
Messages
2 086 279
Membres
103 170
dernier inscrit
HASSEN@45