Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Plage de données variables dans un TCD constitué par VBA

3 réponses
Avatar
Rosalie Mignon
Bonjour à tous

Je constitue un tableau croisé par vba en enregistrement automatique.
Comment faire pour que la plage de données du code enregistré corresponde à
chaque fois à la totalité du tableau
quel que soit le nombre de lignes.

Merci d'avance pour vos réponses

3 réponses

Avatar
AV
Comment faire pour que la plage de données du code enregistré corresponde à
chaque fois à la totalité du tableau
quel que soit le nombre de lignes.


Nommer la plage du TCD de façon dynamique
Exemple avec un tableau en A1:Kx
(A1:K1 contient les étiquettes de colonnes)
Insertion > nom > définir > nom dans le classeur : "tablo" > fait réf à :
ÞCALER($A$1;;;NBVAL($A:$A);NBVAL($A$1:$K$1))

Tu utilises ensuite le nom "tablo" pour définir la plage
AV

Avatar
poy-poy
Bonjour Rosalie,

Il faut que tu définisse ta plage source sous vba :

Tout depend si tu cree le pivot par ta macro ou non. Si oui et en supposant
que ta base de donnée va de A1 à ? col :

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
range([A1],[A1].end(xlright).end(xldown)).CreatePivotTable _
TableDestination:= _
ActiveSheet.(100,100), TableName:="PivotTable1"

Donc la tu cree un pivot avec comme source ta base de donnée de A1 à la
cellule la plus a droite de la ligne1 et la cellule la plus basse de cette
colonne. Attention, si tu as des champs vides tu risque de ne pas récupérer
la dernière colonne ou ligne. Il faudra alors ou remplir ces champs (de 0 par
exemple) ou essayé de passer par l'autre sens [IR1].end(xlleft) (bon si tu as
d'autres données à coté ca rate aussi masi on la on fera autre chose :-).

Si tu veux juste lui changer sa source, même commentaire et la ligne vba est:


ActiveSheet.PivotTables("PivotTable1").SourceData:=range([A1],[A1].end(xlright).end(xldown)

Voila, j'esper que cela marchera :-P

Cordialement
benjamin


Bonjour à tous

Je constitue un tableau croisé par vba en enregistrement automatique.
Comment faire pour que la plage de données du code enregistré corresponde à
chaque fois à la totalité du tableau
quel que soit le nombre de lignes.

Merci d'avance pour vos réponses





Avatar
Rosalie Mignon
Problème résolu grace à vos réponses

Un grand merci


"Rosalie Mignon" a écrit dans le message de
news:%
Bonjour à tous

Je constitue un tableau croisé par vba en enregistrement automatique.
Comment faire pour que la plage de données du code enregistré corresponde
à

chaque fois à la totalité du tableau
quel que soit le nombre de lignes.

Merci d'avance pour vos réponses