TCD avec enregistreur de macros

Le
garnote
Bonsoir,

La cellule A1 est sélectionnée et contient le mot "Adresses"
Sous A1, 40 adresses apparaissent. Je crée un TCD après
avoir activé l'enregistreur de macros.
La macro enregistrée est la suivante :
Sub TCD()
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Baldwin rue!L1C1:L41C1", Version:=xlPivotTableVersion10).CreatePivotTable _
TableDestination:="Baldwin rue!L1C3", TableName:= _
"Tableau croisé dynamique9", DefaultVersion:=xlPivotTableVersion10
End Sub

Cependant quand je veux recréer le TCD en utilisant cette macro,
ça bloque au départ. Que dois-je modifier dans ladite macro pour
qu'elle fasse son boulot convenablement ?

Merci à l'avance,
Serge
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 #20099221
Bonjour Garnote,

Un TDC n'aime pas à se faire piler sur les pieds.
Si tu as déjà un TDC sur cette plage de cellules et que
tu tentes d'en créer un autre, il faudra d'abord que tu
supprimes le premier.

Voici un petit exemple comment procéder :

Comme par hasard, mon pivottable s'appelle "Denis"
'-----------------------------------------
Sub PivotTable()

Dim Adr As String 'Source
Dim Adr1 As String 'Destination
Dim PT As PivotTable

'Définir où sera copié le pivottable
With Feuil1 ' Worksheets("Feuil1")
Adr1 = .Name & "!" & .Range("A1").Address
'Supprime l'ancien pivotcache
.PivotTables("Denis").TableRange2.Delete
End With

