OVH Cloud OVH Cloud

TCD Vba Plage dynamique

5 réponses
Avatar
Inglio
Bonjour à tous,

je me débrouille avec les TCD, avec Vba aussi, mais la conjonction des deux
me pose un soucis.

Je souhaite en effet créer un TCD à partir d'une plage de données dont le
nombre de colonnes est fixe, mais le nombre de lignes variable. Je connais
par ailleurs ce nombre de ligne. Mais impossible de "déclarer" mon TCD avec
cette variable car avec l'enregistreur la référence de la plage est donné en
xlR1C1 et je ne sais pas s'il est possible et si oui comment utiliser une
variable dans ce type de notation.

Voici mon bout de code qui pose pb :
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:="Recap!R1C1:R1457C6") _
.CreatePivotTable TableDestination:=Range("A2"), TableName:="PSAP1"
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("PSAP1").SmallGrid = False
ActiveSheet.PivotTables("PSAP1").AddFields RowFields:= _
Array("An_Surv", "Mois_Surv"), ColumnFields:=Array("An_Compta",
"Mois_Compta")
ActiveSheet.PivotTables("PSAP1").PivotFields("Montant"). _
Orientation = xlDataField
ActiveSheet.PivotTables("PSAP1").PivotFields("An_Surv"). _
Subtotals = Array(False, False, False, False, False, False, False,
False, False, False, _
False, False)

J'imagine qu'il existe plusieurs solutions différentes pour arriver à mes
fins. Merci d'avance pour votre réponse et excellente journée à tous. Inglio

5 réponses

Avatar
Cucky
Pourquoi tu n'indiquerais-pas un nombre de lignes de toute façon
supérieur au nombre maximum ? Il suffit ensuite dans ton TCD de
demander à ce qu'il n'affiche pas les lignes vides... ?!
Non ?

Bye
C.


Inglio wrote:
Bonjour à tous,

je me débrouille avec les TCD, avec Vba aussi, mais la conjonction des deux
me pose un soucis.

Je souhaite en effet créer un TCD à partir d'une plage de données d ont le
nombre de colonnes est fixe, mais le nombre de lignes variable. Je connais
par ailleurs ce nombre de ligne. Mais impossible de "déclarer" mon TCD avec
cette variable car avec l'enregistreur la référence de la plage est d onné en
xlR1C1 et je ne sais pas s'il est possible et si oui comment utiliser une
variable dans ce type de notation.

Voici mon bout de code qui pose pb :
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:="Recap!R1C1:R1457C6") _
.CreatePivotTable TableDestination:=Range("A2"), TableName:="PSAP 1"
ActiveSheet.PivotTableWizard TableDestination:¬tiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("PSAP1").SmallGrid = False
ActiveSheet.PivotTables("PSAP1").AddFields RowFields:= _
Array("An_Surv", "Mois_Surv"), ColumnFields:=Array("An_Compta",
"Mois_Compta")
ActiveSheet.PivotTables("PSAP1").PivotFields("Montant"). _
Orientation = xlDataField
ActiveSheet.PivotTables("PSAP1").PivotFields("An_Surv"). _
Subtotals = Array(False, False, False, False, False, False, Fal se,
False, False, False, _
False, False)

J'imagine qu'il existe plusieurs solutions différentes pour arriver à mes
fins. Merci d'avance pour votre réponse et excellente journée à tou s. Inglio


Avatar
Inglio
D'ores et déjà, merci pour ta réponse....à laquelle j'avais pensé et qui
fonctionne ,mais qui ne me paraît pas optimale. Je souhaitais simplement
perfectionner le système et améliorer mes connaissances dans le domaine.

S'il n'y a pas d'autres solutions, je me débrouillerai très bien avec cela
et merci encore, mais je suis preneur d'autre chose.

Kenavo. Lionel


Pourquoi tu n'indiquerais-pas un nombre de lignes de toute façon
supérieur au nombre maximum ? Il suffit ensuite dans ton TCD de
demander à ce qu'il n'affiche pas les lignes vides... ?!
Non ?

Bye
C.


Inglio wrote:
Bonjour à tous,

je me débrouille avec les TCD, avec Vba aussi, mais la conjonction des deux
me pose un soucis.

Je souhaite en effet créer un TCD à partir d'une plage de données dont le
nombre de colonnes est fixe, mais le nombre de lignes variable. Je connais
par ailleurs ce nombre de ligne. Mais impossible de "déclarer" mon TCD avec
cette variable car avec l'enregistreur la référence de la plage est donné en
xlR1C1 et je ne sais pas s'il est possible et si oui comment utiliser une
variable dans ce type de notation.

Voici mon bout de code qui pose pb :
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:="Recap!R1C1:R1457C6") _
.CreatePivotTable TableDestination:=Range("A2"), TableName:="PSAP1"
ActiveSheet.PivotTableWizard TableDestination:¬tiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("PSAP1").SmallGrid = False
ActiveSheet.PivotTables("PSAP1").AddFields RowFields:= _
Array("An_Surv", "Mois_Surv"), ColumnFields:=Array("An_Compta",
"Mois_Compta")
ActiveSheet.PivotTables("PSAP1").PivotFields("Montant"). _
Orientation = xlDataField
ActiveSheet.PivotTables("PSAP1").PivotFields("An_Surv"). _
Subtotals = Array(False, False, False, False, False, False, False,
False, False, False, _
False, False)

J'imagine qu'il existe plusieurs solutions différentes pour arriver à mes
fins. Merci d'avance pour votre réponse et excellente journée à tous. Inglio






