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

Tableau croisé par vba

7 réponses
Avatar
Jac
Bonjour à tous,

je crée un tableau croisé en utilisant l'enregistreur de macro.
Puis je supprime la feuille qui contient le TCD et quand je relance la
macro, je reçois une erreur 1004 qui m'annonce joyeusement que "la méthode
AddFields de la classe PivotTable a échoué".
Et c'est sur la ligne

ActiveSheet.PivotTables("LE_PIVOT").AddFields RowFields:="Repartition",
ColumnFields:="Mois"

qu'il butte... et moi aussi. J'ai renommé le TCD, sans changement. J'ai
enlevé l'accent qui était sur "Répartition", sans changement. J'ai fermé
Excel et après ré-ouverture du fichier, ça ne fonctione pas mieux.

Je suis quand même assez étonné qu'il ne soit même pas capable de faire ce
qu'il a lui-même noté pendant l'enregistrement...

Merci d'avance à qui saura m'indiquer comment sortir de cette embrouille.

Jac

7 réponses

Avatar
cousinhub
Bonsoir,
peux-tu joindre le code dans sa totalité?
ou joindre un fichier exemple sur cjoint?
Bon courage

Bonjour à tous,

je crée un tableau croisé en utilisant l'enregistreur de macro.
Puis je supprime la feuille qui contient le TCD et quand je relance la
macro, je reçois une erreur 1004 qui m'annonce joyeusement que "la méthode
AddFields de la classe PivotTable a échoué".
Et c'est sur la ligne

ActiveSheet.PivotTables("LE_PIVOT").AddFields RowFields:="Repartition",
ColumnFields:="Mois"

qu'il butte... et moi aussi. J'ai renommé le TCD, sans changement. J'ai
enlevé l'accent qui était sur "Répartition", sans changement. J'ai fermé
Excel et après ré-ouverture du fichier, ça ne fonctione pas mieux.

Je suis quand même assez étonné qu'il ne soit même pas capable de faire ce
qu'il a lui-même noté pendant l'enregistrement...

Merci d'avance à qui saura m'indiquer comment sortir de cette embrouille.

Jac






Avatar
Jac
Salut cousin,

voici le code :

Sub PIVOT_TABLE()
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'CC 4'!C1:C4").CreatePivotTable TableDestination:="" _
, TableName:="LE_PIVOT", DefaultVersion:= _
xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:¬tiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
' c'est maintenant que ça
coince --------------------------------------------
ActiveSheet.PivotTables("LE_PIVOT").AddFields RowFields:= _
"Repartition", ColumnFields:="Mois"
'
suite ----------------------------------------------------------------------
With ActiveSheet.PivotTables("LE_PIVOT").PivotFields("HT")
.Orientation = xlDataField
.Caption = "Total CA"
.Function = xlSum
.NumberFormat = "#.##0,00"
End With
ActiveWorkbook.ShowPivotTableFieldList = True
end sub

Merci de te pencher sur mon problème.


"cousinhub" a écrit dans le message de news:
eJplZ%23%
Bonsoir,
peux-tu joindre le code dans sa totalité?
ou joindre un fichier exemple sur cjoint?
Bon courage

Bonjour à tous,

je crée un tableau croisé en utilisant l'enregistreur de macro.
Puis je supprime la feuille qui contient le TCD et quand je relance la
macro, je reçois une erreur 1004 qui m'annonce joyeusement que "la
méthode AddFields de la classe PivotTable a échoué".
Et c'est sur la ligne

ActiveSheet.PivotTables("LE_PIVOT").AddFields RowFields:="Repartition",
ColumnFields:="Mois"

qu'il butte... et moi aussi. J'ai renommé le TCD, sans changement. J'ai
enlevé l'accent qui était sur "Répartition", sans changement. J'ai fermé
Excel et après ré-ouverture du fichier, ça ne fonctionne pas mieux.

Je suis quand même assez étonné qu'il ne soit même pas capable de faire
ce qu'il a lui-même noté pendant l'enregistrement...

Merci d'avance à qui saura m'indiquer comment sortir de cette embrouille.

Jac




Avatar
cousinhub
Re-,
la première chose qui m'interpelle, c'est que tu ne fais référence qu'à
une colonne (SourceData:= "'CC 4'!C1:C4")
tu ne peux donc forcément pas ajouter un champ de ligne, ou de colonne
si tu as préalablement ajouter un champ de ligne!
Regarde si c'est cela.

