Signaler

VBA Excel 2016 : erreur 1004 sur création TCD [Résolu]

Posez votre question Eaheru 195Messages postés mercredi 23 juin 2010Date d'inscription 28 septembre 2017 Dernière intervention - Dernière réponse le 5 janv. 2017 à 13:17 par Eaheru
Bonjour et Bonne année a tous,

Ne trouvant pas d'ou vient mon problème, je viens soumettre a votre expertise.
J'ai réalisé, en 2010, sous Excel 2007, une macro qui me crée automatiquement des Tableaux Croisés Dynamiques.
Jusque la tout fonctionnait bien mais ce matin au moment de générer le premier TCD sur l'onglet de destination, le code s’arrête et indique : Erreur d’exécution '1004' : La référence n'est pas valide.

Le contexte est le suivant : J'ai un premier onglet qui me sert de source et qui se nomme "datas" et un autre onglet qui se nomme "Indicateurs" et qui regroupe les TCD.

Le code qui fonctionnait depuis 2010 est le suivant :
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="datas!R2C1:R" & Range("A65536").End(xlDown).Row _
& "C19", Version:=xlPivotTableVersion12).CreatePivotTable TableDestination:="Indicateurs!R2C1", TableName:= _
"TotalHeuresRens", DefaultVersion:=xlPivotTableVersion12
With ActiveSheet.PivotTables("TotalHeuresRens").PivotFields("Produit")
For Each PivIt5 In .PivotItems
PivIt5.Visible = True
Next
On Error Resume Next
For Each PivIt5 In .PivotItems
If PivIt5.Name <> vark0 Then
If PivIt5.Name <> vark9 Then
If PivIt5.Name <> vark10 Then
PivIt5.Visible = False
End If
End If
End If
Next
End With
With ActiveSheet.PivotTables("TotalHeuresRens").PivotFields("Produit")
.Orientation = xlRowField
.Position = 1
End With

ActiveSheet.PivotTables("TotalHeuresRens").AddDataField ActiveSheet. _
PivotTables("TotalHeuresRens").PivotFields("Temps reel renseigne"), _
"Somme de Temps reel renseigne", xlSum


et le code qui est maintenant généré par Excel 2016 est le suivant (mais ne fonctionne pas mieux, même message d'erreur)

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="datas!R1C1:R6030C19", Version:=6). _
CreatePivotTable TableDestination:="Indicateurs!R3C1", TableName:="Tableau croisé dynamique2", DefaultVersion:=6
Sheets("Feuil1").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("TotalHeuresRens").PivotFields("Produit")
For Each PivIt5 In .PivotItems
PivIt5.Visible = True
Next
On Error Resume Next
For Each PivIt5 In .PivotItems
If PivIt5.Name <> vark0 Then
If PivIt5.Name <> vark9 Then
If PivIt5.Name <> vark10 Then
PivIt5.Visible = False
End If
End If
End If
Next
End With
ActiveSheet.PivotTables("Tableau croisé dynamique2").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique2").PivotFields("Temps reel renseigne"), _
"Somme de Temps reel renseigne", xlSum


Donc la macro s’arrête dès le début de l'un ou l'autre des paragraphes avec le message d'erreur 1004.
Je précise que ce le code de 2010 a parfaitement fonctionné sous Excel 2016 depuis juin jusqu’à la semaine dernière au moins une fois par semaine.
Si vous avez une idée, elle est la bienvenue :)

Merci d'avance
Utile
+0
plus moins
Bonjour,

Ton code erreur est souvent assez vague mais souvent aussi lié à la détermination précise d'une plage avec un environnement éventuellement différent, présence de plusieurs classeurs par exemple.
La qualification des plages n'est pas assez précise peut-être mais c'est difficile de recréer ton classeur sans autres éléments.
Il se peut aussi que ta ligne de titre ait été modifiée avec des noms de rubriques identiques, une colonne recopiée par erreur par exemple.
Donnez votre avis
Utile
+0
plus moins
Bonjour et merci pour cette réponse.

Effectivement le code d’erreur est plutôt vague et j'ai donc du mal a trouver la source du problème.
Pour donner plus d’éléments, le fichier de départ est un fichier texte, généré à la demande et contient une quantité de lignes aléatoire.
Le fichier n'a pas varié et donc les titres des colonnes (importés du fichier.txt) n'ont pas bougée.

Je continue a chercher :)
Donnez votre avis
Utile
+0
plus moins
Bon, je viens d'essayer avec une autre installation d'Excel 2016 et tout fonctionne très bien.
Il semble donc que mon Excel se soit buggé dans le WE....

Je clôture donc ce sujet. Merci d'avoir réfléchi a mon problème :)
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !