Tableau croisé dynamique et Macro

  • Initiateur de la discussion Initiateur de la discussion CLBR
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
711
Réponses
69
Affichages
9 K
Réponses
1
Affichages
2 K
Compte Supprimé 979
C
Réponses
4
Affichages
1 K
Retour