Salut cousin,

voici le code :

Sub PIVOT_TABLE()
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'CC 4'!C1:C4").CreatePivotTable TableDestination:="" _
, TableName:="LE_PIVOT", DefaultVersion:= _
xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:¬tiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
' c'est maintenant que ça
coince --------------------------------------------
ActiveSheet.PivotTables("LE_PIVOT").AddFields RowFields:= _
"Repartition", ColumnFields:="Mois"
'
suite ----------------------------------------------------------------------
With ActiveSheet.PivotTables("LE_PIVOT").PivotFields("HT")
.Orientation = xlDataField
.Caption = "Total CA"
.Function = xlSum
.NumberFormat = "#.##0,00"
End With
ActiveWorkbook.ShowPivotTableFieldList = True
end sub

Merci de te pencher sur mon problème.


"cousinhub" a écrit dans le message de news:
eJplZ%23%
Bonsoir,
peux-tu joindre le code dans sa totalité?
ou joindre un fichier exemple sur cjoint?
Bon courage

Bonjour à tous,

je crée un tableau croisé en utilisant l'enregistreur de macro.
Puis je supprime la feuille qui contient le TCD et quand je relance la
macro, je reçois une erreur 1004 qui m'annonce joyeusement que "la
méthode AddFields de la classe PivotTable a échoué".
Et c'est sur la ligne

ActiveSheet.PivotTables("LE_PIVOT").AddFields RowFields:="Repartition",
ColumnFields:="Mois"

qu'il butte... et moi aussi. J'ai renommé le TCD, sans changement. J'ai
enlevé l'accent qui était sur "Répartition", sans changement. J'ai fermé
Excel et après ré-ouverture du fichier, ça ne fonctionne pas mieux.

Je suis quand même assez étonné qu'il ne soit même pas capable de faire
ce qu'il a lui-même noté pendant l'enregistrement...

Merci d'avance à qui saura m'indiquer comment sortir de cette embrouille.

Jac