With Worksheets("Feuil2")
'Définir où sont les données pour le pivotcache
Adr = .Name & "!" & .Range("A1:B" & _
.Range("B65536").End(xlUp).Row).Address

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, SourceData:=Range(Adr)) _
.CreatePivotTable(TableDestination:=Range(Adr1), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
With PT
.AddFields RowFields:="Élève"
PivotFields("résultat").Orientation = xlDataField
End With
End With

End Sub
'-----------------------------------------




"garnote"
Bonsoir,

La cellule A1 est sélectionnée et contient le mot "Adresses"
Sous A1, 40 adresses apparaissent. Je crée un TCD après
avoir activé l'enregistreur de macros.
La macro enregistrée est la suivante :
Sub TCD()
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Baldwin rue!L1C1:L41C1", Version:=xlPivotTableVersion10).CreatePivotTable _
TableDestination:="Baldwin rue!L1C3", TableName:= _
"Tableau croisé dynamique9", DefaultVersion:=xlPivotTableVersion10
End Sub

Cependant quand je veux recréer le TCD en utilisant cette macro,
ça bloque au départ. Que dois-je modifier dans ladite macro pour
qu'elle fasse son boulot convenablement ?

Merci à l'avance,
Serge
garnote
Le #20103641
Merci Denis,

J'y suis presque et je précise le contexte :
J'ai une macro qui génère des données
sur une feuille vierge dans la colonne A.
Titre : Adresses
La colonne A ne contient pas toujours
le même nombre de données.
Une fois les données inscrites, je veux faire
un TCD en lançant la macro avec en lignes "Adresses"
et à côté le "nombre d'adresses".
Début du TCD : Cellule B2.

Serge





"michdenis"
Bonjour Garnote,

Un TDC n'aime pas à se faire piler sur les pieds.
Si tu as déjà un TDC sur cette plage de cellules et que
tu tentes d'en créer un autre, il faudra d'abord que tu
supprimes le premier.

Voici un petit exemple comment procéder :

Comme par hasard, mon pivottable s'appelle "Denis"
'-----------------------------------------
Sub PivotTable()

Dim Adr As String 'Source
Dim Adr1 As String 'Destination
Dim PT As PivotTable

'Définir où sera copié le pivottable
With Feuil1 ' Worksheets("Feuil1")
Adr1 = .Name & "!" & .Range("A1").Address
'Supprime l'ancien pivotcache
.PivotTables("Denis").TableRange2.Delete
End With

With Worksheets("Feuil2")
'Définir où sont les données pour le pivotcache
Adr = .Name & "!" & .Range("A1:B" & _
.Range("B65536").End(xlUp).Row).Address

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, SourceData:=Range(Adr)) _
.CreatePivotTable(TableDestination:=Range(Adr1), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
With PT
.AddFields RowFields:="Élève"
PivotFields("résultat").Orientation = xlDataField
End With
End With

End Sub
'-----------------------------------------




"garnote" discussion :

Bonsoir,

La cellule A1 est sélectionnée et contient le mot "Adresses"
Sous A1, 40 adresses apparaissent. Je crée un TCD après
avoir activé l'enregistreur de macros.
La macro enregistrée est la suivante :
Sub TCD()
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Baldwin rue!L1C1:L41C1", Version:=xlPivotTableVersion10).CreatePivotTable
_
TableDestination:="Baldwin rue!L1C3", TableName:= _
"Tableau croisé dynamique9", DefaultVersion:=xlPivotTableVersion10
End Sub

Cependant quand je veux recréer le TCD en utilisant cette macro,
ça bloque au départ. Que dois-je modifier dans ladite macro pour
qu'elle fasse son boulot convenablement ?

Merci à l'avance,
Serge



michdenis
Le #20103801
| La colonne A ne contient pas toujours
| le même nombre de données.

Pourquoi ne pas utiliser une plage nommée qui emploie
une formule "Decaler()" pour la définir. Ainsi tu n'auras pas
à refaire le TDC à chaque fois, la mise à jour de ce dernier
sera suffisant.

Et si tu veux mettre à jour ton TDC par code, tu peux utiliser cette ligne de code :
worksheets("Feuil1").PivotTables(1).RefreshTable





"garnote" #
Merci Denis,

J'y suis presque et je précise le contexte :
J'ai une macro qui génère des données
sur une feuille vierge dans la colonne A.
Titre : Adresses
La colonne A ne contient pas toujours
le même nombre de données.
Une fois les données inscrites, je veux faire
un TCD en lançant la macro avec en lignes "Adresses"
et à côté le "nombre d'adresses".
Début du TCD : Cellule B2.

Serge





"michdenis"
Bonjour Garnote,

Un TDC n'aime pas à se faire piler sur les pieds.
Si tu as déjà un TDC sur cette plage de cellules et que
tu tentes d'en créer un autre, il faudra d'abord que tu
supprimes le premier.

Voici un petit exemple comment procéder :

Comme par hasard, mon pivottable s'appelle "Denis"
'-----------------------------------------
Sub PivotTable()

Dim Adr As String 'Source
Dim Adr1 As String 'Destination
Dim PT As PivotTable

'Définir où sera copié le pivottable
With Feuil1 ' Worksheets("Feuil1")
Adr1 = .Name & "!" & .Range("A1").Address
'Supprime l'ancien pivotcache
.PivotTables("Denis").TableRange2.Delete
End With

With Worksheets("Feuil2")
'Définir où sont les données pour le pivotcache
Adr = .Name & "!" & .Range("A1:B" & _
.Range("B65536").End(xlUp).Row).Address

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, SourceData:=Range(Adr)) _
.CreatePivotTable(TableDestination:=Range(Adr1), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
With PT
.AddFields RowFields:="Élève"
PivotFields("résultat").Orientation = xlDataField
End With
End With

End Sub
'-----------------------------------------




"garnote" discussion :

Bonsoir,

La cellule A1 est sélectionnée et contient le mot "Adresses"
Sous A1, 40 adresses apparaissent. Je crée un TCD après
avoir activé l'enregistreur de macros.
La macro enregistrée est la suivante :
Sub TCD()
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Baldwin rue!L1C1:L41C1", Version:=xlPivotTableVersion10).CreatePivotTable
_
TableDestination:="Baldwin rue!L1C3", TableName:= _
"Tableau croisé dynamique9", DefaultVersion:=xlPivotTableVersion10
End Sub

Cependant quand je veux recréer le TCD en utilisant cette macro,
ça bloque au départ. Que dois-je modifier dans ladite macro pour
qu'elle fasse son boulot convenablement ?

Merci à l'avance,
Serge



michdenis
Le #20104751
Si tu tiens à faire ton truc par macro :

sur la Feuil1 :
A ) Nom étiquette : Adresse en A1
B ) Liste d'adresse de A2 à Ax
C ) Pivottable dans la même feuille en B1
En B1 : Étiquette
En B2 : Nombre d'adresse

Tu peux lancer la macro aussi souvent que tu le désires !

'------------------------------------------
Sub PivotTable()

