Bonjour Jacques,
Voici comment créer un TDC avec une plage dynamique
utilisant la fonction "Decaler" pour définir la plage
les données sont sur la feuil1. Dans mon cas, je n'ai que 2 champs
Colonne A = Étudiant (étiquette de la colonne)
Colonne B = Note (étiquette de la colonne)
Le TDC est créé dans la "Feuil2")
'----------------------------------------
Sub CreerTCD_Plage_Dynamique()
'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")
'Création du nom pour une plage dynamique
'qui deviendra la plage source du TDC
Workbooks(.Parent.Name).Names.Add "Denis", _
"=OFFSET(" & .Name & "!$A$1,,,COUNTA(" & _
.Name & "!$A:$A),COUNTA(" & .Name & "!$1:$1))"
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:="Denis")
'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
'----------------------------------------
"Jacques Gronier" a écrit dans le message de groupe
de discussion :
4ac4cf5b$0$927$
Bonjour à toutes et à tous,
Dans un projet VBA , j'ai créé, grâce à l'enregisteur, un Tableau Croisé
Dynamique.
Le fichier source n'ayant jamais le même nom, le projet était écrit dans
perso.xls
Il m'a été impossible de faire fonctionner la macro qui bloque toujours au
même endroit
ActiveWorkbook.Names.Add Name:="base_donnees", RefersToR1C1:= _
"=OFFSET(Sheet1!R1C1,0,0,COUNTA(Sheet1!C1),14)"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=
_
"base_donnees", Version:=xlPivotTableVersion10).CreatePivotTable _
TableDestination:="Feuil1!L3C1", TableName:="Tableau croisé
dynamique1", _
DefaultVersion:=xlPivotTableVersion10
J'ai trouvé une solution peu satisfaisante de récupérer les données de mon
fichier source dans un autre fichier dans lequel de TCD est déjà en place
et
je passe donc par la commande
Sheets("TCD").Select
Range("A3").Select
ActiveSheet.PivotTables("TCD_BRUT").PivotCache.Refresh
Existe-t-il une autre méthode pour générer ce TCD ?
Merci d'avance
--
Bien Cordialement
Jacques Gronier
Bonjour Jacques,
Voici comment créer un TDC avec une plage dynamique
utilisant la fonction "Decaler" pour définir la plage
les données sont sur la feuil1. Dans mon cas, je n'ai que 2 champs
Colonne A = Étudiant (étiquette de la colonne)
Colonne B = Note (étiquette de la colonne)
Le TDC est créé dans la "Feuil2")
'----------------------------------------
Sub CreerTCD_Plage_Dynamique()
'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")
'Création du nom pour une plage dynamique
'qui deviendra la plage source du TDC
Workbooks(.Parent.Name).Names.Add "Denis", _
"=OFFSET(" & .Name & "!$A$1,,,COUNTA(" & _
.Name & "!$A:$A),COUNTA(" & .Name & "!$1:$1))"
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:="Denis")
'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
'----------------------------------------
"Jacques Gronier" <nobody@nowhere.com> a écrit dans le message de groupe
de discussion :
4ac4cf5b$0$927$ba4acef3@news.orange.fr...
Bonjour à toutes et à tous,
Dans un projet VBA , j'ai créé, grâce à l'enregisteur, un Tableau Croisé
Dynamique.
Le fichier source n'ayant jamais le même nom, le projet était écrit dans
perso.xls
Il m'a été impossible de faire fonctionner la macro qui bloque toujours au
même endroit
ActiveWorkbook.Names.Add Name:="base_donnees", RefersToR1C1:= _
"=OFFSET(Sheet1!R1C1,0,0,COUNTA(Sheet1!C1),14)"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=
_
"base_donnees", Version:=xlPivotTableVersion10).CreatePivotTable _
TableDestination:="Feuil1!L3C1", TableName:="Tableau croisé
dynamique1", _
DefaultVersion:=xlPivotTableVersion10
J'ai trouvé une solution peu satisfaisante de récupérer les données de mon
fichier source dans un autre fichier dans lequel de TCD est déjà en place
et
je passe donc par la commande
Sheets("TCD").Select
Range("A3").Select
ActiveSheet.PivotTables("TCD_BRUT").PivotCache.Refresh
Existe-t-il une autre méthode pour générer ce TCD ?
Merci d'avance
--
Bien Cordialement
Jacques Gronier
Bonjour Jacques,
Voici comment créer un TDC avec une plage dynamique
utilisant la fonction "Decaler" pour définir la plage
les données sont sur la feuil1. Dans mon cas, je n'ai que 2 champs
Colonne A = Étudiant (étiquette de la colonne)
Colonne B = Note (étiquette de la colonne)
Le TDC est créé dans la "Feuil2")
'----------------------------------------
Sub CreerTCD_Plage_Dynamique()
'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")
'Création du nom pour une plage dynamique
'qui deviendra la plage source du TDC
Workbooks(.Parent.Name).Names.Add "Denis", _
"=OFFSET(" & .Name & "!$A$1,,,COUNTA(" & _
.Name & "!$A:$A),COUNTA(" & .Name & "!$1:$1))"
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:="Denis")
'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
'----------------------------------------
"Jacques Gronier" a écrit dans le message de groupe
de discussion :
4ac4cf5b$0$927$
Bonjour à toutes et à tous,
Dans un projet VBA , j'ai créé, grâce à l'enregisteur, un Tableau Croisé
Dynamique.
Le fichier source n'ayant jamais le même nom, le projet était écrit dans
perso.xls
Il m'a été impossible de faire fonctionner la macro qui bloque toujours au
même endroit
ActiveWorkbook.Names.Add Name:="base_donnees", RefersToR1C1:= _
"=OFFSET(Sheet1!R1C1,0,0,COUNTA(Sheet1!C1),14)"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=
_
"base_donnees", Version:=xlPivotTableVersion10).CreatePivotTable _
TableDestination:="Feuil1!L3C1", TableName:="Tableau croisé
dynamique1", _
DefaultVersion:=xlPivotTableVersion10
J'ai trouvé une solution peu satisfaisante de récupérer les données de mon
fichier source dans un autre fichier dans lequel de TCD est déjà en place
et
je passe donc par la commande
Sheets("TCD").Select
Range("A3").Select
ActiveSheet.PivotTables("TCD_BRUT").PivotCache.Refresh
Existe-t-il une autre méthode pour générer ce TCD ?
Merci d'avance
--
Bien Cordialement
Jacques Gronier
Merci beaucoup,
Je vais tester cela et essayant de compléter les zones
supplémentaires comme
les champs en colonnes ( entrée sortie)
Merci d'avoir pris le temps de regarder ma demande
--
Bien Cordialement
Jacques Gronier
"michdenis" a écrit dans le
message de news:Bonjour Jacques,
Voici comment créer un TDC avec une plage dynamique
utilisant la fonction "Decaler" pour définir la plage
les données sont sur la feuil1. Dans mon cas, je n'ai que 2 champs
Colonne A = Étudiant (étiquette de la colonne)
Colonne B = Note (étiquette de la colonne)
Le TDC est créé dans la "Feuil2")
'----------------------------------------
Sub CreerTCD_Plage_Dynamique()
'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")
'Création du nom pour une plage dynamique
'qui deviendra la plage source du TDC
Workbooks(.Parent.Name).Names.Add "Denis", _
"=OFFSET(" & .Name & "!$A$1,,,COUNTA(" & _
.Name & "!$A:$A),COUNTA(" & .Name & "!$1:$1))"
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:="Denis")
'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
'----------------------------------------
"Jacques Gronier" a écrit dans le
message de groupe
de discussion :
4ac4cf5b$0$927$
Bonjour à toutes et à tous,
Dans un projet VBA , j'ai créé, grâce à
l'enregisteur, un Tableau Croisé
Dynamique.
Le fichier source n'ayant jamais le même nom, le projet était
écrit dans
perso.xls
Il m'a été impossible de faire fonctionner la macro qui bloque
toujours au
même endroit
ActiveWorkbook.Names.Add Name:="base_donnees", RefersToR1C1:= _
"=OFFSET(Sheet1!R1C1,0,0,COUNTA(Sheet1!C1),14)"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=
_
"base_donnees", Version:=xlPivotTableVersion10).CreatePivotTable _
TableDestination:="Feuil1!L3C1", TableName:="Tableau
croisé
dynamique1", _
DefaultVersion:=xlPivotTableVersion10
J'ai trouvé une solution peu satisfaisante de récupérer
les données de mon
fichier source dans un autre fichier dans lequel de TCD est déjà
en place
et
je passe donc par la commande
Sheets("TCD").Select
Range("A3").Select
ActiveSheet.PivotTables("TCD_BRUT").PivotCache.Refresh
Existe-t-il une autre méthode pour générer ce TCD ?
Merci d'avance
--
Bien Cordialement
Jacques Gronier
Merci beaucoup,
Je vais tester cela et essayant de compléter les zones
supplémentaires comme
les champs en colonnes ( entrée sortie)
Merci d'avoir pris le temps de regarder ma demande
--
Bien Cordialement
Jacques Gronier
"michdenis" a écrit dans le
message de news:
Bonjour Jacques,
Voici comment créer un TDC avec une plage dynamique
utilisant la fonction "Decaler" pour définir la plage
les données sont sur la feuil1. Dans mon cas, je n'ai que 2 champs
Colonne A = Étudiant (étiquette de la colonne)
Colonne B = Note (étiquette de la colonne)
Le TDC est créé dans la "Feuil2")
'----------------------------------------
Sub CreerTCD_Plage_Dynamique()
'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")
'Création du nom pour une plage dynamique
'qui deviendra la plage source du TDC
Workbooks(.Parent.Name).Names.Add "Denis", _
"=OFFSET(" & .Name & "!$A$1,,,COUNTA(" & _
.Name & "!$A:$A),COUNTA(" & .Name & "!$1:$1))"
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:="Denis")
'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
'----------------------------------------
"Jacques Gronier" a écrit dans le
message de groupe
de discussion :
4ac4cf5b$0$927$
Bonjour à toutes et à tous,
Dans un projet VBA , j'ai créé, grâce à
l'enregisteur, un Tableau Croisé
Dynamique.
Le fichier source n'ayant jamais le même nom, le projet était
écrit dans
perso.xls
Il m'a été impossible de faire fonctionner la macro qui bloque
toujours au
même endroit
ActiveWorkbook.Names.Add Name:="base_donnees", RefersToR1C1:= _
"=OFFSET(Sheet1!R1C1,0,0,COUNTA(Sheet1!C1),14)"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=
_
"base_donnees", Version:=xlPivotTableVersion10).CreatePivotTable _
TableDestination:="Feuil1!L3C1", TableName:="Tableau
croisé
dynamique1", _
DefaultVersion:=xlPivotTableVersion10
J'ai trouvé une solution peu satisfaisante de récupérer
les données de mon
fichier source dans un autre fichier dans lequel de TCD est déjà
en place
et
je passe donc par la commande
Sheets("TCD").Select
Range("A3").Select
ActiveSheet.PivotTables("TCD_BRUT").PivotCache.Refresh
Existe-t-il une autre méthode pour générer ce TCD ?
Merci d'avance
--
Bien Cordialement
Jacques Gronier
Merci beaucoup,
Je vais tester cela et essayant de compléter les zones
supplémentaires comme
les champs en colonnes ( entrée sortie)
Merci d'avoir pris le temps de regarder ma demande
--
Bien Cordialement
Jacques Gronier
"michdenis" a écrit dans le
message de news:Bonjour Jacques,
Voici comment créer un TDC avec une plage dynamique
utilisant la fonction "Decaler" pour définir la plage
les données sont sur la feuil1. Dans mon cas, je n'ai que 2 champs
Colonne A = Étudiant (étiquette de la colonne)
Colonne B = Note (étiquette de la colonne)
Le TDC est créé dans la "Feuil2")
'----------------------------------------
Sub CreerTCD_Plage_Dynamique()
'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")
'Création du nom pour une plage dynamique
'qui deviendra la plage source du TDC
Workbooks(.Parent.Name).Names.Add "Denis", _
"=OFFSET(" & .Name & "!$A$1,,,COUNTA(" & _
.Name & "!$A:$A),COUNTA(" & .Name & "!$1:$1))"
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:="Denis")
'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
'----------------------------------------
"Jacques Gronier" a écrit dans le
message de groupe
de discussion :
4ac4cf5b$0$927$
Bonjour à toutes et à tous,
Dans un projet VBA , j'ai créé, grâce à
l'enregisteur, un Tableau Croisé
Dynamique.
Le fichier source n'ayant jamais le même nom, le projet était
écrit dans
perso.xls
Il m'a été impossible de faire fonctionner la macro qui bloque
toujours au
même endroit
ActiveWorkbook.Names.Add Name:="base_donnees", RefersToR1C1:= _
"=OFFSET(Sheet1!R1C1,0,0,COUNTA(Sheet1!C1),14)"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=
_
"base_donnees", Version:=xlPivotTableVersion10).CreatePivotTable _
TableDestination:="Feuil1!L3C1", TableName:="Tableau
croisé
dynamique1", _
DefaultVersion:=xlPivotTableVersion10
J'ai trouvé une solution peu satisfaisante de récupérer
les données de mon
fichier source dans un autre fichier dans lequel de TCD est déjà
en place
et
je passe donc par la commande
Sheets("TCD").Select
Range("A3").Select
ActiveSheet.PivotTables("TCD_BRUT").PivotCache.Refresh
Existe-t-il une autre méthode pour générer ce TCD ?
Merci d'avance
--
Bien Cordialement
Jacques Gronier