[RESOLU] Simplification d'une macro VBA qui fait un TCD

g.milano

XLDnaute Junior
Bonjour,

J'ai la macro suivante qui marche très bien. j'ai essayer de réduire le code, mais je n'ai pas réussi a faire plus court. Le problème se situe au niveau de la génération du TCD. Je suis oblige de faire trois bloc with d’affilée pour arriver a mes fins. Malgré tous mes efforts, des erreurs surviennent toujours quand j'essaye de tout mettre dans le même bloc with.
Y'a-t-il une raison particulière (due au langage VBA) au fait qu'on ne puisse pas tout faire d'un coup ? Ou s'agit-il d'une erreur de ma part ?

Merci pour votre aide m(_ _)m


Macro :
Code:
Sub BUYMATCD()

    Dim paneru As Range
    Dim TCD As Worksheet
    Dim teburu As PivotTable

    Set paneru = ActiveWorkbook.Sheets(1).UsedRange
    Set TCD = Sheets.Add(After:=Sheets(Sheets.Count))
    ActiveSheet.Name = "テーブル"
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=paneru, Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:="テーブル!R1C1", TableName:="仕分け", DefaultVersion:=xlPivotTableVersion14
    TCD.Range("A1").Select
    Set teburu = ActiveSheet.PivotTables("仕分け")
    With teburu.PivotFields("商品コード")
        .Orientation = xlRowField
        .Position = 1
    End With
    With teburu.PivotFields("サイズ")
        .Orientation = xlRowField
        .Position = 2
    End With
    With teburu
        .AddDataField teburu.PivotFields("不変ID"), "個数", xlCount
        .TableStyle2 = "PivotStyleMedium2"
        .RowAxisLayout xlOutlineRow
        .RepeatAllLabels xlRepeatLabels
    End With

    retsu = TCD.UsedRange.Rows.Count - 1
    Range("A1:C" & retsu).Copy
    Range("D1").PasteSpecial Paste:=xlPasteValues
    Range("D1").PasteSpecial Paste:=xlPasteFormats

    Range("D:F").AutoFilter
    Range("D:F").AutoFilter Field:=1, Operator:=xlFilterNoFill
    Columns("A:C").EntireColumn.Hidden = True

End Sub
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Simplification d'une macro VBA qui fait un TCD

Bonjour,

peut être avec ceci, pas sûr d'avoir bien cerné ta demande....
Code:
    Set teburu = TCD.PivotTables("???")
    With teburu
        With .PivotFields("?????")
            .Orientation = xlRowField
            .Position = 1
        End With
        With .PivotFields("???")
            .Orientation = xlRowField
            .Position = 2
        End With
        .AddDataField .PivotFields("??ID"), "??", xlCount
        .TableStyle2 = "PivotStyleMedium2"
        .RowAxisLayout xlOutlineRow
        .RepeatAllLabels xlRepeatLabels
    End With

bonne journée
@+
 

g.milano

XLDnaute Junior
Re : Simplification d'une macro VBA qui fait un TCD

aaargh

mille mercis, j'ai compris ma boulette. J'avais essaye d'imbriquer les with comme tu as fais, mais je n'avais pas mis de point.
En clair, j'avais fait :
Code:
With teburu
        With PivotFields("?????")

chui nul (>.<)

Merci Pierrot93 m(_ _)m
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16