1 pièce(s) jointe(s)
Références Items dans TCD multi-dimension
Bonjour,
Sans doute le titre de mon post n'est pas très clair, bien que je l'interprète comme tel.
Dans le fichier ci-joint (Pièce jointe 616666) j'ai créé un TCD avec VBA (à partir d'un autre classeur .xlsm).
Ce TCD comporte 3 champs:
- Date
- Vente
- Montant (Montant TTC dans l'intitulé du champ)
Pour chaque Date il y a plusieurs Vente dont le Montant est une somme du champ Montant TTC.
Jusque là tout va bien!
Avec GetPivotData je suis capable d'accéder directement au montant d'une Vente à une Date donnée.
Avec PivotItems.Count je suis capable de récupérer le nombre d'Item du champ (ex: Champ Date me donne le nombre dates différentes dans le tableau).
La dernière opération, que je ne sais comment faire, est de récupérer la liste (en objet par exemple) des Items du champ Vente en fonction d'une valeur du champ Date. Et là je sèche malgré pas mal de recherches sur les forums, mais n'arrivant pas à caractériser précisément ma recherche, je tourne un peu en rond!
En substance, voici le code qui me permet de filtrer le TCD (c'était une piste) avec la date souhaitée, mais même en essayant d'itérer la même fonction imbriquée avec le champ Vente, ça ne fonctionne pas.
L'affichage marche très bien, mais je ne sais pas comment exploiter uniquement des données affichées dans le TCD après le filtrage (je ne trouve ça pas trop "élégant" mais c'est la dernière idée que j'ai eu!).
Au final je voudrais par rapport à une Date, parcourir la liste des Vente assosiées à cette Date et récupérer le Montant de chaque Vente (pour traitement ensuite dans un tableau en mémoire pour comparaison avec un autre tableau similaire).
Merci d'avance pour votre aide!
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
Sub test_ExtractionTCD() '(stChampDateRech As String, inChampVente As Integer)
'Configuration du TCD Ventes/Vente
Dim shTCDVentes As Worksheet
Dim ptVentes As PivotTable
Dim stChampDateRech As String
Dim inChampVente As Integer
Dim pi As PivotItem
InitVarApp
InitVarMois
'Référence feuille TCD Ventes
Set shTCDVentes = wbClMois.Worksheets("Ventes")
'Référence Tableau croisé dynamique Ventes
Set ptVentes = shTCDVentes.PivotTables("TCDVentes")
stChampDateRech = "03/02/2022"
inChampVente = 18474
With ptVentes.PivotFields("Date")
For Each pi In ptVentes.PivotFields("Date").PivotItems
If pi.Value <> "TOTAL" And pi.Value <> stChampDateRech Then
.PivotItems(pi.Value).Visible = False
End If
Next
End With
End Sub |