tableau croisé avec collone dynamique

Le
miofan Hors ligne
Bonjour,

apres plusieurs jour de recherche je vous pose mon probleme,

je souhaite mettre à jour un tcd apres avoir ajouté des lignes et des collones.
je recherche avec comme base ceci:

Range("a1" ).CurrentRegion.Select

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
Sheets("Feuil1" ).Range("a1" ).CurrentRegion).PivotTables("Tableau croisé dynamique3" ).PivotCache.Refresh , _
DefaultVersion:=xlPivotTableVersion10

mais pas de resultat jusqu'à present,

pouvez vous m'aider ,

Merci d'avance
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #22924161
Bonjour,

Voici un exemple de code :

Si tu utilises ce type de code :
Adr = .Name & "!" & .Range("A1").CurrentRegion.Address
La feuille ne doit pas être protégée

'---------------------------------------------
Sub CreerTCD()
'Déclaration des variables
Dim Adr As String, Dest As String
Dim Pc As PivotCache
Dim Pt As PivotTable

'Si le TDC existe déjà il faut le supprimer
'avant de relancer la procédure sinon une
'erreur est générée c'est ce pourquoi j'ajoute
'la ligne de code suivante :
'On Error Resume Next
'Feuil1.PivotTables("Denis").TableRange2.Clear

'On Error Resume Next
With ActiveWorkbook
'Avec la feuille source des données
'(adapter le nom de la feuille + plage de cellules)
With .Worksheets("feuil1")
'Définir la plage de data source
Adr = .Name & "!" & .Range("A1").CurrentRegion.Address
End With
'Avec la feuille où le TDC sera crée :
'adapter le nom de la feuille et la plage de cellule
With .Worksheets("Feuil2")
'Effacer le tdc si il existe
.PivotTables("Denis").TableRange2.Clear
'Définir la cellule où sera créé le TDC
Dest = .Name & "!" & .Range("A4").Address
End With
'Création du PivotCache
Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:­r)
'création du PivotTable
Set Pt = Pc.CreatePivotTable(TableDestination:=Range(Dest), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
End With

With Pt
'Ajout d'un champ en ligne
.AddFields RowFields:="Étudiant"
'Ajout d'un champ "Data" dans le TDC
.PivotFields("Note").Orientation = xlDataField
End With
End Sub
'---------------------------------------------


MichD
--------------------------------------------
"miofan" a écrit dans le message de groupe de discussion :

Bonjour,

apres plusieurs jour de recherche je vous pose mon probleme,

je souhaite mettre à jour un tcd apres avoir ajouté des lignes et des collones.

je recherche avec comme base ceci:

Range("a1" ).CurrentRegion.Select

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
Sheets("Feuil1" ).Range("a1" ).CurrentRegion).PivotTables("Tableau croisé
dynamique3" ).PivotCache.Refresh , _
DefaultVersion:=xlPivotTableVersion10

mais pas de resultat jusqu'à present,

pouvez vous m'aider ,

Merci d'avance
miofan Hors ligne
Le #22924321
michdenis a écrit le 14/12/2010 à 13h49 :
Bonjour,

Voici un exemple de code :

Si tu utilises ce type de code :
Adr = .Name & "!" &
.Range("A1").CurrentRegion.Address
La feuille ne doit pas être protégée

'---------------------------------------------
Sub CreerTCD()
'Déclaration des variables
Dim Adr As String, Dest As String
Dim Pc As PivotCache
Dim Pt As PivotTable

'Si le TDC existe déjà il faut le supprimer
'avant de relancer la procédure sinon une
'erreur est générée c'est ce pourquoi j'ajoute
'la ligne de code suivante :
'On Error Resume Next
'Feuil1.PivotTables("Denis").TableRange2.Clear

'On Error Resume Next
With ActiveWorkbook
'Avec la feuille source des données
'(adapter le nom de la feuille + plage de cellules)
With .Worksheets("feuil1")
'Définir la plage de data source
Adr = .Name & "!" &
.Range("A1").CurrentRegion.Address
End With
'Avec la feuille où le TDC sera crée :
'adapter le nom de la feuille et la plage de cellule
With .Worksheets("Feuil2")
'Effacer le tdc si il existe
.PivotTables("Denis").TableRange2.Clear
'Définir la cellule où sera créé le TDC
Dest = .Name & "!" & .Range("A4").Address
End With
'Création du PivotCache
Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:­r)
'création du PivotTable
Set Pt = Pc.CreatePivotTable(TableDestination:=Range(Dest), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
End With

With Pt
'Ajout d'un champ en ligne
.AddFields RowFields:="Étudiant"
'Ajout d'un champ "Data" dans le TDC
.PivotFields("Note").Orientation = xlDataField
End With
End Sub
'---------------------------------------------


MichD
--------------------------------------------
"miofan" a écrit dans le message de groupe de discussion :


Bonjour,

apres plusieurs jour de recherche je vous pose mon probleme,

je souhaite mettre à jour un tcd apres avoir ajouté des lignes et
des collones.

je recherche avec comme base ceci:

Range("a1" ).CurrentRegion.Select

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
Sheets("Feuil1" ).Range("a1"
).CurrentRegion).PivotTables("Tableau croisé
dynamique3" ).PivotCache.Refresh , _
DefaultVersion:=xlPivotTableVersion10

mais pas de resultat jusqu'à present,

pouvez vous m'aider ,

Merci d'avance


Merci pour cette réponse,

j'ai copié le code mais j'ai une erreur dans la ligne:

Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:­r)

