Bonjour,
Je suis devant un petit problème de Tableau Croisé Dynamique.
J'ai une application Excel qui utilise plusieurs TCD conditionnés par de multiples filtres fixes, c'est à dire qui ne devraient pas changer dans le temps, quitte à produire un tableau vide lorsque le critère de filtre n'est pas respecté.
Le problème est que lorsqu'un critère de filtre n'existe pas à un instant t dans la source de donnée, Excel met dans le filtre une valeur prise (au hasard ?) dans la liste des critères existants. Résultat: le TCD produit un résultat qui n'a rien à voir avec ce que j'attends de lui (basé sur le critère fantaisiste) et, de plus le filtre ne revient plus à la valeur de critère originelle, même lorsque ce critère redevient présent dans la source de donnée.
Je ne sais pas si je suis très clair. Merci de jeter un coup d'oeil sur l'exemple joint.
Dans cet exemple, si je supprime les lignes 6 à 8 (correspondant à l'index ind2) et que je réactualise le TCD, le filtre Index "saute" et prend une des autres valeurs d'index (en l'occurrence ind3).
J'ai donc imaginé une macro VBA pour forcer le filtre à la bonne valeur:
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("index").ClearAllFilters
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("index").CurrentPage = "ind2"
A l’exécution, systématiquement, j'obtiens une <Erreur d'execution '5' / Argument ou appel de procédure incorrect.>
En résumé, si quelqu'un pouvait m'aider à trouver un moyen pour forcer un filtre TCD à une valeur de critère inexistant à l'instant donné (mais qui deviendra existant plus tard...), je lui en serait grandement reconnaissant
PS: pour finir et pour rire: il est possible de faire ce que je désire par une saisie manuelle en saisissant ind2 en H1. Pas d'erreur, le tableau se met à jour (il devient vide, logique) mais aucun moyen de le faire en VBA sans provoquer l'erreur... Grrrrrrr...
D'ici vos réponses libératrices, je vous souhaite toutes et tous une bonne soirée !!