Tableau croisé dynamique ne marche plus en modifiant le nom de SourceData

Bonjour la communauté

Mon deuxième Sujet sur ce forum. 1er résolu. faut que je poste ma solution.

Le nouveau problème que j'ai c'est : j'ai une macro qui crée un tableau croisé dynamique. Bien évidement une procédure pas comme toute les autres. mes données proviennent d'une autre feuille de calcul que celle où ce trouve mon TCD.

mon code (voir ci-dessous) marchait sans problème jusqu'à ce que je modifie le nom de ma SourceData (et tout ce qui lié, nom de la feuille, sans modifier le code name) (le code marche de nouveau en utilisant l'ancien nom)

par sourceData je veux dire la feuille de calcul.

J'ai aussi joué avec les Code names (une autre piste pour les adeptes ?!) ce qui a pu causé le conflit ?

Exemple : nom de la feuille "FCFH_FINAL", nouveau nom "FCFH". erreur d'éxecution '1004':

"le nom du champ du tableau croisé dynamique n'est pas valide. Pour créer un rapport de tableau croisé dynamique, vous devez utiliser les données sous forme de liste avec des étiquettes de colonnes. Si vous changez le nom d'un talbeau croisé dynamique, vous devez taper un nouveau nom pour le champs".

Je suis 100% sûr qu'il n y a ni colonnes, ni lignes vides, pas de groupement de colonnes vides idem ni de lignes vides.

voici la partir du code où ma macro plante, j'ai fait en sorte d'éviter de renommer / deplacer ... mes worksheets/worksheets's code name pour éviter cette erreur qui m'est déjà survenue à plusieurs reprise en modifiant les appelations de mes feuilles.. là je suis obligé de supprimer quelques feuilles pour alléger mon fichier, j'ai rénommé une autre feuille au même nom pour remplacer mais rça ne marche pas non plus :

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        Worksheets("FCFH").Range("A1:Q" & Opt).Address(, , xlR1C1, True), Version:=xlPivotTableVersion15).CreatePivotTable _
        TableDestination:="DC_FCFH_FH_PAXS!R1C1", TableName:= _
        "Tableau croisé dynamique23", DefaultVersion:=xlPivotTableVersion15

J'ai ausi remplacé la ligne, (histoire d'essayer une autre syntaxe, même erreur):

Worksheets("FCFH").Range("A1:Q" & Opt).Address(, , xlR1C1, True), Version:=xlPivotTableVersion15).CreatePivotTable _

par

"FCFH!R1C1:R" & Opt & "C17", Version:=xlPivotTableVersion15).CreatePivotTable _

J'ai aussi utilisé cette macro :

Sub Debug_NettoyerCacheTablePivot()
'par: Excel-Malin.com ( https://excel-malin.com )

    On Error GoTo ProcedureErreur

    Dim TablePivot As PivotTable
    Dim Feuille As Worksheet

    For Each Feuille In ActiveWorkbook.Worksheets
        For Each TablePivot In Feuille.PivotTables
            With TablePivot.PivotCache
                .MissingItemsLimit = xlMissingItemsNone
                .Refresh
            End With
        Next TablePivot
    Next Feuille

    Set TablePivot = Nothing
    Set Feuille = Nothing
Exit Sub
ProcedureErreur:
    MsgBox "Une erreur est survenue..."
End Sub

ainsi que cette macro :

Sub Refresh_Dynamic_Arrays()

For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.RefreshTable
Next
Next
End Sub

pour essayer de vider le caches / rafraîchir les TCD(je ne suis pas un expert vba) mais tjrs rien.

J'ai bien cherché sur les forums mais je ne trouve pas un cas identique au mien.

Merci d'avance pour votre aide.

Eh bien ce qui a causé le problème c'est en effet une colonne qui était vide mais, ce n'était pas si simple à deviner.

la première SourceData avait cette colonne vide et j'en était conscient et tout marchait sans problème.

Au moment où j'ai changé la SourceData par une feuille qui contenait les même Data sans cette colonne vide mais que je parcourait toujours mon tableau (dans la SourceData d'origine) jusqu'à la dernière colonne "Q" ou "17" grace à la ligne de code :

"FCFH!R1C1:R" & Opt_E & "C17", Version:=xlPivotTableVersion15).CreatePivotTable _

et que dans la nouvelle SouceData les données n'allait que jusqu'à la colonne "P" ou "16" vu l'abscence de cette colonne vide sur la nouvelle SourceData ça causait un conflit. d'où la fameuse erreur 1004.

La solution est de bel et bien ajusté ou bien l'indice des colonnes ou bien garder la conne vide et de travailler avec.

Donc toujours faire attention aux colonnes / lignes vides

Rechercher des sujets similaires à "tableau croise dynamique marche modifiant nom sourcedata"