Macro et pivot

zidoide

XLDnaute Nouveau
bonjour,

C'est déjà sur ce site que l'on m'a donné la première solution..

Alors voici mon blème quand je lance ma macro comment faire pour quelle ignore les blank ou flag style (*)???
 

Hervé

XLDnaute Barbatruc
Salut zidoide

de mémoire tu voulais aussi que ce soit la date la plus ancienne qui apparaisse après le refresh, non ?

alors essaye comme ceci :


Sub Macro3()
Dim i As Byte, j As Byte
Dim max
For i = 1 To ActiveSheet.PivotTables.Count
               
With ActiveSheet.PivotTables(i)
                                .PivotCache.Refresh
                               
With .PivotFields('DATE')
                                       
For j = 1 To .PivotItems.Count
                                               
If max < .PivotItems(j) Then max = .PivotItems(j)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Next j
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .CurrentPage = max
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End With
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End With
Next i
End Sub


salut
 

Hervé

XLDnaute Barbatruc
re zidoide :)

Je t'avouerai ne jamais avoir lu autre chose que l'aide VBA comme livre, mais on me parle souvent de vba pour les nuls, qui apparement est pas mal.

En faisant une recherche sur le forum, tu devrais trouver d'autres titres.

En attendant je te redonne la macro avec quelques lignes de commentaires (désolé si c'est pas clair, je suis pas bien doué pour cet exercice).

Sub Macro3()
Dim i As Byte, j As Byte
Dim max

'boucle sur tout les tcd de la feuille
For i = 1 To ActiveSheet.PivotTables.Count
&nbsp; &nbsp;
'avec le tcd d'index i
&nbsp; &nbsp;
With ActiveSheet.PivotTables(i)
&nbsp; &nbsp; &nbsp; &nbsp;
'rafraichi le TCD
&nbsp; &nbsp; &nbsp; &nbsp; .PivotCache.Refresh
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
'avec le 'champs' date de ce tcd
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
With .PivotFields('DATE')
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
'pour chaque élément de ce champ
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
'de 1 jusqu'au dernier (pivotitems.count)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
For j = 1 To .PivotItems.Count
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
'si la valeur de cet élément est plus grand que le max, alors
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
'le max=la valeur de cet élément
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
If max < .PivotItems(j) Then max = .PivotItems(j)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Next j
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
'la plage active doit etre celle du max
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .CurrentPage = max
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End With
&nbsp; &nbsp;
End With
Next i
End Sub


salut
 

Discussions similaires

Statistiques des forums

Discussions
312 392
Messages
2 087 990
Membres
103 691
dernier inscrit
christophe89