Après avoir écumé les précédents messages, j'ai appliqué les conseils de MichDenis pour créer un TCD en VBA, la macro dirigée enregistrant un code qui ne fonctionne pas lorsque je le relance.
Après avoir défini un nom dynamique, le code bloque sur le Set Pc avec une propriété non gérée erreur 438 :
With ActiveWorkbook
ActiveWorkbook.Names.Add Name:="TCD", RefersToR1C1:= _
"=OFFSET(Données!R1C1,,,COUNTA(Données!C1),COUNTA(Données!R1))"
Dim Pc As PivotCache
Dim Pt As PivotTable
Sheets.Add
ActiveSheet.Name = "TCDTemp"
With .Worksheets("TCDTemp")
'Création du PivotCache
Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:="TCD")
'création du PivotTable
Set Pt = Pc.CreatePivotTable(TableDestination:=Range("A2"), _
TableName:="TCD1", DefaultVersion:=xlPivotTableVersion10)
End With
End With
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
isabelle
bonjour,
remplacer SourceData:="TCD" par SourceData:=Range("TCD")
-- isabelle
Le 2012-01-13 08:26, simulacre25 a écrit :
Bonjour,
Après avoir écumé les précédents messages, j'ai appliqué les conseils de MichDenis pour créer un TCD en VBA, la macro dirigée enregistrant un code qui ne fonctionne pas lorsque je le relance.
Après avoir défini un nom dynamique, le code bloque sur le Set Pc avec une propriété non gérée erreur 438 :
With ActiveWorkbook ActiveWorkbook.Names.Add Name:="TCD", RefersToR1C1:= _ "=OFFSET(Données!R1C1,,,COUNTA(Données!C1),COUNTA(Données!R1))"
Dim Pc As PivotCache Dim Pt As PivotTable
Sheets.Add ActiveSheet.Name = "TCDTemp"
With .Worksheets("TCDTemp") 'Création du PivotCache Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:="TCD") 'création du PivotTable Set Pt = Pc.CreatePivotTable(TableDestination:=Range("A2"), _ TableName:="TCD1", DefaultVersion:=xlPivotTableVersion10) End With End With
Je suis depuis peu sous Excel 2007.
Merci pour vos réponses.
bonjour,
remplacer
SourceData:="TCD"
par
SourceData:=Range("TCD")
--
isabelle
Le 2012-01-13 08:26, simulacre25 a écrit :
Bonjour,
Après avoir écumé les précédents messages, j'ai appliqué les conseils de
MichDenis pour créer un TCD en VBA, la macro dirigée enregistrant un code qui ne
fonctionne pas lorsque je le relance.
Après avoir défini un nom dynamique, le code bloque sur le Set Pc avec une
propriété non gérée erreur 438 :
With ActiveWorkbook
ActiveWorkbook.Names.Add Name:="TCD", RefersToR1C1:= _
"=OFFSET(Données!R1C1,,,COUNTA(Données!C1),COUNTA(Données!R1))"
Dim Pc As PivotCache
Dim Pt As PivotTable
Sheets.Add
ActiveSheet.Name = "TCDTemp"
With .Worksheets("TCDTemp")
'Création du PivotCache
Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:="TCD")
'création du PivotTable
Set Pt = Pc.CreatePivotTable(TableDestination:=Range("A2"), _
TableName:="TCD1", DefaultVersion:=xlPivotTableVersion10)
End With
End With
remplacer SourceData:="TCD" par SourceData:=Range("TCD")
-- isabelle
Le 2012-01-13 08:26, simulacre25 a écrit :
Bonjour,
Après avoir écumé les précédents messages, j'ai appliqué les conseils de MichDenis pour créer un TCD en VBA, la macro dirigée enregistrant un code qui ne fonctionne pas lorsque je le relance.
Après avoir défini un nom dynamique, le code bloque sur le Set Pc avec une propriété non gérée erreur 438 :
With ActiveWorkbook ActiveWorkbook.Names.Add Name:="TCD", RefersToR1C1:= _ "=OFFSET(Données!R1C1,,,COUNTA(Données!C1),COUNTA(Données!R1))"
Dim Pc As PivotCache Dim Pt As PivotTable
Sheets.Add ActiveSheet.Name = "TCDTemp"
With .Worksheets("TCDTemp") 'Création du PivotCache Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:="TCD") 'création du PivotTable Set Pt = Pc.CreatePivotTable(TableDestination:=Range("A2"), _ TableName:="TCD1", DefaultVersion:=xlPivotTableVersion10) End With End With
Je suis depuis peu sous Excel 2007.
Merci pour vos réponses.
MichD
| la macro dirigée enregistrant un code qui ne | fonctionne pas lorsque je le relance.
***Si tu essaies de créer un TDC là où un TDC existe déjà, cela ne peut pas fonctionner. Tu dois d'abord effacer le TDC existant avant de recréer un TDC à la même place ! De mémoire, dans la procédure originale, il y avait une ligne de code à cet égard.
*** Attention, comme ton code est écrit, tu essaies de créer ton TDC dans la même feuille où sont tes données, à la place de tes données. Dans le bout de code soumis, remplace "NomDeLaFeuilleDeDestination" par le nom de la feuille où tu veux créer ton TDC. Si tu veux le créer dans la même feuille, attention à l'adresse suivante : Range("A2"). Choisis un autre emplacement libre!
*** Les noms de tes TDC devaient avoir un autre nom. TDC représente une colonne dans la feuille de calcul et TDC1 est l'adresse d'une cellule. Tout cela afin d'éviter une méprise possible...
Dim Adr As String With .Worksheets("TCDTemp") 'La feuille source de tes données Adr = .Name & "!" & .Range("TDC").Address 'Création du PivotCache Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:r) 'création du PivotTable End With
With Worksheets("NomDeLaFeuilleDeDestination") Set Pt = Pc.CreatePivotTable(TableDestination:=.Range("A2"), _ TableName:="TCD1", DefaultVersion:=xlPivotTableVersion10) End With
P.S. Prière de demeurer sur le même fil, cela facilite la tâche pour tout le monde.
MichD ------------------------------------------
| la macro dirigée enregistrant un code qui ne
| fonctionne pas lorsque je le relance.
***Si tu essaies de créer un TDC là où un TDC existe déjà, cela ne peut pas fonctionner.
Tu dois d'abord effacer le TDC existant avant de recréer un TDC à la même place !
De mémoire, dans la procédure originale, il y avait une ligne de code à cet égard.
*** Attention, comme ton code est écrit, tu essaies de créer ton TDC dans la même feuille
où sont tes données, à la place de tes données.
Dans le bout de code soumis, remplace "NomDeLaFeuilleDeDestination" par le nom de
la feuille où tu veux créer ton TDC. Si tu veux le créer dans la même feuille, attention à
l'adresse suivante : Range("A2"). Choisis un autre emplacement libre!
*** Les noms de tes TDC devaient avoir un autre nom. TDC représente une colonne dans la
feuille de calcul et TDC1 est l'adresse d'une cellule. Tout cela afin d'éviter une méprise
possible...
Dim Adr As String
With .Worksheets("TCDTemp") 'La feuille source de tes données
Adr = .Name & "!" & .Range("TDC").Address
'Création du PivotCache
Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:r)
'création du PivotTable
End With
With Worksheets("NomDeLaFeuilleDeDestination")
Set Pt = Pc.CreatePivotTable(TableDestination:=.Range("A2"), _
TableName:="TCD1", DefaultVersion:=xlPivotTableVersion10)
End With
P.S. Prière de demeurer sur le même fil, cela facilite la tâche pour tout le monde.
| la macro dirigée enregistrant un code qui ne | fonctionne pas lorsque je le relance.
***Si tu essaies de créer un TDC là où un TDC existe déjà, cela ne peut pas fonctionner. Tu dois d'abord effacer le TDC existant avant de recréer un TDC à la même place ! De mémoire, dans la procédure originale, il y avait une ligne de code à cet égard.
*** Attention, comme ton code est écrit, tu essaies de créer ton TDC dans la même feuille où sont tes données, à la place de tes données. Dans le bout de code soumis, remplace "NomDeLaFeuilleDeDestination" par le nom de la feuille où tu veux créer ton TDC. Si tu veux le créer dans la même feuille, attention à l'adresse suivante : Range("A2"). Choisis un autre emplacement libre!
*** Les noms de tes TDC devaient avoir un autre nom. TDC représente une colonne dans la feuille de calcul et TDC1 est l'adresse d'une cellule. Tout cela afin d'éviter une méprise possible...
Dim Adr As String With .Worksheets("TCDTemp") 'La feuille source de tes données Adr = .Name & "!" & .Range("TDC").Address 'Création du PivotCache Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:r) 'création du PivotTable End With
With Worksheets("NomDeLaFeuilleDeDestination") Set Pt = Pc.CreatePivotTable(TableDestination:=.Range("A2"), _ TableName:="TCD1", DefaultVersion:=xlPivotTableVersion10) End With
P.S. Prière de demeurer sur le même fil, cela facilite la tâche pour tout le monde.
MichD ------------------------------------------
simulacre25
MichD a écrit le 13/01/2012 à 17h16 :
| la macro dirigée enregistrant un code qui ne | fonctionne pas lorsque je le relance.
***Si tu essaies de créer un TDC là où un TDC existe déjà, cela ne peut pas fonctionner. Tu dois d'abord effacer le TDC existant avant de recréer un TDC à la même place ! De mémoire, dans la procédure originale, il y avait une ligne de code à cet égard.
*** Attention, comme ton code est écrit, tu essaies de créer ton TDC dans la même feuille où sont tes données, à la place de tes données. Dans le bout de code soumis, remplace "NomDeLaFeuilleDeDestination" par le nom de la feuille où tu veux créer ton TDC. Si tu veux le créer dans la même feuille, attention à l'adresse suivante : Range("A2"). Choisis un autre emplacement libre!
*** Les noms de tes TDC devaient avoir un autre nom. TDC représente une colonne dans la feuille de calcul et TDC1 est l'adresse d'une cellule. Tout cela afin d'éviter une méprise possible...
Dim Adr As String With .Worksheets("TCDTemp") 'La feuille source de tes données Adr = .Name & "!" & .Range("TDC").Address 'Création du PivotCache Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:r) 'création du PivotTable End With
With Worksheets("NomDeLaFeuilleDeDestination") Set Pt = Pc.CreatePivotTable(TableDestination:=.Range("A2"), _ TableName:="TCD1", DefaultVersion:=xlPivotTableVersion10) End With
P.S. Prière de demeurer sur le même fil, cela facilite la tâche pour tout le monde.
MichD ------------------------------------------
Pour Isabelle, le Range("TCD") ne marche pas (j'avais déjà tenté le coup).
Pour Denis :
En fait la procédure complète ouvre un nouveau classeur, crée le nom dynamique dans la feuille active à l'ouverture (Données) dans laquelle se trouvent mes données source.
Ensuite, la procédure crée une nouvelle feuille et la renomme TCDTemp (pas utile mais cela me permet de m'y retrouver plus facilement). La feuille TCDTemp est vierge et est active et j'applique le code devant créer le TCD dans cette feuille. J'avais noté le fait d'effacer un précédent tableau mais ce n'était pas le cas ici. Donc le range ("A2") est bien dans la feuille active TCDTemp vierge.
Voici le début du code avec les modifications apportées :
Dim MonChemin As String MonChemin = ActiveWorkbook.Path ChDir MonChemin Workbooks.Open Filename:= _ MonChemin & "Groupes de validation.xls"
'récupération des infos du paramétrage du dernier trimestre connu 'via un TCD et copie dans XL ORI centralisation With ActiveWorkbook 'Feuille "Données" active à l'ouverture du classeur ActiveWorkbook.Names.Add Name:="TCD", RefersToR1C1:= _ "=OFFSET(Données!R1C1,,,COUNTA(Données!C1),COUNTA(Données!R1))"
Dim Pc As PivotCaches Dim Pt As PivotTable Dim Adr As String
Sheets.Add ActiveSheet.Name = "TCDTemp"
Sheets("Données").Select
With .Worksheets("Données") 'La feuille source de tes données Adr = .Name & "!" & .Range("TCD").Address 'OK 'Création du PivotCache Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:r) 'Blocage ici 'création du PivotTable End With
With Worksheets("TCDTemp") Set Pt = Pc.CreatePivotTable(TableDestination:=.Range("A2"), _ TableName:="TaCrD1", DefaultVersion:=xlPivotTableVersion10) End With
Le code bloque toujours sur :
Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:r) avec une erreur 438, propriété ou méthode non gérée par cet objet.
MichD a écrit le 13/01/2012 à 17h16 :
| la macro dirigée enregistrant un code qui ne
| fonctionne pas lorsque je le relance.
***Si tu essaies de créer un TDC là où un TDC existe
déjà, cela ne peut pas fonctionner.
Tu dois d'abord effacer le TDC existant avant de recréer un TDC à
la même place !
De mémoire, dans la procédure originale, il y avait une ligne de
code à cet égard.
*** Attention, comme ton code est écrit, tu essaies de créer ton
TDC dans la même feuille
où sont tes données, à la place de tes données.
Dans le bout de code soumis, remplace "NomDeLaFeuilleDeDestination"
par le nom de
la feuille où tu veux créer ton TDC. Si tu veux le créer
dans la même feuille, attention à
l'adresse suivante : Range("A2"). Choisis un autre emplacement
libre!
*** Les noms de tes TDC devaient avoir un autre nom. TDC représente une
colonne dans la
feuille de calcul et TDC1 est l'adresse d'une cellule. Tout cela afin
d'éviter une méprise
possible...
Dim Adr As String
With .Worksheets("TCDTemp") 'La feuille source de tes données
Adr = .Name & "!" & .Range("TDC").Address
'Création du PivotCache
Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:r)
'création du PivotTable
End With
With Worksheets("NomDeLaFeuilleDeDestination")
Set Pt = Pc.CreatePivotTable(TableDestination:=.Range("A2"), _
TableName:="TCD1", DefaultVersion:=xlPivotTableVersion10)
End With
P.S. Prière de demeurer sur le même fil, cela facilite la
tâche pour tout le monde.
MichD
------------------------------------------
Pour Isabelle, le Range("TCD") ne marche pas (j'avais déjà tenté le coup).
Pour Denis :
En fait la procédure complète ouvre un nouveau classeur, crée le nom dynamique dans la feuille active à l'ouverture (Données) dans laquelle se trouvent mes données source.
Ensuite, la procédure crée une nouvelle feuille et la renomme TCDTemp (pas utile mais cela me permet de m'y retrouver plus facilement). La feuille TCDTemp est vierge et est active et j'applique le code devant créer le TCD dans cette feuille. J'avais noté le fait d'effacer un précédent tableau mais ce n'était pas le cas ici. Donc le range ("A2") est bien dans la feuille active TCDTemp vierge.
Voici le début du code avec les modifications apportées :
Dim MonChemin As String
MonChemin = ActiveWorkbook.Path
ChDir MonChemin
Workbooks.Open Filename:= _
MonChemin & "Groupes de validation.xls"
'récupération des infos du paramétrage du dernier trimestre connu
'via un TCD et copie dans XL ORI centralisation
With ActiveWorkbook 'Feuille "Données" active à l'ouverture du classeur
ActiveWorkbook.Names.Add Name:="TCD", RefersToR1C1:= _
"=OFFSET(Données!R1C1,,,COUNTA(Données!C1),COUNTA(Données!R1))"
Dim Pc As PivotCaches
Dim Pt As PivotTable
Dim Adr As String
Sheets.Add
ActiveSheet.Name = "TCDTemp"
Sheets("Données").Select
With .Worksheets("Données") 'La feuille source de tes données
Adr = .Name & "!" & .Range("TCD").Address 'OK
'Création du PivotCache
Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Adr) 'Blocage ici
'création du PivotTable
End With
With Worksheets("TCDTemp")
Set Pt = Pc.CreatePivotTable(TableDestination:=.Range("A2"), _
TableName:="TaCrD1", DefaultVersion:=xlPivotTableVersion10)
End With
Le code bloque toujours sur :
Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Adr) avec une erreur 438, propriété ou méthode non gérée par cet objet.
| la macro dirigée enregistrant un code qui ne | fonctionne pas lorsque je le relance.
***Si tu essaies de créer un TDC là où un TDC existe déjà, cela ne peut pas fonctionner. Tu dois d'abord effacer le TDC existant avant de recréer un TDC à la même place ! De mémoire, dans la procédure originale, il y avait une ligne de code à cet égard.
*** Attention, comme ton code est écrit, tu essaies de créer ton TDC dans la même feuille où sont tes données, à la place de tes données. Dans le bout de code soumis, remplace "NomDeLaFeuilleDeDestination" par le nom de la feuille où tu veux créer ton TDC. Si tu veux le créer dans la même feuille, attention à l'adresse suivante : Range("A2"). Choisis un autre emplacement libre!
*** Les noms de tes TDC devaient avoir un autre nom. TDC représente une colonne dans la feuille de calcul et TDC1 est l'adresse d'une cellule. Tout cela afin d'éviter une méprise possible...
Dim Adr As String With .Worksheets("TCDTemp") 'La feuille source de tes données Adr = .Name & "!" & .Range("TDC").Address 'Création du PivotCache Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:r) 'création du PivotTable End With
With Worksheets("NomDeLaFeuilleDeDestination") Set Pt = Pc.CreatePivotTable(TableDestination:=.Range("A2"), _ TableName:="TCD1", DefaultVersion:=xlPivotTableVersion10) End With
P.S. Prière de demeurer sur le même fil, cela facilite la tâche pour tout le monde.
MichD ------------------------------------------
Pour Isabelle, le Range("TCD") ne marche pas (j'avais déjà tenté le coup).
Pour Denis :
En fait la procédure complète ouvre un nouveau classeur, crée le nom dynamique dans la feuille active à l'ouverture (Données) dans laquelle se trouvent mes données source.
Ensuite, la procédure crée une nouvelle feuille et la renomme TCDTemp (pas utile mais cela me permet de m'y retrouver plus facilement). La feuille TCDTemp est vierge et est active et j'applique le code devant créer le TCD dans cette feuille. J'avais noté le fait d'effacer un précédent tableau mais ce n'était pas le cas ici. Donc le range ("A2") est bien dans la feuille active TCDTemp vierge.
Voici le début du code avec les modifications apportées :
Dim MonChemin As String MonChemin = ActiveWorkbook.Path ChDir MonChemin Workbooks.Open Filename:= _ MonChemin & "Groupes de validation.xls"
'récupération des infos du paramétrage du dernier trimestre connu 'via un TCD et copie dans XL ORI centralisation With ActiveWorkbook 'Feuille "Données" active à l'ouverture du classeur ActiveWorkbook.Names.Add Name:="TCD", RefersToR1C1:= _ "=OFFSET(Données!R1C1,,,COUNTA(Données!C1),COUNTA(Données!R1))"
Dim Pc As PivotCaches Dim Pt As PivotTable Dim Adr As String
Sheets.Add ActiveSheet.Name = "TCDTemp"
Sheets("Données").Select
With .Worksheets("Données") 'La feuille source de tes données Adr = .Name & "!" & .Range("TCD").Address 'OK 'Création du PivotCache Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:r) 'Blocage ici 'création du PivotTable End With
With Worksheets("TCDTemp") Set Pt = Pc.CreatePivotTable(TableDestination:=.Range("A2"), _ TableName:="TaCrD1", DefaultVersion:=xlPivotTableVersion10) End With
Le code bloque toujours sur :
Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:r) avec une erreur 438, propriété ou méthode non gérée par cet objet.
isabelle
oui c'est vrai il faut mettre une adresse type "string"
Pour Isabelle, le Range("TCD") ne marche pas (j'avais déjà tenté le coup).
Marche toujours pas. Le code génère la même valeur que celui de Denis avec un type String (espion positionné) et le code s'arrête toujours à cet endroit.
isabelle a écrit le 13/01/2012 à 18h59 :
oui c'est vrai il faut mettre une adresse type "string"
Pour Isabelle, le Range("TCD") ne marche pas (j'avais
déjà tenté le coup).
Marche toujours pas. Le code génère la même valeur que celui de Denis avec un type String (espion positionné) et le code s'arrête toujours à cet endroit.
Pour Isabelle, le Range("TCD") ne marche pas (j'avais déjà tenté le coup).
Marche toujours pas. Le code génère la même valeur que celui de Denis avec un type String (espion positionné) et le code s'arrête toujours à cet endroit.
isabelle
Source = Range("TCD").Parent.Name & "!" & Range("TCD").Address Set Pc = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Source)
PivotCaches s'applique a Workbook et non à WorkSheet
-- isabelle
Le 2012-01-13 13:28, simulacre25 a écrit :
Marche toujours pas. Le code génère la même valeur que celui de Denis avec un type String (espion positionné) et le code s'arrête toujours à cet endroit.
Source = Range("TCD").Parent.Name & "!" & Range("TCD").Address
Set Pc = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Source)
PivotCaches s'applique a Workbook et non à WorkSheet
--
isabelle
Le 2012-01-13 13:28, simulacre25 a écrit :
Marche toujours pas. Le code génère la même valeur que celui de Denis avec un
type String (espion positionné) et le code s'arrête toujours à cet endroit.
Source = Range("TCD").Parent.Name & "!" & Range("TCD").Address Set Pc = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Source)
PivotCaches s'applique a Workbook et non à WorkSheet
-- isabelle
Le 2012-01-13 13:28, simulacre25 a écrit :
Marche toujours pas. Le code génère la même valeur que celui de Denis avec un type String (espion positionné) et le code s'arrête toujours à cet endroit.
MichD
Devant PivotCache, tu ajoutes : .Parent
Set Pc = .Parent.PivotCaches.Add(SourceType:=xlDatabase, SourceData:r) avec une
MichD ------------------------------------------
Devant PivotCache, tu ajoutes : .Parent
Set Pc = .Parent.PivotCaches.Add(SourceType:=xlDatabase, SourceData:r) avec une