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

TCD avec enregistreur de macros

6 réponses
Avatar
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

6 réponses

Avatar
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" a écrit dans le message de groupe de 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
Avatar
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" a écrit dans le message de news:

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" a écrit dans le message de groupe de
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



Avatar
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" a écrit dans le message de groupe de 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" a écrit dans le message de news:

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" a écrit dans le message de groupe de
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



Avatar
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" a écrit dans le message de groupe de 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" a écrit dans le message de groupe de 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" a écrit dans le message de news:

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" a écrit dans le message de groupe de
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



Avatar
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" a écrit dans le message de news:

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" a écrit dans le message de groupe de
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" a écrit dans le message de groupe de
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" a écrit dans le message de news:

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" a écrit dans le message de groupe de
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






Avatar
michdenis
http://cjoint.com/?jluLwyxmIA



"garnote" a écrit dans le message de groupe de discussion :

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" a écrit dans le message de news:

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" a écrit dans le message de groupe de
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" a écrit dans le message de groupe de
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" a écrit dans le message de news:

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" a écrit dans le message de groupe de
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