Baser le filtre d'un TCD sur la chaine de caractère d'une cellule

Bonjour,

Débutant en Excel que j'utilise pour de la visualisation de données, j'j'aibesoin de filtrer les projets pris en compte dans le TCD (environ 200 000 projets) en fonction des pays partenaires qui y sont associés. Or, tout les pays partenaires sont mentionnée dans une seule colonne sous la forme de code pays pays en 2 lettres, avec donc près de 150 000 variables différentes, chaque projets mélangeant un cocktail différent de partenaire (cf. l'onglet "Données", ce qui exclut l'utilisation d'un segment.

Ce que j'aimerai obtenir, ce qu'en indiquant le nom d'un pays partenaire dans une cellule, le contenu de cette cellule s'applique au filtre "pays partenaire" du TCD. J'ai vu le post https://forum.excel-pratique.com/excel/filtrer-tcd-en-fonction-d-une-cellule-90063 qui explique comment faire pour faire un filtrage de TCD à partir de la chaine de valeur d'une cellule de référence, mais il s'agissait d'un filtre appliqué en tant que ligne d’un TCD, pas en tant que filtre séparé du tableau comme je veux l'avoir...

D'avance, un énorme merci à celui ou celle qui pourra me débloquer le schmilblick !!

Cordialement,

5test1.xlsm (44.04 Ko)

Bonjour

Avec une source contenant une colonne multivaluée ce n'est pas possible sans restructurer le tableau source

Ce qui est faisable par PowerQuery intégré à Excel

Cependant si tu ne filtres aucun pays ou plusieurs à la fois, cela va additionner les subventions...

Bonjour Chris,

Un grand merci pour la solution avec PowerQuery, ça va beaucoup m'aider pour un autre tableau.

En revanche, pour celui-ci, c'est effectivement un problème si les subventions sont additionné, car le total ne doit pas être faussé quand ce filtre n'est pas activité. Du coup, j'ai adopté une autre approche, en ajoutant dans mon tableau source au TCD une colonne "Filtre pays partenaire" qui indique "Oui" lorsqu'il trouve à la même ligne dans la colonne ""pays partenaire" la valeur recherchée.

Cette valeur recherchée provient elle-même d'un segment "fictif" (c'est un dire un segment d'un second TCD basé sur un second tableau n'affichant les pays partenaires que un par un) et dont la valeur sélectionnée (une seule valeur possible) est affichée dans le filtre du second TCD, ce qui permet de la récupérer pour faire fonctionner la formule de la colonne "Filtre pays partenaire" du premier tableau.

Le seul problème, c'est que pour que cette solution fonctionne, il faut que le premier TCD se mette à jour à chaque modification apportée soit au segment "fictif", soit à la cellule du filtre du second TCD. Or, pour cette seconde option, je n'arrive pas à trouver une macro qui mette automatiquement le TCD dès que la valeur apparente de la cellule est modifiée...

J'ai essayé la macro suivante, mais elle ne fonctionne que lorsque la valeur de la cellule est modifiée manuellement, pas lorsque la valeur de la cellule de référence est modifiée suite au changement dans le segment.

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$E$2" Then ThisWorkbook.RefreshAll End If End Sub

D'avance, un grand merci si tu vois une solution !

2test2.xlsm (61.95 Ko)

Bonjour

Une solution avec un second TCD basé sur la liste des pays (lignes 1 et 2 masquées), plage nommée + Segment

Si le segment agit sur le 1er TCD, le second est actualisé

La requête initiale est ventilée en plusieurs : si choix d'un seul pays ou de Tous, on affiche les valeurs correspondantes.

Si choix de n pays, le TCD est vide car je ne vois pas ce qu'on pourrait additionner de façon cohérente dans ce cas

Bonsoir Chris,

Un très grand merci ! Je vais prendre un peu de temps pour tout comprendre afin de l'adapter au fichier complet (les pays partenaires y sont rassemblés par sous-ensembles géographiques, qui doivent aussi apparaitre en segments), mais ça m'aidera énormément !

Bonjour Chris,
J'ai réussi à répliquer votre méthode pour l'ensemble de la base de données, mais le problèmes est que l'actualisation du TCD 1/affiche à chaque fois un message d'erreur d'exécution '1004' (erreur définie par l'application ou par l'objet) 2/ est très longue (10 seconde au moins minimum) lorsqu'elle s'applique à l'ensemble des données.

Du coup, j'ai procédé différemment et suis revenu à la technique précédemment décrite de faux segment, 'actualisation du TCD est beaucoup plus rapide (3s), et votre macro permet toujours d'actualiser le TCD automatiquement, un grand merci !

Rechercher des sujets similaires à "baser filtre tcd chaine caractere"