Dim Adr As String 'Source
Dim Adr1 As String 'Destination
Dim PT As PivotTable

'cette ligne est requise car à
'la première exécution, il n'y a pas
'de TDC à supprimer
On Error Resume Next

'Définir où sera copié le pivottable
With Feuil1 ' Worksheets("Feuil1")
Adr1 = .Name & "!" & .Range("B1").Address
'Supprime l'ancien pivotcache
.PivotTables("Denis").TableRange2.Delete
End With

With Worksheets("Feuil1")
'Définir où sont les données pour le pivotcache
Adr = .Name & "!" & .Range("A1:A" & _
.Range("A65536").End(xlUp).Row).Address

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, SourceData:=Range(Adr)) _
.CreatePivotTable(TableDestination:=Range(Adr1), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
With PT
.AddDataField .PivotFields("adresse"), _
"Nombre de adresse", xlCount
End With
End With
End Sub
'------------------------------------------



"michdenis"
| La colonne A ne contient pas toujours
| le même nombre de données.

Pourquoi ne pas utiliser une plage nommée qui emploie
une formule "Decaler()" pour la définir. Ainsi tu n'auras pas
à refaire le TDC à chaque fois, la mise à jour de ce dernier
sera suffisant.

Et si tu veux mettre à jour ton TDC par code, tu peux utiliser cette ligne de code :
worksheets("Feuil1").PivotTables(1).RefreshTable





"garnote" #
Merci Denis,

J'y suis presque et je précise le contexte :
J'ai une macro qui génère des données
sur une feuille vierge dans la colonne A.
Titre : Adresses
La colonne A ne contient pas toujours
le même nombre de données.
Une fois les données inscrites, je veux faire
un TCD en lançant la macro avec en lignes "Adresses"
et à côté le "nombre d'adresses".
Début du TCD : Cellule B2.

Serge





"michdenis"
Bonjour Garnote,

Un TDC n'aime pas à se faire piler sur les pieds.
Si tu as déjà un TDC sur cette plage de cellules et que
tu tentes d'en créer un autre, il faudra d'abord que tu
supprimes le premier.

Voici un petit exemple comment procéder :

Comme par hasard, mon pivottable s'appelle "Denis"
'-----------------------------------------
Sub PivotTable()

Dim Adr As String 'Source
Dim Adr1 As String 'Destination
Dim PT As PivotTable

'Définir où sera copié le pivottable
With Feuil1 ' Worksheets("Feuil1")
Adr1 = .Name & "!" & .Range("A1").Address
'Supprime l'ancien pivotcache
.PivotTables("Denis").TableRange2.Delete
End With

With Worksheets("Feuil2")
'Définir où sont les données pour le pivotcache
Adr = .Name & "!" & .Range("A1:B" & _
.Range("B65536").End(xlUp).Row).Address

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, SourceData:=Range(Adr)) _
.CreatePivotTable(TableDestination:=Range(Adr1), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
With PT
.AddFields RowFields:="Élève"
PivotFields("résultat").Orientation = xlDataField
End With
End With

End Sub
'-----------------------------------------




"garnote" discussion :

Bonsoir,

La cellule A1 est sélectionnée et contient le mot "Adresses"
Sous A1, 40 adresses apparaissent. Je crée un TCD après
avoir activé l'enregistreur de macros.
La macro enregistrée est la suivante :
Sub TCD()
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Baldwin rue!L1C1:L41C1", Version:=xlPivotTableVersion10).CreatePivotTable
_
TableDestination:="Baldwin rue!L1C3", TableName:= _
"Tableau croisé dynamique9", DefaultVersion:=xlPivotTableVersion10
End Sub

Cependant quand je veux recréer le TCD en utilisant cette macro,
ça bloque au départ. Que dois-je modifier dans ladite macro pour
qu'elle fasse son boulot convenablement ?

Merci à l'avance,
Serge



garnote
Le #20120661
Ave vous,

J'ai essayé ta macro en remplaçant With Feuil1
et With Worksheets("Feuil1") par With ActiveSheet
et rien ne se passe !
Où erre-je ?

Serge


"michdenis"
Si tu tiens à faire ton truc par macro :

sur la Feuil1 :
A ) Nom étiquette : Adresse en A1
B ) Liste d'adresse de A2 à Ax
C ) Pivottable dans la même feuille en B1
En B1 : Étiquette
En B2 : Nombre d'adresse