Avatar
cousinhub
Re-, annule mon post précédent...:-[
Ce sont des colonnes entières que tu utilises. Le problème semble
provenir de cela.
A la place de sélectionner les colonnes entières, sélectionne la zone
utilisée uniquement, ceci par l'insertion d'un nom dynamique.
Tu auras ainsi toutes tes données prises en compte, et de plus ton
classeur te dira merci pour son poids (40 fois plus lourd)
reviens si tu veux un exemple

Salut cousin,

voici le code :

Sub PIVOT_TABLE()
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'CC 4'!C1:C4").CreatePivotTable TableDestination:="" _
, TableName:="LE_PIVOT", DefaultVersion:= _
xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:¬tiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
' c'est maintenant que ça
coince --------------------------------------------
ActiveSheet.PivotTables("LE_PIVOT").AddFields RowFields:= _
"Repartition", ColumnFields:="Mois"
'
suite ----------------------------------------------------------------------
With ActiveSheet.PivotTables("LE_PIVOT").PivotFields("HT")
.Orientation = xlDataField
.Caption = "Total CA"
.Function = xlSum
.NumberFormat = "#.##0,00"
End With
ActiveWorkbook.ShowPivotTableFieldList = True
end sub

Merci de te pencher sur mon problème.


"cousinhub" a écrit dans le message de news:
eJplZ%23%
Bonsoir,
peux-tu joindre le code dans sa totalité?
ou joindre un fichier exemple sur cjoint?
Bon courage

Bonjour à tous,

je crée un tableau croisé en utilisant l'enregistreur de macro.
Puis je supprime la feuille qui contient le TCD et quand je relance la
macro, je reçois une erreur 1004 qui m'annonce joyeusement que "la
méthode AddFields de la classe PivotTable a échoué".
Et c'est sur la ligne

ActiveSheet.PivotTables("LE_PIVOT").AddFields RowFields:="Repartition",
ColumnFields:="Mois"

qu'il butte... et moi aussi. J'ai renommé le TCD, sans changement. J'ai
enlevé l'accent qui était sur "Répartition", sans changement. J'ai fermé
Excel et après ré-ouverture du fichier, ça ne fonctionne pas mieux.

Je suis quand même assez étonné qu'il ne soit même pas capable de faire
ce qu'il a lui-même noté pendant l'enregistrement...

Merci d'avance à qui saura m'indiquer comment sortir de cette embrouille.

Jac








Avatar
Jac
Absolument, je veux bien voir un exemple pour le nom dynamique.

"cousinhub" a écrit dans le message de news:
%239eYVp$
Re-, annule mon post précédent...:-[
Ce sont des colonnes entières que tu utilises. Le problème semble provenir
de cela.
A la place de sélectionner les colonnes entières, sélectionne la zone
utilisée uniquement, ceci par l'insertion d'un nom dynamique.
Tu auras ainsi toutes tes données prises en compte, et de plus ton
classeur te dira merci pour son poids (40 fois plus lourd)
reviens si tu veux un exemple

Salut cousin,

voici le code :

Sub PIVOT_TABLE()
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'CC 4'!C1:C4").CreatePivotTable TableDestination:="" _
, TableName:="LE_PIVOT", DefaultVersion:= _
xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:¬tiveSheet.Cells(3,
1)
ActiveSheet.Cells(3, 1).Select
' c'est maintenant que ça
coince --------------------------------------------
ActiveSheet.PivotTables("LE_PIVOT").AddFields RowFields:= _
"Repartition", ColumnFields:="Mois"
'
suite ----------------------------------------------------------------------
With ActiveSheet.PivotTables("LE_PIVOT").PivotFields("HT")
.Orientation = xlDataField
.Caption = "Total CA"
.Function = xlSum
.NumberFormat = "#.##0,00"
End With
ActiveWorkbook.ShowPivotTableFieldList = True
end sub

Merci de te pencher sur mon problème.


"cousinhub" a écrit dans le message de news:
eJplZ%23%
Bonsoir,
peux-tu joindre le code dans sa totalité?
ou joindre un fichier exemple sur cjoint?
Bon courage

Bonjour à tous,

je crée un tableau croisé en utilisant l'enregistreur de macro.
Puis je supprime la feuille qui contient le TCD et quand je relance la
macro, je reçois une erreur 1004 qui m'annonce joyeusement que "la
méthode AddFields de la classe PivotTable a échoué".
Et c'est sur la ligne

ActiveSheet.PivotTables("LE_PIVOT").AddFields RowFields:="Repartition",
ColumnFields:="Mois"

qu'il butte... et moi aussi. J'ai renommé le TCD, sans changement. J'ai
enlevé l'accent qui était sur "Répartition", sans changement. J'ai
fermé Excel et après ré-ouverture du fichier, ça ne fonctionne pas
mieux.

Je suis quand même assez étonné qu'il ne soit même pas capable de faire
ce qu'il a lui-même noté pendant l'enregistrement...

Merci d'avance à qui saura m'indiquer comment sortir de cette
embrouille.

Jac









Avatar
cousinhub
Bonsoir, dans le fichier ci-joint :
http://cjoint.com/?flvI7qScat


Regarde bien l'aide concernant la formule DECALER, et reviens si tu as
des problèmes
Bonne lecture

Absolument, je veux bien voir un exemple pour le nom dynamique.

"cousinhub" a écrit dans le message de news:
%239eYVp$
Re-, annule mon post précédent...:-[
Ce sont des colonnes entières que tu utilises. Le problème semble provenir
de cela.
A la place de sélectionner les colonnes entières, sélectionne la zone
utilisée uniquement, ceci par l'insertion d'un nom dynamique.
Tu auras ainsi toutes tes données prises en compte, et de plus ton
classeur te dira merci pour son poids (40 fois plus lourd)
reviens si tu veux un exemple

Salut cousin,

voici le code :

Sub PIVOT_TABLE()
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'CC 4'!C1:C4").CreatePivotTable TableDestination:="" _
, TableName:="LE_PIVOT", DefaultVersion:= _
xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:¬tiveSheet.Cells(3,
1)
ActiveSheet.Cells(3, 1).Select
' c'est maintenant que ça
coince --------------------------------------------
ActiveSheet.PivotTables("LE_PIVOT").AddFields RowFields:= _
"Repartition", ColumnFields:="Mois"
'
suite ----------------------------------------------------------------------
With ActiveSheet.PivotTables("LE_PIVOT").PivotFields("HT")
.Orientation = xlDataField
.Caption = "Total CA"
.Function = xlSum
.NumberFormat = "#.##0,00"
End With
ActiveWorkbook.ShowPivotTableFieldList = True
end sub

Merci de te pencher sur mon problème.


"cousinhub" a écrit dans le message de news:
eJplZ%23%
Bonsoir,
peux-tu joindre le code dans sa totalité?
ou joindre un fichier exemple sur cjoint?
Bon courage

Bonjour à tous,

je crée un tableau croisé en utilisant l'enregistreur de macro.
Puis je supprime la feuille qui contient le TCD et quand je relance la
macro, je reçois une erreur 1004 qui m'annonce joyeusement que "la
méthode AddFields de la classe PivotTable a échoué".
Et c'est sur la ligne

ActiveSheet.PivotTables("LE_PIVOT").AddFields RowFields:="Repartition",
ColumnFields:="Mois"

qu'il butte... et moi aussi. J'ai renommé le TCD, sans changement. J'ai
enlevé l'accent qui était sur "Répartition", sans changement. J'ai
fermé Excel et après ré-ouverture du fichier, ça ne fonctionne pas
mieux.

Je suis quand même assez étonné qu'il ne soit même pas capable de faire
ce qu'il a lui-même noté pendant l'enregistrement...

Merci d'avance à qui saura m'indiquer comment sortir de cette
embrouille.

Jac











Avatar
Jac
Bien vu... et merci pour le décalage...
La zone "Base" n'apparaît pas en cliquant dans la zone nom où apparait la
liste des zones nommées.
Est-ce normal ?

"cousinhub" a écrit dans le message de news:

Bonsoir, dans le fichier ci-joint :
http://cjoint.com/?flvI7qScat


Regarde bien l'aide concernant la formule DECALER, et reviens si tu as des
problèmes
Bonne lecture

Absolument, je veux bien voir un exemple pour le nom dynamique.

"cousinhub" a écrit dans le message de news:
%239eYVp$
Re-, annule mon post précédent...:-[
Ce sont des colonnes entières que tu utilises. Le problème semble
provenir de cela.
A la place de sélectionner les colonnes entières, sélectionne la zone
utilisée uniquement, ceci par l'insertion d'un nom dynamique.
Tu auras ainsi toutes tes données prises en compte, et de plus ton
classeur te dira merci pour son poids (40 fois plus lourd)
reviens si tu veux un exemple

Salut cousin,

voici le code :

Sub PIVOT_TABLE()
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=
_
"'CC 4'!C1:C4").CreatePivotTable TableDestination:="" _
, TableName:="LE_PIVOT", DefaultVersion:= _
xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:¬tiveSheet.Cells(3,
1)
ActiveSheet.Cells(3, 1).Select
' c'est maintenant que ça
coince --------------------------------------------
ActiveSheet.PivotTables("LE_PIVOT").AddFields RowFields:= _
"Repartition", ColumnFields:="Mois"
'
suite ----------------------------------------------------------------------
With ActiveSheet.PivotTables("LE_PIVOT").PivotFields("HT")
.Orientation = xlDataField
.Caption = "Total CA"
.Function = xlSum
.NumberFormat = "#.##0,00"
End With
ActiveWorkbook.ShowPivotTableFieldList = True
end sub

Merci de te pencher sur mon problème.


"cousinhub" a écrit dans le message de news:
eJplZ%23%
Bonsoir,
peux-tu joindre le code dans sa totalité?
ou joindre un fichier exemple sur cjoint?
Bon courage

Bonjour à tous,

je crée un tableau croisé en utilisant l'enregistreur de macro.
Puis je supprime la feuille qui contient le TCD et quand je relance
la macro, je reçois une erreur 1004 qui m'annonce joyeusement que "la
méthode AddFields de la classe PivotTable a échoué".
Et c'est sur la ligne

ActiveSheet.PivotTables("LE_PIVOT").AddFields
RowFields:="Repartition", ColumnFields:="Mois"

qu'il butte... et moi aussi. J'ai renommé le TCD, sans changement.
J'ai enlevé l'accent qui était sur "Répartition", sans changement.
J'ai fermé Excel et après ré-ouverture du fichier, ça ne fonctionne
pas mieux.

Je suis quand même assez étonné qu'il ne soit même pas capable de
faire ce qu'il a lui-même noté pendant l'enregistrement...

Merci d'avance à qui saura m'indiquer comment sortir de cette
embrouille.

Jac