Mon application génère une feuille avec des résultats. Dans une autre
feuille, je crée manuellement un TCD alimenté par les données de ma feuille
résultats.
Pour cela et par manque d'expérience, j'ai enregistré une macro. En
regardant le code de cette macro, il y a 3 champs qui semblent dynamiques.
TableName:="Tableau croisé dynamique14"
ActiveSheet.PivotTables("Tableau croisé dynamique14")
PivotTables("Tableau croisé dynamique14")
Le chiffre "14" est incrémenté à chaque fois que je reconstruis mon tableau.
Si je supprime puis recrée la feuille incluant le TCD, et si je réutilise ma
macro pour créer le TCD, il faut que je modifie mes variables avec le
chiffre "15".
D'où ma question. Peut on avoir toujours le même indice ".." pour ne pas
modifier ma macro.
Merci.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour,
Voici un petit exemple simple de code.
à chaque exécution de code, la procédure supprime le TDC "Denis" et le recrée. Tu pourrais utiliser une plage de cellule définit dynamiquement en utilisant une "plage nommée" et la fonction decaler(). Tu obtiendrais à titre d'exemple : Nom : MichD fait référence à : ÞCALER($A$1;;;NBVAL($A:$A);NBVAL($1:$1))
Et pour mettre à jour ton TDC "MichD" dans ta feuille "MichD" Sub Test() Worksheets("MichD").PivotTables("MichD").PivotCache.Refresh End Sub
Voici un exemple simple comment procéder : En colonne A:A des Noms d'élève et dans la colonne B:B des notes d'étudiant. Le PivotTable tient compte des modifications apportées à la plage de cellules à chaque exécution de la procédure.
'----------------------------- 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
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:B" & _ .Range("A65536").End(xlUp).Row).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 -------------------------------------------- "dyj Orange" a écrit dans le message de groupe de discussion : 4cd98012$0$5405$
Mon application génère une feuille avec des résultats. Dans une autre feuille, je crée manuellement un TCD alimenté par les données de ma feuille résultats. Pour cela et par manque d'expérience, j'ai enregistré une macro. En regardant le code de cette macro, il y a 3 champs qui semblent dynamiques. TableName:="Tableau croisé dynamique14" ActiveSheet.PivotTables("Tableau croisé dynamique14") PivotTables("Tableau croisé dynamique14")
Le chiffre "14" est incrémenté à chaque fois que je reconstruis mon tableau. Si je supprime puis recrée la feuille incluant le TCD, et si je réutilise ma macro pour créer le TCD, il faut que je modifie mes variables avec le chiffre "15".
D'où ma question. Peut on avoir toujours le même indice ".." pour ne pas modifier ma macro. Merci.
Bonjour,
Voici un petit exemple simple de code.
à chaque exécution de code, la procédure supprime le TDC "Denis"
et le recrée. Tu pourrais utiliser une plage de cellule définit
dynamiquement en utilisant une "plage nommée" et la fonction
decaler(). Tu obtiendrais à titre d'exemple :
Nom : MichD
fait référence à :
ÞCALER($A$1;;;NBVAL($A:$A);NBVAL($1:$1))
Et pour mettre à jour ton TDC "MichD" dans ta feuille "MichD"
Sub Test()
Worksheets("MichD").PivotTables("MichD").PivotCache.Refresh
End Sub
Voici un exemple simple comment procéder : En colonne A:A des Noms
d'élève et dans la colonne B:B des notes d'étudiant. Le PivotTable
tient compte des modifications apportées à la plage de cellules à
chaque exécution de la procédure.
'-----------------------------
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
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:B" & _
.Range("A65536").End(xlUp).Row).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
--------------------------------------------
"dyj Orange" a écrit dans le message de groupe de discussion : 4cd98012$0$5405$ba4acef3@reader.news.orange.fr...
Mon application génère une feuille avec des résultats. Dans une autre
feuille, je crée manuellement un TCD alimenté par les données de ma feuille
résultats.
Pour cela et par manque d'expérience, j'ai enregistré une macro. En
regardant le code de cette macro, il y a 3 champs qui semblent dynamiques.
TableName:="Tableau croisé dynamique14"
ActiveSheet.PivotTables("Tableau croisé dynamique14")
PivotTables("Tableau croisé dynamique14")
Le chiffre "14" est incrémenté à chaque fois que je reconstruis mon tableau.
Si je supprime puis recrée la feuille incluant le TCD, et si je réutilise ma
macro pour créer le TCD, il faut que je modifie mes variables avec le
chiffre "15".
D'où ma question. Peut on avoir toujours le même indice ".." pour ne pas
modifier ma macro.
Merci.
à chaque exécution de code, la procédure supprime le TDC "Denis" et le recrée. Tu pourrais utiliser une plage de cellule définit dynamiquement en utilisant une "plage nommée" et la fonction decaler(). Tu obtiendrais à titre d'exemple : Nom : MichD fait référence à : ÞCALER($A$1;;;NBVAL($A:$A);NBVAL($1:$1))
Et pour mettre à jour ton TDC "MichD" dans ta feuille "MichD" Sub Test() Worksheets("MichD").PivotTables("MichD").PivotCache.Refresh End Sub
Voici un exemple simple comment procéder : En colonne A:A des Noms d'élève et dans la colonne B:B des notes d'étudiant. Le PivotTable tient compte des modifications apportées à la plage de cellules à chaque exécution de la procédure.
'----------------------------- 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
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:B" & _ .Range("A65536").End(xlUp).Row).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 -------------------------------------------- "dyj Orange" a écrit dans le message de groupe de discussion : 4cd98012$0$5405$
Mon application génère une feuille avec des résultats. Dans une autre feuille, je crée manuellement un TCD alimenté par les données de ma feuille résultats. Pour cela et par manque d'expérience, j'ai enregistré une macro. En regardant le code de cette macro, il y a 3 champs qui semblent dynamiques. TableName:="Tableau croisé dynamique14" ActiveSheet.PivotTables("Tableau croisé dynamique14") PivotTables("Tableau croisé dynamique14")
Le chiffre "14" est incrémenté à chaque fois que je reconstruis mon tableau. Si je supprime puis recrée la feuille incluant le TCD, et si je réutilise ma macro pour créer le TCD, il faut que je modifie mes variables avec le chiffre "15".
D'où ma question. Peut on avoir toujours le même indice ".." pour ne pas modifier ma macro. Merci.
dyj Orange
Merci de m'avoir proposé une solution que j'essaie de mettre à ma sauce !!!! Je n'arrive pas à créer le tableau. Voici mon code personnalisé que j'invoque à partir d'un bouton. Si je commente l'instruction clear du tableau et le On error, vba se plante sur le "Set Pt= ". Merci pour ton aide. ****************************************************** Sub CreerTCD() 'Déclaration des variables Dim Adr As String, Dest As String, FeuilleS As String, FeuilleR As String Dim ChampLigne As String, ChampData As String Dim Pc As PivotCache Dim Pt As PivotTable
FeuilleS = "Ajouts MFP" ' Feuille source de données FeuilleR = "Rapport" ' Feuille où le tableau est enregistré NomTableau = "Variance" ' Nom du tableau à créer ChampLigne = "Agence" ' Ligne ChampData = "Nom Produit" ' Données
'Si le TDC existe déjà il faut le supprimer avant de relancer la procédure sinon erreur ''' On Error Resume Next
With ActiveWorkbook
With .Worksheets(FeuilleS) ' Avec la feuille source "FeuilleS" définir la plage de data source Adr = .Name & "!" & .Range("B4:G" & _ .Range("G65536").End(xlUp).Row).Address End With
With .Worksheets(FeuilleR) 'Avec la feuille "FeuilleR" où le TDC sera crée : ''' .PivotTables(NomTableau).TableRange2.Clear 'Effacer le tdc si il existe Dest = .Name & "!" & .Range("A5").Address 'Définir la cellule où sera créé le TDC 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:=NomTableau, DefaultVersion:=xlPivotTableVersion10) End With
With Pt .AddFields RowFields:=ChampLigne 'Ajout d'un champ en ligne .PivotFields(ChampData).Orientation = xlDataField 'Ajout d'un champ "Data" End With
End Sub ******************************************************
"michdenis" a écrit dans le message de groupe de discussion : ibc0dj$9mp$
Bonjour,
Voici un petit exemple simple de code.
à chaque exécution de code, la procédure supprime le TDC "Denis" et le recrée. Tu pourrais utiliser une plage de cellule définit dynamiquement en utilisant une "plage nommée" et la fonction decaler(). Tu obtiendrais à titre d'exemple : Nom : MichD fait référence à : ÞCALER($A$1;;;NBVAL($A:$A);NBVAL($1:$1))
Et pour mettre à jour ton TDC "MichD" dans ta feuille "MichD" Sub Test() Worksheets("MichD").PivotTables("MichD").PivotCache.Refresh End Sub
Voici un exemple simple comment procéder : En colonne A:A des Noms d'élève et dans la colonne B:B des notes d'étudiant. Le PivotTable tient compte des modifications apportées à la plage de cellules à chaque exécution de la procédure.
'----------------------------- 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
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:B" & _ .Range("A65536").End(xlUp).Row).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 -------------------------------------------- "dyj Orange" a écrit dans le message de groupe de discussion : 4cd98012$0$5405$
Mon application génère une feuille avec des résultats. Dans une autre feuille, je crée manuellement un TCD alimenté par les données de ma feuille résultats. Pour cela et par manque d'expérience, j'ai enregistré une macro. En regardant le code de cette macro, il y a 3 champs qui semblent dynamiques. TableName:="Tableau croisé dynamique14" ActiveSheet.PivotTables("Tableau croisé dynamique14") PivotTables("Tableau croisé dynamique14")
Le chiffre "14" est incrémenté à chaque fois que je reconstruis mon tableau. Si je supprime puis recrée la feuille incluant le TCD, et si je réutilise ma macro pour créer le TCD, il faut que je modifie mes variables avec le chiffre "15".
D'où ma question. Peut on avoir toujours le même indice ".." pour ne pas modifier ma macro. Merci.
Merci de m'avoir proposé une solution que j'essaie de mettre à ma sauce !!!!
Je n'arrive pas à créer le tableau. Voici mon code personnalisé que
j'invoque à partir d'un bouton. Si je commente l'instruction clear du
tableau et le On error, vba se plante sur le "Set Pt= ".
Merci pour ton aide.
******************************************************
Sub CreerTCD()
'Déclaration des variables
Dim Adr As String, Dest As String, FeuilleS As String, FeuilleR As String
Dim ChampLigne As String, ChampData As String
Dim Pc As PivotCache
Dim Pt As PivotTable
FeuilleS = "Ajouts MFP" ' Feuille source de données
FeuilleR = "Rapport" ' Feuille où le tableau est enregistré
NomTableau = "Variance" ' Nom du tableau à créer
ChampLigne = "Agence" ' Ligne
ChampData = "Nom Produit" ' Données
'Si le TDC existe déjà il faut le supprimer avant de relancer la procédure
sinon erreur
''' On Error Resume Next
With ActiveWorkbook
With .Worksheets(FeuilleS) ' Avec la feuille source "FeuilleS" définir
la plage de data source
Adr = .Name & "!" & .Range("B4:G" & _
.Range("G65536").End(xlUp).Row).Address
End With
With .Worksheets(FeuilleR) 'Avec la feuille "FeuilleR" où le TDC sera
crée :
''' .PivotTables(NomTableau).TableRange2.Clear 'Effacer le tdc si il
existe
Dest = .Name & "!" & .Range("A5").Address 'Définir la cellule où
sera créé le TDC
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:=NomTableau, DefaultVersion:=xlPivotTableVersion10)
End With
With Pt
.AddFields RowFields:=ChampLigne 'Ajout d'un champ
en ligne
.PivotFields(ChampData).Orientation = xlDataField 'Ajout d'un champ
"Data"
End With
End Sub
******************************************************
"michdenis" a écrit dans le message de groupe de discussion :
ibc0dj$9mp$1@speranza.aioe.org...
Bonjour,
Voici un petit exemple simple de code.
à chaque exécution de code, la procédure supprime le TDC "Denis"
et le recrée. Tu pourrais utiliser une plage de cellule définit
dynamiquement en utilisant une "plage nommée" et la fonction
decaler(). Tu obtiendrais à titre d'exemple :
Nom : MichD
fait référence à :
ÞCALER($A$1;;;NBVAL($A:$A);NBVAL($1:$1))
Et pour mettre à jour ton TDC "MichD" dans ta feuille "MichD"
Sub Test()
Worksheets("MichD").PivotTables("MichD").PivotCache.Refresh
End Sub
Voici un exemple simple comment procéder : En colonne A:A des Noms
d'élève et dans la colonne B:B des notes d'étudiant. Le PivotTable
tient compte des modifications apportées à la plage de cellules à
chaque exécution de la procédure.
'-----------------------------
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
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:B" & _
.Range("A65536").End(xlUp).Row).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
--------------------------------------------
"dyj Orange" a écrit dans le message de groupe de discussion :
4cd98012$0$5405$ba4acef3@reader.news.orange.fr...
Mon application génère une feuille avec des résultats. Dans une autre
feuille, je crée manuellement un TCD alimenté par les données de ma feuille
résultats.
Pour cela et par manque d'expérience, j'ai enregistré une macro. En
regardant le code de cette macro, il y a 3 champs qui semblent dynamiques.
TableName:="Tableau croisé dynamique14"
ActiveSheet.PivotTables("Tableau croisé dynamique14")
PivotTables("Tableau croisé dynamique14")
Le chiffre "14" est incrémenté à chaque fois que je reconstruis mon tableau.
Si je supprime puis recrée la feuille incluant le TCD, et si je réutilise ma
macro pour créer le TCD, il faut que je modifie mes variables avec le
chiffre "15".
D'où ma question. Peut on avoir toujours le même indice ".." pour ne pas
modifier ma macro.
Merci.
Merci de m'avoir proposé une solution que j'essaie de mettre à ma sauce !!!! Je n'arrive pas à créer le tableau. Voici mon code personnalisé que j'invoque à partir d'un bouton. Si je commente l'instruction clear du tableau et le On error, vba se plante sur le "Set Pt= ". Merci pour ton aide. ****************************************************** Sub CreerTCD() 'Déclaration des variables Dim Adr As String, Dest As String, FeuilleS As String, FeuilleR As String Dim ChampLigne As String, ChampData As String Dim Pc As PivotCache Dim Pt As PivotTable
FeuilleS = "Ajouts MFP" ' Feuille source de données FeuilleR = "Rapport" ' Feuille où le tableau est enregistré NomTableau = "Variance" ' Nom du tableau à créer ChampLigne = "Agence" ' Ligne ChampData = "Nom Produit" ' Données
'Si le TDC existe déjà il faut le supprimer avant de relancer la procédure sinon erreur ''' On Error Resume Next
With ActiveWorkbook
With .Worksheets(FeuilleS) ' Avec la feuille source "FeuilleS" définir la plage de data source Adr = .Name & "!" & .Range("B4:G" & _ .Range("G65536").End(xlUp).Row).Address End With
With .Worksheets(FeuilleR) 'Avec la feuille "FeuilleR" où le TDC sera crée : ''' .PivotTables(NomTableau).TableRange2.Clear 'Effacer le tdc si il existe Dest = .Name & "!" & .Range("A5").Address 'Définir la cellule où sera créé le TDC 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:=NomTableau, DefaultVersion:=xlPivotTableVersion10) End With
With Pt .AddFields RowFields:=ChampLigne 'Ajout d'un champ en ligne .PivotFields(ChampData).Orientation = xlDataField 'Ajout d'un champ "Data" End With
End Sub ******************************************************
"michdenis" a écrit dans le message de groupe de discussion : ibc0dj$9mp$
Bonjour,
Voici un petit exemple simple de code.
à chaque exécution de code, la procédure supprime le TDC "Denis" et le recrée. Tu pourrais utiliser une plage de cellule définit dynamiquement en utilisant une "plage nommée" et la fonction decaler(). Tu obtiendrais à titre d'exemple : Nom : MichD fait référence à : ÞCALER($A$1;;;NBVAL($A:$A);NBVAL($1:$1))
Et pour mettre à jour ton TDC "MichD" dans ta feuille "MichD" Sub Test() Worksheets("MichD").PivotTables("MichD").PivotCache.Refresh End Sub
Voici un exemple simple comment procéder : En colonne A:A des Noms d'élève et dans la colonne B:B des notes d'étudiant. Le PivotTable tient compte des modifications apportées à la plage de cellules à chaque exécution de la procédure.
'----------------------------- 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
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:B" & _ .Range("A65536").End(xlUp).Row).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 -------------------------------------------- "dyj Orange" a écrit dans le message de groupe de discussion : 4cd98012$0$5405$
Mon application génère une feuille avec des résultats. Dans une autre feuille, je crée manuellement un TCD alimenté par les données de ma feuille résultats. Pour cela et par manque d'expérience, j'ai enregistré une macro. En regardant le code de cette macro, il y a 3 champs qui semblent dynamiques. TableName:="Tableau croisé dynamique14" ActiveSheet.PivotTables("Tableau croisé dynamique14") PivotTables("Tableau croisé dynamique14")
Le chiffre "14" est incrémenté à chaque fois que je reconstruis mon tableau. Si je supprime puis recrée la feuille incluant le TCD, et si je réutilise ma macro pour créer le TCD, il faut que je modifie mes variables avec le chiffre "15".
D'où ma question. Peut on avoir toujours le même indice ".." pour ne pas modifier ma macro. Merci.
michdenis
Pour pouvoir créer un nouveau TDC dans une plage de destination précise, il faut que l'ancien TDC qui y prend place soit supprimé. C'est ce que fait la ligne de code : | ''' .PivotTables(NomTableau).TableRange2.Clear 'Effacer le tdc si il
Le nom du PivotTable doit réellement exister. On peut remplacer son nom par son "Index"... s'il y en a qu'un dans la feuille, son index = 1
Voici un fichier exemple qui illustre le code que je t'ai soumis : http://cjoint.com/?0lklSOjqOOa
Pour pouvoir créer un nouveau TDC dans une plage de destination
précise, il faut que l'ancien TDC qui y prend place soit supprimé. C'est
ce que fait la ligne de code :
| ''' .PivotTables(NomTableau).TableRange2.Clear 'Effacer le tdc si il
Le nom du PivotTable doit réellement exister. On peut remplacer son
nom par son "Index"... s'il y en a qu'un dans la feuille, son index = 1
Voici un fichier exemple qui illustre le code que je t'ai soumis :
http://cjoint.com/?0lklSOjqOOa
Pour pouvoir créer un nouveau TDC dans une plage de destination précise, il faut que l'ancien TDC qui y prend place soit supprimé. C'est ce que fait la ligne de code : | ''' .PivotTables(NomTableau).TableRange2.Clear 'Effacer le tdc si il
Le nom du PivotTable doit réellement exister. On peut remplacer son nom par son "Index"... s'il y en a qu'un dans la feuille, son index = 1
Voici un fichier exemple qui illustre le code que je t'ai soumis : http://cjoint.com/?0lklSOjqOOa
Voici un fichier exemple illustrant le code que je t'ai transmis. Le code est commenté ligne par ligne.
Si dans la plage de destination, il y a déjà un TDC, ce dernier doit être supprimé avant de pouvoir le récréer à l'aide d'un code. Pour ce faire, il faut s'assurer que le nom de ce TDC soit conforme au nom employé dans le code. S'il n'y a qu'un TDC dans une feuille on peut utiliser l'index au lieu de son nom. Dans ce cas l'index = 1
Voici un fichier exemple illustrant le code que je t'ai transmis.
Le code est commenté ligne par ligne.
Si dans la plage de destination, il y a déjà un TDC, ce dernier doit
être supprimé avant de pouvoir le récréer à l'aide d'un code.
Pour ce faire, il faut s'assurer que le nom de ce TDC soit conforme
au nom employé dans le code. S'il n'y a qu'un TDC dans une feuille
on peut utiliser l'index au lieu de son nom. Dans ce cas l'index = 1
Voici un fichier exemple illustrant le code que je t'ai transmis. Le code est commenté ligne par ligne.
Si dans la plage de destination, il y a déjà un TDC, ce dernier doit être supprimé avant de pouvoir le récréer à l'aide d'un code. Pour ce faire, il faut s'assurer que le nom de ce TDC soit conforme au nom employé dans le code. S'il n'y a qu'un TDC dans une feuille on peut utiliser l'index au lieu de son nom. Dans ce cas l'index = 1
Je suis arrivé à mettre en évidence mon problème. J'utilise ton classeur et ton code. La seule modification que j'y apporte pour comprendre ton code, c'est de modifier les variables: nom des feuilles, nom du tableau, nom des champs. Pas de problème avec tableau et champs.
Dès que je nomme "feuil1" avec "Ajouts Z1", le tableau ne se crée pas. Visiblement le blanc du nom ne plait pas à l'instruction SourceData:r Si je mets "AjoutsZ1" le tableau est crée.
Y-a-t-il une incompatibilité avec un blanc dans les noms de feuilles ?
"michdenis" a écrit dans le message de groupe de discussion : ibdu35$9q8$
Voici un fichier exemple illustrant le code que je t'ai transmis. Le code est commenté ligne par ligne.
Si dans la plage de destination, il y a déjà un TDC, ce dernier doit être supprimé avant de pouvoir le récréer à l'aide d'un code. Pour ce faire, il faut s'assurer que le nom de ce TDC soit conforme au nom employé dans le code. S'il n'y a qu'un TDC dans une feuille on peut utiliser l'index au lieu de son nom. Dans ce cas l'index = 1
Je suis arrivé à mettre en évidence mon problème. J'utilise ton classeur et
ton code. La seule modification que j'y apporte pour comprendre ton code,
c'est de modifier les variables: nom des feuilles, nom du tableau, nom des
champs.
Pas de problème avec tableau et champs.
Dès que je nomme "feuil1" avec "Ajouts Z1", le tableau ne se crée pas.
Visiblement le blanc du nom ne plait pas à l'instruction SourceData:r
Si je mets "AjoutsZ1" le tableau est crée.
Y-a-t-il une incompatibilité avec un blanc dans les noms de feuilles ?
"michdenis" a écrit dans le message de groupe de discussion :
ibdu35$9q8$1@speranza.aioe.org...
Voici un fichier exemple illustrant le code que je t'ai transmis.
Le code est commenté ligne par ligne.
Si dans la plage de destination, il y a déjà un TDC, ce dernier doit
être supprimé avant de pouvoir le récréer à l'aide d'un code.
Pour ce faire, il faut s'assurer que le nom de ce TDC soit conforme
au nom employé dans le code. S'il n'y a qu'un TDC dans une feuille
on peut utiliser l'index au lieu de son nom. Dans ce cas l'index = 1
Je suis arrivé à mettre en évidence mon problème. J'utilise ton classeur et ton code. La seule modification que j'y apporte pour comprendre ton code, c'est de modifier les variables: nom des feuilles, nom du tableau, nom des champs. Pas de problème avec tableau et champs.
Dès que je nomme "feuil1" avec "Ajouts Z1", le tableau ne se crée pas. Visiblement le blanc du nom ne plait pas à l'instruction SourceData:r Si je mets "AjoutsZ1" le tableau est crée.
Y-a-t-il une incompatibilité avec un blanc dans les noms de feuilles ?
"michdenis" a écrit dans le message de groupe de discussion : ibdu35$9q8$
Voici un fichier exemple illustrant le code que je t'ai transmis. Le code est commenté ligne par ligne.
Si dans la plage de destination, il y a déjà un TDC, ce dernier doit être supprimé avant de pouvoir le récréer à l'aide d'un code. Pour ce faire, il faut s'assurer que le nom de ce TDC soit conforme au nom employé dans le code. S'il n'y a qu'un TDC dans une feuille on peut utiliser l'index au lieu de son nom. Dans ce cas l'index = 1
| Y-a-t-il une incompatibilité avec un blanc dans les noms de feuilles ?
Non, mais dans certaines circonstances, on doit ajouter des guillemets simples autour du nom de l'onglet d'une feuille contenant un espace
"'Ajouts Z1'"
Pour cette raison, au lieu d'utiliser un espace dans le nom de l'onglet de la feuille, il est plus simple d'employer un "underscore" (_) au lieu d'un espace
"Ajouts_Z1"
MichD -------------------------------------------- "dyj Orange" a écrit dans le message de groupe de discussion : 4cdabc77$0$5386$
Je suis arrivé à mettre en évidence mon problème. J'utilise ton classeur et ton code. La seule modification que j'y apporte pour comprendre ton code, c'est de modifier les variables: nom des feuilles, nom du tableau, nom des champs. Pas de problème avec tableau et champs.
Dès que je nomme "feuil1" avec "Ajouts Z1", le tableau ne se crée pas. Visiblement le blanc du nom ne plait pas à l'instruction SourceData:r Si je mets "AjoutsZ1" le tableau est crée.
Y-a-t-il une incompatibilité avec un blanc dans les noms de feuilles ?
"michdenis" a écrit dans le message de groupe de discussion : ibdu35$9q8$
Voici un fichier exemple illustrant le code que je t'ai transmis. Le code est commenté ligne par ligne.
Si dans la plage de destination, il y a déjà un TDC, ce dernier doit être supprimé avant de pouvoir le récréer à l'aide d'un code. Pour ce faire, il faut s'assurer que le nom de ce TDC soit conforme au nom employé dans le code. S'il n'y a qu'un TDC dans une feuille on peut utiliser l'index au lieu de son nom. Dans ce cas l'index = 1
| Y-a-t-il une incompatibilité avec un blanc dans les noms de feuilles ?
Non, mais dans certaines circonstances, on doit ajouter des guillemets
simples autour du nom de l'onglet d'une feuille contenant un espace
"'Ajouts Z1'"
Pour cette raison, au lieu d'utiliser un espace dans le nom de l'onglet de
la feuille, il est plus simple d'employer un "underscore" (_) au lieu d'un espace
"Ajouts_Z1"
MichD
--------------------------------------------
"dyj Orange" a écrit dans le message de groupe de discussion : 4cdabc77$0$5386$ba4acef3@reader.news.orange.fr...
Je suis arrivé à mettre en évidence mon problème. J'utilise ton classeur et
ton code. La seule modification que j'y apporte pour comprendre ton code,
c'est de modifier les variables: nom des feuilles, nom du tableau, nom des
champs.
Pas de problème avec tableau et champs.
Dès que je nomme "feuil1" avec "Ajouts Z1", le tableau ne se crée pas.
Visiblement le blanc du nom ne plait pas à l'instruction SourceData:r
Si je mets "AjoutsZ1" le tableau est crée.
Y-a-t-il une incompatibilité avec un blanc dans les noms de feuilles ?
"michdenis" a écrit dans le message de groupe de discussion :
ibdu35$9q8$1@speranza.aioe.org...
Voici un fichier exemple illustrant le code que je t'ai transmis.
Le code est commenté ligne par ligne.
Si dans la plage de destination, il y a déjà un TDC, ce dernier doit
être supprimé avant de pouvoir le récréer à l'aide d'un code.
Pour ce faire, il faut s'assurer que le nom de ce TDC soit conforme
au nom employé dans le code. S'il n'y a qu'un TDC dans une feuille
on peut utiliser l'index au lieu de son nom. Dans ce cas l'index = 1
| Y-a-t-il une incompatibilité avec un blanc dans les noms de feuilles ?
Non, mais dans certaines circonstances, on doit ajouter des guillemets simples autour du nom de l'onglet d'une feuille contenant un espace
"'Ajouts Z1'"
Pour cette raison, au lieu d'utiliser un espace dans le nom de l'onglet de la feuille, il est plus simple d'employer un "underscore" (_) au lieu d'un espace
"Ajouts_Z1"
MichD -------------------------------------------- "dyj Orange" a écrit dans le message de groupe de discussion : 4cdabc77$0$5386$
Je suis arrivé à mettre en évidence mon problème. J'utilise ton classeur et ton code. La seule modification que j'y apporte pour comprendre ton code, c'est de modifier les variables: nom des feuilles, nom du tableau, nom des champs. Pas de problème avec tableau et champs.
Dès que je nomme "feuil1" avec "Ajouts Z1", le tableau ne se crée pas. Visiblement le blanc du nom ne plait pas à l'instruction SourceData:r Si je mets "AjoutsZ1" le tableau est crée.
Y-a-t-il une incompatibilité avec un blanc dans les noms de feuilles ?
"michdenis" a écrit dans le message de groupe de discussion : ibdu35$9q8$
Voici un fichier exemple illustrant le code que je t'ai transmis. Le code est commenté ligne par ligne.
Si dans la plage de destination, il y a déjà un TDC, ce dernier doit être supprimé avant de pouvoir le récréer à l'aide d'un code. Pour ce faire, il faut s'assurer que le nom de ce TDC soit conforme au nom employé dans le code. S'il n'y a qu'un TDC dans une feuille on peut utiliser l'index au lieu de son nom. Dans ce cas l'index = 1
Comme c'est mon appli qui génère les feuilles, pas de problèmes pour les renommer. Merci pour tout ce temps que tu m'as consacré et qui m'a permis d'avancer.
"dyj Orange" a écrit dans le message de groupe de discussion : 4cdabc77$0$5386$
Je suis arrivé à mettre en évidence mon problème. J'utilise ton classeur et ton code. La seule modification que j'y apporte pour comprendre ton code, c'est de modifier les variables: nom des feuilles, nom du tableau, nom des champs. Pas de problème avec tableau et champs.
Dès que je nomme "feuil1" avec "Ajouts Z1", le tableau ne se crée pas. Visiblement le blanc du nom ne plait pas à l'instruction SourceData:r Si je mets "AjoutsZ1" le tableau est crée.
Y-a-t-il une incompatibilité avec un blanc dans les noms de feuilles ?
"michdenis" a écrit dans le message de groupe de discussion : ibdu35$9q8$
Voici un fichier exemple illustrant le code que je t'ai transmis. Le code est commenté ligne par ligne.
Si dans la plage de destination, il y a déjà un TDC, ce dernier doit être supprimé avant de pouvoir le récréer à l'aide d'un code. Pour ce faire, il faut s'assurer que le nom de ce TDC soit conforme au nom employé dans le code. S'il n'y a qu'un TDC dans une feuille on peut utiliser l'index au lieu de son nom. Dans ce cas l'index = 1
Comme c'est mon appli qui génère les feuilles, pas de problèmes pour les
renommer. Merci pour tout ce temps que tu m'as consacré et qui m'a permis
d'avancer.
"dyj Orange" a écrit dans le message de groupe de discussion :
4cdabc77$0$5386$ba4acef3@reader.news.orange.fr...
Je suis arrivé à mettre en évidence mon problème. J'utilise ton classeur et
ton code. La seule modification que j'y apporte pour comprendre ton code,
c'est de modifier les variables: nom des feuilles, nom du tableau, nom des
champs.
Pas de problème avec tableau et champs.
Dès que je nomme "feuil1" avec "Ajouts Z1", le tableau ne se crée pas.
Visiblement le blanc du nom ne plait pas à l'instruction SourceData:r
Si je mets "AjoutsZ1" le tableau est crée.
Y-a-t-il une incompatibilité avec un blanc dans les noms de feuilles ?
"michdenis" a écrit dans le message de groupe de discussion :
ibdu35$9q8$1@speranza.aioe.org...
Voici un fichier exemple illustrant le code que je t'ai transmis.
Le code est commenté ligne par ligne.
Si dans la plage de destination, il y a déjà un TDC, ce dernier doit
être supprimé avant de pouvoir le récréer à l'aide d'un code.
Pour ce faire, il faut s'assurer que le nom de ce TDC soit conforme
au nom employé dans le code. S'il n'y a qu'un TDC dans une feuille
on peut utiliser l'index au lieu de son nom. Dans ce cas l'index = 1
Comme c'est mon appli qui génère les feuilles, pas de problèmes pour les renommer. Merci pour tout ce temps que tu m'as consacré et qui m'a permis d'avancer.
"dyj Orange" a écrit dans le message de groupe de discussion : 4cdabc77$0$5386$
Je suis arrivé à mettre en évidence mon problème. J'utilise ton classeur et ton code. La seule modification que j'y apporte pour comprendre ton code, c'est de modifier les variables: nom des feuilles, nom du tableau, nom des champs. Pas de problème avec tableau et champs.
Dès que je nomme "feuil1" avec "Ajouts Z1", le tableau ne se crée pas. Visiblement le blanc du nom ne plait pas à l'instruction SourceData:r Si je mets "AjoutsZ1" le tableau est crée.
Y-a-t-il une incompatibilité avec un blanc dans les noms de feuilles ?
"michdenis" a écrit dans le message de groupe de discussion : ibdu35$9q8$
Voici un fichier exemple illustrant le code que je t'ai transmis. Le code est commenté ligne par ligne.
Si dans la plage de destination, il y a déjà un TDC, ce dernier doit être supprimé avant de pouvoir le récréer à l'aide d'un code. Pour ce faire, il faut s'assurer que le nom de ce TDC soit conforme au nom employé dans le code. S'il n'y a qu'un TDC dans une feuille on peut utiliser l'index au lieu de son nom. Dans ce cas l'index = 1