VBA Erreur 1004
srouches
-
cousinhub29 Messages postés 1074 Date d'inscription Statut Membre Dernière intervention -
cousinhub29 Messages postés 1074 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis débutant en VBA, en clair pour l'instant je ne créé du code que via l'enregistreur de macro.
A partir d'un tableau (nb de colonnes fixe, nb de lignes variable), je dois réaliser un tableau croisé dynamique.
J'enregistre la création du tableau et je termine l'enregistrement dès qu'il est affiché.
En lançant la macro : "Erreur 1004, la méthode addfields de la classe tablepivot a échouée"
J'ai lu que l'erreur 1004 est assez générique, mais si vous pouviez m'aider... voici mon code :
Sub DMS()
'
' DMS Macro
' test
'
'
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"insert!C1:C10").CreatePivotTable TableDestination:= _
"'[modèle fichier global.xls]total'!R5C1", TableName:= _
"Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddFields RowFields:= _
Array("NOM AGENT", "Données"), ColumnFields:="NOM CLIENT FACTURE"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("CA")
.Orientation = xlDataField
.Caption = "Somme de CA"
.Position = 1
.Function = xlSum
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"QUANTITE")
.Orientation = xlDataField
.Caption = "Somme de QUANTITE"
.Function = xlSum
End With
End Sub
NOM AGENTS / NON CLIENT FACTURE / CA / QUANTITE sont des titres de colonnes du tableau source.
Pour définir la source du tableau croisé dynamique, je sélectionne les colonnes complètes car le nb de lignes du tableau peut varier dans le temps (j'ai également essayer en prenant une zone source plus délimitée mais l'erreur persiste).
Merci par avance.
Je suis débutant en VBA, en clair pour l'instant je ne créé du code que via l'enregistreur de macro.
A partir d'un tableau (nb de colonnes fixe, nb de lignes variable), je dois réaliser un tableau croisé dynamique.
J'enregistre la création du tableau et je termine l'enregistrement dès qu'il est affiché.
En lançant la macro : "Erreur 1004, la méthode addfields de la classe tablepivot a échouée"
J'ai lu que l'erreur 1004 est assez générique, mais si vous pouviez m'aider... voici mon code :
Sub DMS()
'
' DMS Macro
' test
'
'
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"insert!C1:C10").CreatePivotTable TableDestination:= _
"'[modèle fichier global.xls]total'!R5C1", TableName:= _
"Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddFields RowFields:= _
Array("NOM AGENT", "Données"), ColumnFields:="NOM CLIENT FACTURE"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("CA")
.Orientation = xlDataField
.Caption = "Somme de CA"
.Position = 1
.Function = xlSum
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"QUANTITE")
.Orientation = xlDataField
.Caption = "Somme de QUANTITE"
.Function = xlSum
End With
End Sub
NOM AGENTS / NON CLIENT FACTURE / CA / QUANTITE sont des titres de colonnes du tableau source.
Pour définir la source du tableau croisé dynamique, je sélectionne les colonnes complètes car le nb de lignes du tableau peut varier dans le temps (j'ai également essayer en prenant une zone source plus délimitée mais l'erreur persiste).
Merci par avance.
A voir également:
- VBA Erreur 1004
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
1 réponse
Bonjour,
Petite précision, tout d'abord...
Lorsque l'on veut faire un TCD, il vaut mieux éviter de prendre des colonnes entières en référence, la taille du fichier s'en ressentira....
Ensuite, dans un code, même enregistré par l'enregistreur de macro, tu obtiendras cette erreur "1004", sans doute un signe que même Excel n'en veut pas, des colonnes entières...
Tu peux créer ta base de référence de façon dynamique (via une formule du style "DECALER"), ou la définir en tout début de code
Ensuite, tu prends en référence cette "base"
De plus, dans ton code initial, tu parles toujours "d'ActiveSheet"...
Or, tu insères le TCD dans une autre feuille, donc le TCD n'est pas dans la feuille active...
Essaie avec ce code :
Bon courage
Petite précision, tout d'abord...
Lorsque l'on veut faire un TCD, il vaut mieux éviter de prendre des colonnes entières en référence, la taille du fichier s'en ressentira....
Ensuite, dans un code, même enregistré par l'enregistreur de macro, tu obtiendras cette erreur "1004", sans doute un signe que même Excel n'en veut pas, des colonnes entières...
Tu peux créer ta base de référence de façon dynamique (via une formule du style "DECALER"), ou la définir en tout début de code
Ensuite, tu prends en référence cette "base"
De plus, dans ton code initial, tu parles toujours "d'ActiveSheet"...
Or, tu insères le TCD dans une autre feuille, donc le TCD n'est pas dans la feuille active...
Essaie avec ce code :
Sub DMS() Range("A1:D" & [A65000].End(xlUp).Row).Name = "base" ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "base").CreatePivotTable TableDestination:= _ "'[modèle fichier global.xls]total'!R5C1", TableName:= _ "Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10 With Sheets("total") .PivotTables("Tableau croisé dynamique1").AddFields RowFields:= _ Array("NOM AGENT", "Données"), ColumnFields:="NOM CLIENT FACTURE" With .PivotTables("Tableau croisé dynamique1").PivotFields("CA") .Orientation = xlDataField .Caption = "Somme de CA" .Position = 1 .Function = xlSum End With With .PivotTables("Tableau croisé dynamique1").PivotFields("QUANTITE") .Orientation = xlDataField .Caption = "Somme de QUANTITE" .Function = xlSum End With End With End Sub
Bon courage