Avatar
Daniel
Bonjour.
Tu spécifier :
SourceData:="PlageDynamique"
Cordialement.
Daniel
"Inglio" a écrit dans le message de news:

Bonjour à tous,

je me débrouille avec les TCD, avec Vba aussi, mais la conjonction des
deux
me pose un soucis.

Je souhaite en effet créer un TCD à partir d'une plage de données dont le
nombre de colonnes est fixe, mais le nombre de lignes variable. Je connais
par ailleurs ce nombre de ligne. Mais impossible de "déclarer" mon TCD
avec
cette variable car avec l'enregistreur la référence de la plage est donné
en
xlR1C1 et je ne sais pas s'il est possible et si oui comment utiliser une
variable dans ce type de notation.

Voici mon bout de code qui pose pb :
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:="Recap!R1C1:R1457C6") _
.CreatePivotTable TableDestination:=Range("A2"), TableName:="PSAP1"
ActiveSheet.PivotTableWizard TableDestination:¬tiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("PSAP1").SmallGrid = False
ActiveSheet.PivotTables("PSAP1").AddFields RowFields:= _
Array("An_Surv", "Mois_Surv"), ColumnFields:=Array("An_Compta",
"Mois_Compta")
ActiveSheet.PivotTables("PSAP1").PivotFields("Montant"). _
Orientation = xlDataField
ActiveSheet.PivotTables("PSAP1").PivotFields("An_Surv"). _
Subtotals = Array(False, False, False, False, False, False, False,
False, False, False, _
False, False)

J'imagine qu'il existe plusieurs solutions différentes pour arriver à mes
fins. Merci d'avance pour votre réponse et excellente journée à tous.
Inglio


Avatar
Inglio
Merci pour ta réponse. J'ai essayé, mais la "déclaration" de la plage se fait
en référence xlR1C1 avec l'enregistreur. D'où je tourne un peu en rond!
Mais merci quand même. Inglio


Bonjour.
Tu spécifier :
SourceData:="PlageDynamique"
Cordialement.
Daniel
"Inglio" a écrit dans le message de news:

Bonjour à tous,

je me débrouille avec les TCD, avec Vba aussi, mais la conjonction des
deux
me pose un soucis.

Je souhaite en effet créer un TCD à partir d'une plage de données dont le
nombre de colonnes est fixe, mais le nombre de lignes variable. Je connais
par ailleurs ce nombre de ligne. Mais impossible de "déclarer" mon TCD
avec
cette variable car avec l'enregistreur la référence de la plage est donné
en
xlR1C1 et je ne sais pas s'il est possible et si oui comment utiliser une
variable dans ce type de notation.

Voici mon bout de code qui pose pb :
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:="Recap!R1C1:R1457C6") _
.CreatePivotTable TableDestination:=Range("A2"), TableName:="PSAP1"
ActiveSheet.PivotTableWizard TableDestination:¬tiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("PSAP1").SmallGrid = False
ActiveSheet.PivotTables("PSAP1").AddFields RowFields:= _
Array("An_Surv", "Mois_Surv"), ColumnFields:=Array("An_Compta",
"Mois_Compta")
ActiveSheet.PivotTables("PSAP1").PivotFields("Montant"). _
Orientation = xlDataField
ActiveSheet.PivotTables("PSAP1").PivotFields("An_Surv"). _
Subtotals = Array(False, False, False, False, False, False, False,
False, False, False, _
False, False)

J'imagine qu'il existe plusieurs solutions différentes pour arriver à mes
fins. Merci d'avance pour votre réponse et excellente journée à tous.
Inglio







Avatar
Daniel
Oui, mais tu peux modifier le résultat de l'enregistreur.
Daniel
"Inglio" a écrit dans le message de news:

Merci pour ta réponse. J'ai essayé, mais la "déclaration" de la plage se
fait
en référence xlR1C1 avec l'enregistreur. D'où je tourne un peu en rond!
Mais merci quand même. Inglio


Bonjour.
Tu spécifier :
SourceData:="PlageDynamique"
Cordialement.
Daniel
"Inglio" a écrit dans le message de news:

Bonjour à tous,

je me débrouille avec les TCD, avec Vba aussi, mais la conjonction des
deux
me pose un soucis.

Je souhaite en effet créer un TCD à partir d'une plage de données dont
le
nombre de colonnes est fixe, mais le nombre de lignes variable. Je
connais
par ailleurs ce nombre de ligne. Mais impossible de "déclarer" mon TCD
avec
cette variable car avec l'enregistreur la référence de la plage est
donné
en
xlR1C1 et je ne sais pas s'il est possible et si oui comment utiliser
une
variable dans ce type de notation.

Voici mon bout de code qui pose pb :
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:="Recap!R1C1:R1457C6") _
.CreatePivotTable TableDestination:=Range("A2"), TableName:="PSAP1"
ActiveSheet.PivotTableWizard TableDestination:¬tiveSheet.Cells(3,
1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("PSAP1").SmallGrid = False
ActiveSheet.PivotTables("PSAP1").AddFields RowFields:= _
Array("An_Surv", "Mois_Surv"), ColumnFields:=Array("An_Compta",
"Mois_Compta")
ActiveSheet.PivotTables("PSAP1").PivotFields("Montant"). _
Orientation = xlDataField
ActiveSheet.PivotTables("PSAP1").PivotFields("An_Surv"). _
Subtotals = Array(False, False, False, False, False, False,
False,
False, False, False, _
False, False)

J'imagine qu'il existe plusieurs solutions différentes pour arriver à
mes
fins. Merci d'avance pour votre réponse et excellente journée à tous.
Inglio