![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
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:=xlDatab ase, 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 |
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#4 (permalink) |
|
Guest
Messages: n/a
|
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:=xlDatab ase, 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 |
| Liens sociaux |
| Outils de la discussion | |
|
|