Tu peux lancer la macro aussi souvent que tu le désires !

'------------------------------------------
Sub PivotTable()

Dim Adr As String 'Source
Dim Adr1 As String 'Destination
Dim PT As PivotTable

'cette ligne est requise car à
'la première exécution, il n'y a pas
'de TDC à supprimer
On Error Resume Next

'Définir où sera copié le pivottable
With Feuil1 ' Worksheets("Feuil1")
Adr1 = .Name & "!" & .Range("B1").Address
'Supprime l'ancien pivotcache
.PivotTables("Denis").TableRange2.Delete
End With

With Worksheets("Feuil1")
'Définir où sont les données pour le pivotcache
Adr = .Name & "!" & .Range("A1:A" & _
.Range("A65536").End(xlUp).Row).Address

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, SourceData:=Range(Adr)) _
.CreatePivotTable(TableDestination:=Range(Adr1), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
With PT
.AddDataField .PivotFields("adresse"), _
"Nombre de adresse", xlCount
End With
End With
End Sub
'------------------------------------------



"michdenis" discussion :

| La colonne A ne contient pas toujours
| le même nombre de données.

Pourquoi ne pas utiliser une plage nommée qui emploie
une formule "Decaler()" pour la définir. Ainsi tu n'auras pas
à refaire le TDC à chaque fois, la mise à jour de ce dernier
sera suffisant.

Et si tu veux mettre à jour ton TDC par code, tu peux utiliser cette ligne
de code :
worksheets("Feuil1").PivotTables(1).RefreshTable





"garnote" discussion :
#
Merci Denis,

J'y suis presque et je précise le contexte :
J'ai une macro qui génère des données
sur une feuille vierge dans la colonne A.
Titre : Adresses
La colonne A ne contient pas toujours
le même nombre de données.
Une fois les données inscrites, je veux faire
un TCD en lançant la macro avec en lignes "Adresses"
et à côté le "nombre d'adresses".
Début du TCD : Cellule B2.

Serge





"michdenis"
Bonjour Garnote,

Un TDC n'aime pas à se faire piler sur les pieds.
Si tu as déjà un TDC sur cette plage de cellules et que
tu tentes d'en créer un autre, il faudra d'abord que tu
supprimes le premier.

Voici un petit exemple comment procéder :

Comme par hasard, mon pivottable s'appelle "Denis"
'-----------------------------------------
Sub PivotTable()

Dim Adr As String 'Source
Dim Adr1 As String 'Destination
Dim PT As PivotTable

'Définir où sera copié le pivottable
With Feuil1 ' Worksheets("Feuil1")
Adr1 = .Name & "!" & .Range("A1").Address
'Supprime l'ancien pivotcache
.PivotTables("Denis").TableRange2.Delete
End With

With Worksheets("Feuil2")
'Définir où sont les données pour le pivotcache
Adr = .Name & "!" & .Range("A1:B" & _
.Range("B65536").End(xlUp).Row).Address

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, SourceData:=Range(Adr)) _
.CreatePivotTable(TableDestination:=Range(Adr1), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
With PT
.AddFields RowFields:="Élève"
PivotFields("résultat").Orientation = xlDataField
End With
End With

End Sub
'-----------------------------------------




"garnote" discussion :

Bonsoir,

La cellule A1 est sélectionnée et contient le mot "Adresses"
Sous A1, 40 adresses apparaissent. Je crée un TCD après
avoir activé l'enregistreur de macros.
La macro enregistrée est la suivante :
Sub TCD()
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Baldwin rue!L1C1:L41C1",
Version:=xlPivotTableVersion10).CreatePivotTable
_
TableDestination:="Baldwin rue!L1C3", TableName:= _
"Tableau croisé dynamique9", DefaultVersion:=xlPivotTableVersion10
End Sub

Cependant quand je veux recréer le TCD en utilisant cette macro,
ça bloque au départ. Que dois-je modifier dans ladite macro pour
qu'elle fasse son boulot convenablement ?

Merci à l'avance,
Serge






michdenis
Le #20121651
http://cjoint.com/?jluLwyxmIA



"garnote"
Ave vous,

J'ai essayé ta macro en remplaçant With Feuil1
et With Worksheets("Feuil1") par With ActiveSheet
et rien ne se passe !
Où erre-je ?

Serge


