Problème Macro et TCD

Bonjour,

Je débute en VBA et j'ai un problème avec ma macro qui tente de créer un tableau croisé dynamique.

J'aurais voulu créer à partir du premier tableau pour chaque valeur "15", "9", ... jusqu'à "5" en bas un tableau qui me donne : parmi tous les 15 on affiche la case maximale de la colonne "aire", parmi tous les "9", la case maximale de la colonne "aire" et ainsi de suite pour chaque valeur de la colonne "Valeur de LBP".

Seulement mon TCD résultant ne comporte que les valeurs "4", "8", "9", "15" et je ne sais pas pourquoi car je le sélectionne (il me semble) correctement en entier avec :

Sheets("Arc H").Select

Range("B13").CurrentRegion.Select

(en faisant une copie, j'ai pu vérifier qu'il y a bien l'entièreté du tableau qui est copié... )

Je vous joins mon fichier, pour plus de simplicité, veuillez ne prendre en compte que l'onglet "Arc H" et ne considérer que le tableau qui commence en B13 et qui termine en E336.

Si quelqu'un veut bien m'aider à résoudre mon problème,

Merci d'avance,

Bonne journée,

Oriane

8tcd-test.zip (28.49 Ko)

Bonjour,

tu ne prends pas toutes les lignes de tes données pour créer ton TCD.

voici une correction

Sub create_TCD()

'
    Dim wsTCD As Object, plagedonnées As String, dl As Long

    'supprimer feuille TCD si elle existe
    Application.DisplayAlerts = False
    On Error Resume Next
    Sheets("TCD").Delete
    On Error GoTo 0
    Application.DisplayAlerts = True

    'ajouter feuille TCD
    Sheets.Add After:=Sheets(Sheets.Count)
    Set wsTCD = ActiveSheet
    wsTCD.Name = "TCD"

    ' déterminer le tableau de données
    With Sheets("Arc H")
        dl = .Cells(Rows.Count, "B").End(xlUp).Row
        plagedonnées = .Range("B13:E" & dl).Address
    End With

    'créer le TCD
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
                                      plagedonnées, Version:=xlPivotTableVersion10).CreatePivotTable _
                                      TableDestination:="TCD!R1C1", TableName:="Tableau croisé dynamique4", _
                                      DefaultVersion:=xlPivotTableVersion10
    With wsTCD
        .PivotTables("Tableau croisé dynamique4").AddDataField .PivotTables("Tableau croisé dynamique4").PivotFields("Valeur de LBP")
        .PivotTables("Tableau croisé dynamique4").AddDataField .PivotTables("Tableau croisé dynamique4").PivotFields("Aire"), "Max de Aire", xlMax

        With .PivotTables("Tableau croisé dynamique4").PivotFields( _
             "Valeur de LBP")
            .Orientation = xlRowField
            .Position = 1
        End With

        ' Supprime les totaux
        .PivotTables("Tableau croisé dynamique4").PivotFields( _
                "Somme de Valeur de LBP").Orientation = xlHidden
    End With

End Sub
9tcd-test.zip (35.89 Ko)

Bonjour,

Une autre proposition à étudier (Fichier xlsm !?).

Les données sont mises sous former de tableau (dynamique).

Cdlt.

4tcd-test.xlsm (58.12 Ko)
Public Sub Create_PT()
Dim wb As Workbook
Dim wsData As Worksheet, wsPT As Worksheet
Dim rngPT As Range
Dim PTCache As PivotCache, PT As PivotTable

    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
    End With

    Set wb = ActiveWorkbook
    Set wsData = wb.Worksheets("Arc H")
    Set rngPT = wsData.ListObjects("Tableau1").Range
    On Error Resume Next
    wb.Worksheets("TCD").Delete
    On Error GoTo 0

    Application.DisplayAlerts = True

    Set PTCache = wb.PivotCaches.Create(xlDatabase, rngPT)
    Set wsPT = wb.Worksheets.Add(after:=Worksheets(Worksheets.Count))
    wsPT.Name = "TCD"
    Set PT = PTCache.CreatePivotTable(wsPT.Cells(1), "PT_1")

    With PT
        .ManualUpdate = True
        .AddFields RowFields:="Valeur de LBP"
        With .PivotFields("Aire")
            .Orientation = xlDataField
            .Function = xlMax
        End With
        .RowAxisLayout xlTabularRow
        .ColumnGrand = False
        .ManualUpdate = False
    End With

End Sub

bonjour à tous

un TCD ne se crée pas en automatique, car par définition de TCD, on ne le crée qu'une fois. Et non 10 ou 100 fois le même.

bonne journée à tous

Bonjour,

Merci beaucoup pour vos réponses, cela correspond à ce que je souhaitais faire !

Rechercher des sujets similaires à "probleme macro tcd"