[Résolu] Tableau Croisé Dynamique - Grouper grâce à VBA

craig974

XLDnaute Occasionnel
Bonjour,

J'ai plusieurs TCD, dans ces TCD je groupe les étiquettes de ligne par mois et année (Dans les options de groupage je laisse coché la "FIN" qui est en gros la dernière date trouvé dans ma base, mais je décoche début pour mettre une date fixe). Le problème c'est que chaque mois la date début doit être modifié d'un mois et je souhaite automatisé ceci. En utilisant l'enregistreur de macro je vois qu'il faut utiliser le code ci dessous
Code:
PivotTables("").Group Start:=True, End:=True, Periods:=Array(False, False, False, False, True, False, True)
Et mettre pour Start, à la place de True le format STANDARD de la date voulue. J'ai essayé de mettre mon incrémentation de date (au format standard) dans une cellule et de mettre la valeur de ma cellule à la place de TRUE mais cela n'a pas l'air de fonctionner ....

Pour information: la date souhaité est le 1er du mois précédent la date Actuelle.

Merci d'avance.
 

Pierrot93

XLDnaute Barbatruc
Re : Tableau Croisé Dynamique - Grouper grâce à VBA

Bonjour,

regarde peut être ceci :
Code:
ActiveSheet.PivotTables(1).PivotFields("dates").LabelRange.Group Start:=DateSerial(Year(Date), Month(Date) - 1, 1), _
    End:=True, Periods:=Array(False, False, False, False, True, False, False)

bon après midi
@+
 

craig974

XLDnaute Occasionnel
Re : Tableau Croisé Dynamique - Grouper grâce à VBA

Salut Pierrot,

J'ai essayé avec ton code mais ça me dit que: la méthode classe Range a échoué. PivotFields je comprend que ces pour sélectionner les étiquettes de ligne qui ont comme champ "dates" ("Date" dans mon cas), le problème ne vient il pas du fait que manuellement mon TCD est groupé par mois et année (donc cela créé aussi un champ "Année" comme étiquette de ligne.

Désolé de ne pas avoir pu répondre plus tôt.
 

Pierrot93

XLDnaute Barbatruc
Re : Tableau Croisé Dynamique - Grouper grâce à VBA

Bonjour,

peut être dissocier au préalable et modifier comme suit :

Code:
ActiveSheet.PivotTables(1).PivotFields("dates").LabelRange.Group Start:=DateSerial(Year(Date), Month(Date) - 1, 1), _
    End:=True, Periods:=Array(False, False, False, False, True, False, True)

sans pouvoir tester, difficile d'en dire plus....

bonne journée
@+
 

craig974

XLDnaute Occasionnel
Re : Tableau Croisé Dynamique - Grouper grâce à VBA

J'ai continuer à chercher de mon côté est en faisant cela ça marche (l'erreur venait bien du LabelRange qui ne sélectionnait pas ce qu'il fallait) :

ActiveSheet.PivotTables(1).PivotFields("Date").DataRange.Cells(1).Group
Start:=DateSerial(Year(Date), Month(Date), 1), _
End:=True, Periods:=Array(False, False, False, False, True, False, True)

Définition (F1):
LabelRange : Range qui représente la ou les cellules contenant l'étiquette du champ.
DataRange: Range comme indiqué dans le tableau suivant.

Objet---------------------------------------Plage de données
Champ de données-----------------------Données contenues dans le champ
Ligne, colonne, ou champ de page------Éléments du champ
Élément------------------------------------Données qualifiées par l'élément


Merci de ton aide, tu m'as amené sur la bonne piste.
 

Discussions similaires

Statistiques des forums

Discussions
311 719
Messages
2 081 871
Membres
101 828
dernier inscrit
Did-Pan