"michdenis"
Si tu tiens à faire ton truc par macro :

sur la Feuil1 :
A ) Nom étiquette : Adresse en A1
B ) Liste d'adresse de A2 à Ax
C ) Pivottable dans la même feuille en B1
En B1 : Étiquette
En B2 : Nombre d'adresse

Tu peux lancer la macro aussi souvent que tu le désires !

'------------------------------------------
Sub PivotTable()

Dim Adr As String 'Source
Dim Adr1 As String 'Destination
Dim PT As PivotTable

'cette ligne est requise car à
'la première exécution, il n'y a pas
'de TDC à supprimer
On Error Resume Next

'Définir où sera copié le pivottable
With Feuil1 ' Worksheets("Feuil1")
Adr1 = .Name & "!" & .Range("B1").Address
'Supprime l'ancien pivotcache
.PivotTables("Denis").TableRange2.Delete
End With

With Worksheets("Feuil1")
'Définir où sont les données pour le pivotcache
Adr = .Name & "!" & .Range("A1:A" & _
.Range("A65536").End(xlUp).Row).Address

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, SourceData:=Range(Adr)) _
.CreatePivotTable(TableDestination:=Range(Adr1), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
With PT
.AddDataField .PivotFields("adresse"), _
"Nombre de adresse", xlCount
End With
End With
End Sub
'------------------------------------------



"michdenis" discussion :

| La colonne A ne contient pas toujours
| le même nombre de données.

Pourquoi ne pas utiliser une plage nommée qui emploie
une formule "Decaler()" pour la définir. Ainsi tu n'auras pas
à refaire le TDC à chaque fois, la mise à jour de ce dernier
sera suffisant.

Et si tu veux mettre à jour ton TDC par code, tu peux utiliser cette ligne
de code :
worksheets("Feuil1").PivotTables(1).RefreshTable





"garnote" discussion :
#
Merci Denis,

J'y suis presque et je précise le contexte :
J'ai une macro qui génère des données
sur une feuille vierge dans la colonne A.
Titre : Adresses
La colonne A ne contient pas toujours
le même nombre de données.
Une fois les données inscrites, je veux faire
un TCD en lançant la macro avec en lignes "Adresses"
et à côté le "nombre d'adresses".
Début du TCD : Cellule B2.

Serge





"michdenis"
Bonjour Garnote,

Un TDC n'aime pas à se faire piler sur les pieds.
Si tu as déjà un TDC sur cette plage de cellules et que
tu tentes d'en créer un autre, il faudra d'abord que tu
supprimes le premier.

Voici un petit exemple comment procéder :

Comme par hasard, mon pivottable s'appelle "Denis"
'-----------------------------------------
Sub PivotTable()

Dim Adr As String 'Source
Dim Adr1 As String 'Destination
Dim PT As PivotTable

'Définir où sera copié le pivottable
With Feuil1 ' Worksheets("Feuil1")
Adr1 = .Name & "!" & .Range("A1").Address
'Supprime l'ancien pivotcache
.PivotTables("Denis").TableRange2.Delete
End With

With Worksheets("Feuil2")
'Définir où sont les données pour le pivotcache
Adr = .Name & "!" & .Range("A1:B" & _
.Range("B65536").End(xlUp).Row).Address

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, SourceData:=Range(Adr)) _
.CreatePivotTable(TableDestination:=Range(Adr1), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
With PT
.AddFields RowFields:="Élève"
PivotFields("résultat").Orientation = xlDataField
End With
End With

End Sub
'-----------------------------------------




"garnote" discussion :

Bonsoir,

La cellule A1 est sélectionnée et contient le mot "Adresses"
Sous A1, 40 adresses apparaissent. Je crée un TCD après
avoir activé l'enregistreur de macros.
La macro enregistrée est la suivante :
Sub TCD()
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Baldwin rue!L1C1:L41C1",
Version:=xlPivotTableVersion10).CreatePivotTable
_
TableDestination:="Baldwin rue!L1C3", TableName:= _
"Tableau croisé dynamique9", DefaultVersion:=xlPivotTableVersion10
End Sub

Cependant quand je veux recréer le TCD en utilisant cette macro,
ça bloque au départ. Que dois-je modifier dans ladite macro pour
qu'elle fasse son boulot convenablement ?

Merci à l'avance,
Serge






Publicité
Poster une réponse
Anonyme