je pense que le point après Set Pc = est de trop ou il manque quelque chose .

peux tu confirmer ?

Merci
michdenis
Le #22924541
Un fichier exemple : http://cjoint.com/?0moqxpfdNH


MichD
--------------------------------------------
"miofan" a écrit dans le message de groupe de discussion :

michdenis a écrit le 14/12/2010 à 13h49 :
Bonjour,

Voici un exemple de code :

Si tu utilises ce type de code :
Adr = .Name & "!" &
.Range("A1").CurrentRegion.Address
La feuille ne doit pas être protégée

'---------------------------------------------
Sub CreerTCD()
'Déclaration des variables
Dim Adr As String, Dest As String
Dim Pc As PivotCache
Dim Pt As PivotTable

'Si le TDC existe déjà il faut le supprimer
'avant de relancer la procédure sinon une
'erreur est générée c'est ce pourquoi j'ajoute
'la ligne de code suivante :
'On Error Resume Next
'Feuil1.PivotTables("Denis").TableRange2.Clear

'On Error Resume Next
With ActiveWorkbook
'Avec la feuille source des données
'(adapter le nom de la feuille + plage de cellules)
With .Worksheets("feuil1")
'Définir la plage de data source
Adr = .Name & "!" &
.Range("A1").CurrentRegion.Address
End With
'Avec la feuille où le TDC sera crée :
'adapter le nom de la feuille et la plage de cellule
With .Worksheets("Feuil2")
'Effacer le tdc si il existe
.PivotTables("Denis").TableRange2.Clear
'Définir la cellule où sera créé le TDC
Dest = .Name & "!" & .Range("A4").Address
End With
'Création du PivotCache
Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:­r)
'création du PivotTable
Set Pt = Pc.CreatePivotTable(TableDestination:=Range(Dest), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
End With

With Pt
'Ajout d'un champ en ligne
.AddFields RowFields:="Étudiant"
'Ajout d'un champ "Data" dans le TDC
.PivotFields("Note").Orientation = xlDataField
End With
End Sub
'---------------------------------------------


MichD
--------------------------------------------
"miofan" a écrit dans le message de groupe de discussion :


Bonjour,

apres plusieurs jour de recherche je vous pose mon probleme,

je souhaite mettre à jour un tcd apres avoir ajouté des lignes et
des collones.

je recherche avec comme base ceci:

Range("a1" ).CurrentRegion.Select

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
Sheets("Feuil1" ).Range("a1"
).CurrentRegion).PivotTables("Tableau croisé
dynamique3" ).PivotCache.Refresh , _
DefaultVersion:=xlPivotTableVersion10

mais pas de resultat jusqu'à present,

pouvez vous m'aider ,

Merci d'avance


Merci pour cette réponse,

j'ai copié le code mais j'ai une erreur dans la ligne:

Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:­r)

