Création TCD base de données variable

Bonjour,

Je cherche un code qui me permettrait de prendre l'ensemble de ma base de données (sélection jusqu'à la dernière ligne quel que soit le nombre de ligne) lorsqu'il créé le TCD.

Code actuel :

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _

"Feuil1!R1C1:R26C2", Version:=xlPivotTableVersion14).CreatePivotTable _

TableDestination:="Feuil2!R3C1", TableName:="Tableau croisé dynamique1", _

DefaultVersion:=xlPivotTableVersion14

Pouvez-vous m'aider ?

Bonjour,

La première exécution de ta macro se passe sans trop de problème, mais si la deuxième plante, c'est parce que tu demandes à Excel de créer à nouveau un TCD avec le même nom, au lieu de simplement l'actualiser...

Cordialement, Daniel

Bonjour,

La solution la plus simple est de mettre tes données sous forme de tableau.

Sinon, regarde les commentaires de la procédure.

Cdlt.

Sub Macro1()
Dim rngPT As Range
Dim PTcache As PivotCache
Dim PT As PivotTable
Dim cn As Long, rw As Long

    Set rngPT = Worksheets("Feuil1").ListObjects(1).Range
    'ou
    'Set rngPT = Worksheets("Feuil1").Cells(1).CurrentRegion
    'ou
    'With Worksheets("Feuil1")
        'cn = .Cells(1, .Columns.Count).End(xlToLeft).Column
        'rw = .Cells(.Rows.Count, 1).End(xlUp).Row
        'Set rngPT = .Cells(1).Resize(rw, cn)
    'End With

    Set PTcache = ActiveWorkbook.PivotCaches.Create _
                  (SourceType:=xlDatabase, SourceData:=rngPT)
    Set PT = PTcache.CreatePivotTable _
             (tabledestination:=Worksheets("Feuil2").Cells(3, 1), _
              TableName:="TCD_1")
    With PT
        .ManualUpdate = True
        .AddFields RowFields:="Chiffres"
        With .PivotFields("Lettres")
            .Orientation = xlDataField
            .Function = xlCount
            .NumberFormat = "#,##0"
            .Caption = "NB Lettres"
        End With
        .ManualUpdate = False
    End With

End Sub

Le fichier est juste un exemple.

En fait, ce que je voudrais, c'est pouvoir créer un TCD avec l'ensemble des données de la base, quelle que soit sa taille, qui n'est jamais la meme.

Je ne veux pas le mettre à jour, car je créé un nouveau fichier avec ce tableau et de nouvelles données.

Ce qui me bloque c'est la partie statique de ce code (en rouge).

Si j'ai 40 ligne dans mon nouveau fichier, il n'en prendra que 26 ...

J'aimerai donc trouver un code qui s'adapte au nombre de ligne de mon fichier quand je créé un TCD

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _

"Feuil1!R1C1:R26C2", Version:=xlPivotTableVersion14).CreatePivotTable _

TableDestination:="Feuil2!R3C1", TableName:="Tableau croisé dynamique1", _

DefaultVersion:=xlPivotTableVersion14

Kobe a écrit :

Le fichier est juste un exemple.

1/

En fait, ce que je voudrais, c'est pouvoir créer un TCD avec l'ensemble des données de la base, quelle que soit sa taille, qui n'est jamais la meme.

2/

Je ne veux pas le mettre à jour, car je créé un nouveau fichier avec ce tableau et de nouvelles données.

1/

mettre sous forme de tableau (1er menu d'Excel, très important) : le TCD s'adaptera auto aux lignes.

2/

pas compris

tu veux figer un TCD ?

RE,

Kobé,Je t'ai mis 3 façons de déterminer une plage variable.

As-tu regardé cette réponse ?

Cdlt.

Jean-Eric,

C'est exactement ce que je veux faire ! Déterminer une plage variable.

En revanche, pour ma part, je n'ai réussi qu'à faire fonctionner le 3ème (il faut ajouter la creation d'une nouvelle feuille), ce qui me suffit

Pour info, voici les messages d'erreurs

1) Set rngPT = Worksheets("Feuil1").ListObjects(1).Range

Message d'erreur : "L'indice n'appartien pas à la selection"

2) Set rngPT = Worksheets("Feuil1") / Cells(1).CurrentRegion

Message d'erreur : "Propriété ou method non gérée par cet objet"

Merci à toi

RE,

Point1 : Il faut mettre les données sous formae de tableau (Ruban / Accueil / Mettre sous forme de tableau)

Point2 : J'ai édité le message pour remplacer / par un point.

Il faut privilégier la mise sous forme de tableau.

Cdlt.

Rechercher des sujets similaires à "creation tcd base donnees variable"