Boucler sur la colonne "Grand Total" d'un TCD

atlas

XLDnaute Occasionnel
Bonjour , comment boucler sur la colonne “Grand Total” d'un TCD ? (afin d’exploiter les données de cette colonne par la suite …)

Ci-dessus quelques briques de codes (dans le fichier ci-joint) susceptibles de m’aider par la suite mais pour l’instant , je n’arrive pas à les assembler …
Et la fonction « Test » ne fonctionne pas ….

Code:
Sub Macro3()

    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Sheet1!R1C1:R15551C11").CreatePivotTable TableDestination:="", TableName:= _
        "PivotTable1", DefaultVersion:=xlPivotTableVersion10
    ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
    ActiveSheet.Cells(3, 1).Select
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Agc")
        .Orientation = xlColumnField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Date")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
        "PivotTable1").PivotFields("Surfaces"), "Count of Surfaces", xlCount
        
        
     test
     'compterNombreLignesTCD  ' 1er étape d'abord on compte le nb de ligne
     'requeteTCD              ' 2 ème étape ensuite on extrait ligne par ligne le contenu de la colonne "Grand Total"
     
End Sub


Sub compterNombreLignesTCD()
    Dim Pvt As PivotTable

    'Définit le TCD
    'Set Pvt = Worksheets("Feuil1").PivotTables("PivotTable1")  'PivotTable1 c'est le nom propre de mon TCD
     Set Pvt = ActiveSheet.PivotTables("PivotTable1")  'PivotTable1 c'est le nom propre de mon TCD
    
    'TableRange1:
    'plage contenant l'intégralité du rapport de tableau croisé dynamique,
    'à l'exclusion des champs de page.
    MsgBox Pvt.TableRange1.Rows.Count
           
           
    'TableRange2 :
    'plage contenant l'intégralité du rapport de tableau croisé dynamique,
    'y compris les champs de page.
    MsgBox Pvt.TableRange2.Rows.Count
End Sub
Sub requeteTCD()
    Dim Pvt As PivotTable
    
    'Définit le TCD dans la feuille
    Set Pvt = ActiveSheet.PivotTables("PivotTable1")
    
    'Renvoie la valeur 'Grand Total', pour le champ '2003-01'
    MsgBox Pvt.GetData("'Grand Total' 'L_scodper' '2003-01'")
    
End Sub
Sub test()
  Dim i As Integer
  Dim Pvt As PivotTable

     Set Pvt = ActiveSheet.PivotTables("PivotTable1")  'PivotTable1 c'est le nom propre de mon TCD

For i = 0 To Pvt.PivotField("Grand Total").Row.Count
MsgBox Pvt.PivotFields("Grand Total").items(i).Value
Next
                                                 
End Sub

Sub formule1()

' CalculatedFields permet d'appliquer une formule a une colonne enfin je crois ...
'EXEMPLE

Worksheets(1).PivotTables(1).CalculatedFields.Item(1) _
    .Formula = "=((aujourdhui / 12moisavant)-1)*100"

End Sub
 

Pièces jointes

  • Tentative TCD.zip
    240 KB · Affichages: 58

PMO2

XLDnaute Accro
Re : Boucler sur la colonne "Grand Total" d'un TCD

Bonjour,

Voyez si la bidouille suivante peut vous convenir.

Remplacez la Sub test par le code suivant
Code:
'########################
Sub test()
Dim PVT As PivotTable
Dim S As Worksheet
Dim R As Range  'Plage des données de la colonne Total
Dim C As Range  'Pour énumérer chaque donnée de la plage R
Set S = ActiveSheet
On Error GoTo Erreur
Set PVT = S.PivotTables(1)
'--- La dernière cellule de la colonne "Total" décaler de - 2 lignes ---
Set R = PVT.GetPivotData.Offset(-2, 0)
'--- La plage des données de la colonne "Total" ---
Set R = S.Range(S.Cells(R.End(xlUp).Row + 1, R.Column), S.Cells(R.Row, R.Column))

R.Select  'pour visualiser la plage sélectionnée (à virer)

'--- Enumération de chaque cellule de la plage (pour visualisation) ---
Dim A$
For Each C In R
  A$ = A$ & C & vbCrLf
Next C
MsgBox A$
'----------------------------------------------------------------------
Erreur:
If Err <> 0 Then MsgBox "Erreur : " & Err.Number & vbCrLf & Err.Description
End Sub
'########################

Cordialement.

PMO
Patrick Morange
 

sabzzz

XLDnaute Junior
Re : Boucler sur la colonne "Grand Total" d'un TCD

bonjour Atlas,

Sub Macro1()
Set tcd = ActiveSheet.PivotTables(1)
If tcd.ColumnGrand Then
x = tcd.TableRange1.Address
Set plg = Range(Range(x).Columns(Range(x).Columns.Count).Address)
End If
For i = 3 To plg.Count - 1
valeur = plg(i)
Next
End Sub

a+
 

atlas

XLDnaute Occasionnel
Re : Boucler sur la colonne "Grand Total" d'un TCD

Voici ce que j'aie tenté ...Mais ça coince encore .Je boucle bien sur la colonne "date" mais itm (que je veux faire varier cad la date elle-même n'est pas accepté) .Erreur de syntaxe ou de type ?
NB : je vais observer vos morceaux de code merci ...

Sub boucle1()

Dim pvt As PivotTable
Dim fld As PivotField


For Each pvt In ActiveSheet.PivotTables

For Each col In pvt.ColumnFields

For Each itm In pvt.RowFields("Date").PivotItems
MsgBox itm
MsgBox pvt.GetData("'Grand Total' 'Date' 'itm'")

Next

Next

Next
End Sub
 

atlas

XLDnaute Occasionnel
Re : Boucler sur la colonne "Grand Total" d'un TCD

un petit coup de main pour interpreter en bon français la ligne de code de Sabzzzzz

Code:
Set plg = Range(Range(x).Columns(Range(x).Columns.Count).Address)

Donc je commence mais c'est pas clair .

Renvoie l'adresse de la colonne du "range" x (cad du range Grand Total) et affecte le à l'objet plg .
ange(x).Columns.Count
R je ne sais pas comment l'interpreter .
Du reste
Code:
.adress
je ne vois pas non plus pourquoi renvoyer une adresse ...
 

Discussions similaires

Réponses
2
Affichages
271

Statistiques des forums

Discussions
312 329
Messages
2 087 327
Membres
103 517
dernier inscrit
hbenaoun63