je pense que le point après Set Pc = est de trop ou il manque quelque chose .

peux tu confirmer ?

Merci
miofan Hors ligne
Le #22925851
michdenis a écrit le 14/12/2010 à 16h58 :
Un fichier exemple : http://cjoint.com/?0moqxpfdNH


MichD
--------------------------------------------
"miofan" a écrit dans le message de groupe de discussion :


michdenis a écrit le 14/12/2010 à 13h49 :
Bonjour,

Voici un exemple de code :

Si tu utilises ce type de code :
Adr = .Name & "!" &
.Range("A1").CurrentRegion.Address
La feuille ne doit pas être protégée

'---------------------------------------------
Sub CreerTCD()
'Déclaration des variables
Dim Adr As String, Dest As String
Dim Pc As PivotCache
Dim Pt As PivotTable

'Si le TDC existe déjà il faut le supprimer
'avant de relancer la procédure sinon une
'erreur est générée c'est ce pourquoi j'ajoute
'la ligne de code suivante :
'On Error Resume Next
'Feuil1.PivotTables("Denis").TableRange2.Clear

'On Error Resume Next
With ActiveWorkbook
'Avec la feuille source des données
'(adapter le nom de la feuille + plage de cellules)
With .Worksheets("feuil1")
'Définir la plage de data source
Adr = .Name & "!" &
.Range("A1").CurrentRegion.Address
End With
'Avec la feuille où le TDC sera crée :
'adapter le nom de la feuille et la plage de cellule
With .Worksheets("Feuil2")
'Effacer le tdc si il existe
.PivotTables("Denis").TableRange2.Clear
'Définir la cellule où sera créé le TDC
Dest = .Name & "!" & .Range("A4").Address
End With
'Création du PivotCache
Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:­r)
'création du PivotTable
Set Pt = Pc.CreatePivotTable(TableDestination:=Range(Dest), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
End With

With Pt
'Ajout d'un champ en ligne
.AddFields RowFields:="Étudiant"
'Ajout d'un champ "Data" dans le TDC
.PivotFields("Note").Orientation = xlDataField
End With
End Sub
'---------------------------------------------


MichD
--------------------------------------------
"miofan" a écrit dans le message de groupe de discussion :


Bonjour,

apres plusieurs jour de recherche je vous pose mon probleme,

je souhaite mettre à jour un tcd apres avoir ajouté des lignes
et
des collones.

je recherche avec comme base ceci:

Range("a1" ).CurrentRegion.Select

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
Sheets("Feuil1" ).Range("a1"
).CurrentRegion).PivotTables("Tableau croisé
dynamique3" ).PivotCache.Refresh , _
DefaultVersion:=xlPivotTableVersion10

mais pas de resultat jusqu'à present,

pouvez vous m'aider ,

Merci d'avance



Merci pour cette réponse,

j'ai copié le code mais j'ai une erreur dans la ligne:

Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:­r)

je pense que le point après Set Pc = est de trop ou il manque quelque
chose .

peux tu confirmer ?

Merci


merci cela fonctionne,

j'ai bricolé ceci que j'ai mis sur la feuille des données ce qui fonctionne bien aussi:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
DC = ActiveSheet.UsedRange.Columns.Count
With ActiveWorkbook.Worksheets("feuil1")
zone = .Name & "!" & "C1" & ":" & "C" & DC
End With
Sheets("Feuil4").Select
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
zone
ActiveWorkbook.ShowPivotTableFieldList = True
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
Sheets("Feuil1").Select
Application.ScreenUpdating = True
End Sub

merci encore et à bientot
Gloops
Le #22928851
miofan a écrit, le 14/12/2010 15:57 :
j'ai copié le code mais j'ai une erreur dans la ligne:

Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:­r)

je pense que le point après Set Pc = est de trop ou il manque quelq ue chose .

peux tu confirmer ?

Merci



Le point renvoie à la clause With sur une ligne au-dessus et End With
sur une ligne en dessous.
Publicité
Poster une réponse
Anonyme