Nombre de lignes pour un TCD

Bonjour,

J'ai enregistré un macro pour la création d'un TCD.

Sauf que si je change le nombre des lignes de mon Tableau d'origine, le résultats de mon TCD seront incorrectes.

Voici la partie du code sur laquelle je dois faire des modifications :

Range("A16").Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlDown)).Select

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

"PA Production Planning!R16C1:R9036C41", Version:=xlPivotTableVersion12). _

CreatePivotTable TableDestination:="MINUTES_3311!R1C1", TableName:= _

"Tableau croisé dynamique10", DefaultVersion:=xlPivotTableVersion12

9036 est le nombre de lignes de mon Tableau. Ce nombre peux fluctuer.

Existe-t-il une solution ?

Merci

Bonjour

OUI mettre la source sous forme de tableau (mauvaise traduction de table, listobject en VBA) et baser le TCD sur le tableau et non une plage...

D'accord merci.

Comment l'appliquer ?

RE

  1. se placer dans une cellule de la base source, onglet Accueil, Mettre sous forme de tableau.
    Il ets mieux de nommer le tableau car Tableau1 n'est pas top...
  2. Utiliser Worksheets("Nomdelafeuille").listobjects(1) comme source du TCD ou bien simplement "Nom du Tableau"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
Worksheets("PA Production Planning").listobjects(1), Version:=xlPivotTableVersion12). _
CreatePivotTable TableDestination:="MINUTES_3311!R1C1", TableName:= _
"Tableau croisé dynamique10", DefaultVersion:=xlPivotTableVersion12

Merci,

Le fait de nommer le Tableau comme vous avez évoqué, on prend en consideration le nombre actuel de lignes du Tableau.

Lorsque je change mon Tableau source, le macro ne relève pas le nouveau nombre de lignes.

Re

C'est que tu n'a pas mis sous forme de tableau ou pas nommer le tableau mais autre chose ou encore que tu ne mets pas les

nouvelles lignes dans le tableau

Bref sans exemple concret...

Un tableau est un table et comme dans une base données, on n'a pas à se préoccuper de nombre de lignes, c'est Excel qui s'en charge

RE

Sans vouloir vous contre dire, voici ce que le code enregistre lorsque je met sous forme de tableau :

Sub la()

'

' la Macro

'

'

Range("A16").Select

ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$16:$AO$9036"), , xlYes).Name _

= "Tableau1"

Range("Tableau1[#All]").Select

ActiveSheet.ListObjects("Tableau1").TableStyle = "TableStyleLight1"

ActiveWindow.SmallScroll Down:=-12

ActiveSheet.ListObjects("Tableau1").Name = "Groupe"

Range("F10").Select

End Sub

9036 est le nombre de ligne actuel de mon tableau source pour faire le TCD.

Si je change ce tableau source qui n'aura pas forcément le même nombre de ligne, ma macro du TCD ne donnera pas des résultats correctes.

Bonjour,

Ci-dessous, un exemple pouer la création de ton tableau.

Cdlt.

Public Sub Create_Table()
Dim lo As ListObject
    With ActiveSheet
        Set lo = .ListObjects.Add(xlSrcRange, .Cells(16, 1).CurrentRegion, , xlYes)
    End With
    With lo
        .Name = "T_Groupe"
        .TableStyle = "TableStyleLight1"
    End With
End Sub

Re

Bonjour Jean-Eric

RE

Sans vouloir vous contre dire, voici ce que le code enregistre lorsque je met sous forme de tableau :

Sub la()

'

' la Macro.....

Je n'ai jamais dis de faire cela par VBA : un tableau se déclare une fois pour toutes donc manuellement cela suffit...

D'ailleurs de 2 choses l'une :

  • ou bien on utilise toujours le même classeur et on crée un tableau et le ou les TCD un fois pour toutes.
    C'est ce qui est conseillé dans la majorité des cas.
    On ajouteras ou supprimeras des lignes dans le tableau et les TCD suivront à l'actualisation.
  • ou bien on recrée tout à chaque fois pour un usage unique et dans ce cas la tableau perd de l'intérêt.
    Il faut juste apprendre à créer un TCD sur la partie remplie quelle que soit sa taille selon le principe indiqué par Jean-Eric
    Cells(16, 1).CurrentRegion

Là on ne sait pas trop le pourquoi de la création du TCD par VBA...

Merci pour vos réactions.

Par l'intermédiaire du code de Jean, j'ai pu appliqué ma macro du TCD sur tous mes tableaux quelque soit leurs nombre de lignes.

Encore merci

Rechercher des sujets similaires à "nombre lignes tcd"