Tableau croisé dynamique et Macro

C

CLBR

Guest
Bonjour
Merci d'avance à qui pourra m'aider pour mettre en place une macro à partir d'une feuille de données "Données" comportant un nombre variable de lignes 2 à plusieurs milliers et un nombre fixe de 37 colonne

je cherche à pouvoir utiliser la même macro quelque soit ce nombre de ligne
Je ne sais pas comment obtenir, dans ce cas, la zone depuis A3 jusqu'à LastCellme permettant de poursuivre la construction de mes tableaux.
C'est le R1402C37 qui me gêne : Comment écrire R"iLast-Line"C37

Sheets("Données").Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Données!R3C1:R1402C37").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique1"
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select

Merci d'avance
 
D

Dan

Guest
Bonsoir,

Voici une solution

1. Dans ta sheet "Données", sélectionne la base de données complète
2. Attribue lui un nom via menu/insertion/nom/ définir (ex : Database)
3. Dans ta macro, remplace "Données!R3C1:R1402C37" par le nom que tu as attribué à ta base de données (ici ex "Database")

petite condition toutefois, lorsque tu ajouteras des données veille bien à les insérer à l'intérieur su tableau existant (donc avant la dernière ligne) et non à la suite de la dernière ligne. Cette astuce te permettra de conserver l'entièreté du tableau sous le nom que tu as donné.

Si tu vois une contrainte à cela, fais le savoir

Bon travail

@+ dan
 
C

CLBR

Guest
Bonjour Dan
J'ai fini par trouver une solution qui marche quelque soit le nombre de lignes.

Sheets("DONNEES").Select
Range("A3").Select

'Selection de la zone : attention le n° de colonne est figé au n° 37 (colonne AK)
Selection.End(xlDown).Select
iLastLine = Selection.Row

'Insertion de la zone dans la définition du TCD
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"DONNEES!R3C1:R" & iLastLine & "C37").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique1"

'Réalisation du croisement
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1").SmallGrid = False
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddFields RowFields:= _
Array("xxx", "yyy"), ColumnFields:="zzz"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"N° Fiche")
.Orientation = xlDataField
.Function = xlCountNums
End With

Merci encore
 

Discussions similaires

Réponses
1
Affichages
588

Statistiques des forums

Discussions
314 017
Messages
2 104 583
Membres
109 084
dernier inscrit
mizab