Mise en forme conditionnelle dans un TCD

Bonjour à tous

J'ai un problème avec la mise en forme conditionnelle que j'essaie de mettre dans mon TCD :

Le but est de mettre en violet les 3 plus grandes valeurs pour chaque référence. J'ai déjà réussi à le faire pour une ligne spécifique le problème est que lorsque je rajoute une ligne dans le tableau ou que je réduis l'affichage d'une des référence du dessus, la mise en forme ne s'applique plus aux bonnes cellules.

C'est logique vu que j'ai figé les cellules dans les paramètres de la mise en forme conditionnelle.

Comment faire pour que la mise en forme "suive" la bonne ligne ? (celle du sous total).

Merci d'avance !

Amicalement

8prod-test2-1.xlsm (18.04 Ko)

Bonjour

Plusieurs problèmes

Dans un TCD une MFC s'applique aux champs et non à une plage

Avec une source non normalisée, ton TCD est construit avec autant de champs de valeurs que de colonnes dans la source

Il est donc ingérable de façon normale

Par ailleurs GRANDE.VALEUR se réfère à une ensemble de valeurs, notion qui n'est pas utilisable dans une TCD

Il existe dans les TCD le calcul Rang qui donne le classement et qu'on peut donc utiliser (à condition de réorganiser le TCD) quitte à masquer la colonne Rang

Il faut normaliser ta source soit dans le fichier source soit via une requête PowerQuery, (PowerQuery est totalement intégré à Excel à partir de 2016 et en add on à partir de 2010)

Sinon monter une usine à gaz en VBA

15tcd-classement.xlsm (31.81 Ko)

Bonjour

Plusieurs problèmes

Dans un TCD une MFC s'applique aux champs et non à une plage

Avec une source non normalisée, ton TCD est construit avec autant de champs de valeurs que de colonnes dans la source

Il est donc ingérable de façon normale

Par ailleurs GRANDE.VALEUR se réfère à une ensemble de valeurs, notion qui n'est pas utilisable dans une TCD

Il existe dans les TCD le calcul Rang qui donne le classement et qu'on peut donc utiliser (à condition de réorganiser le TCD) quitte à masquer la colonne Rang

Il faut normaliser ta source soit dans le fichier source soit via une requête PowerQuery, (PowerQuery est totalement intégré à Excel à partir de 2016 et en add on à partir de 2010)

Sinon monter une usine à gaz en VBA

Merci de ta réponse,

comment normaliser une source ? Je n'en ai jamais entendu parler (je ne connais pas non plus PowerQuery)

Sinon utiliser le calcul Rang est une bonne idée mais je n'arrive pas à comprendre comment tu as fait pour avoir le champ "action" ?

Merci d'avance

RE

comment normaliser une source ? Je n'en ai jamais entendu parler (je ne connais pas non plus PowerQuery)

Sinon utiliser le calcul Rang est une bonne idée mais je n'arrive pas à comprendre comment tu as fait pour avoir le champ "action" ?

Justement on normalise soit à la source (une colonne Action et une ligne par typologie) soit avec PowerQuery ce qui permet le champ unique Action facile à gérer en TCD

Comme je l'ai dit si ta version est 2010, il faut installer l'add on. Si tu le peux expliquerai comment faire ou tu regardes là :

http://www.excel-formations.fr/Trucs_astuces/PQ02.php

RE

comment normaliser une source ? Je n'en ai jamais entendu parler (je ne connais pas non plus PowerQuery)

Sinon utiliser le calcul Rang est une bonne idée mais je n'arrive pas à comprendre comment tu as fait pour avoir le champ "action" ?

Justement on normalise soit à la source (une colonne Action et une ligne par typologie) soit avec PowerQuery ce qui permet le champ unique Action facile à gérer en TCD

Comme je l'ai dit si ta version est 2010, il faut installer l'add on. Si tu le peux expliquerai comment faire ou tu regardes là :

http://www.excel-formations.fr/Trucs_astuces/PQ02.php

J'ai réussi à utiliser PowerQuery sur mon fichier principal grâce au tuto de ton lien (pas mal du tout comme outil ahah)

Merci bcp en tout cas ça m'aide beaucoup

Autre petit problème du coup

j'utilisais le code suivant pour actualiser le tcd à chaque fois que l'utilisateur retourne sur la feuille :

Private Sub Worksheet_Activate()
    ActiveSheet.PivotTables(1).PivotCache.Refresh
End Sub

Il semble ne plus marcher, à cause du changement de source du tcd ?

Comment est ce que je pourrai modifier le code ?

Re

Le tableau croisé dynamique de ton exemple a sa source dans un fichier externe

Est-ce toujours le cas et si oui il faut utiliser ce fichier comme source de PowerQuery

Si tu as gardé le deux TCD ton code n'agit sans doute pas sur le bon

Re

Le tableau croisé dynamique de ton exemple a sa source dans un fichier externe

Est-ce toujours le cas et si oui il faut utiliser ce fichier comme source de PowerQuery

Si tu as gardé le deux TCD ton code n'agit sans doute pas sur le bon

Re

Je met le fichier exemple corrigé avec la source qui est dans le même fichier.

J'ai rentré les lignes de codes pour la feuil1 et l'erreur a lieu lorsqu'on bascule de la feuil2 à la feuil1 (le débogueur se lance)

Je n'ai pas réussi à trouver un code qui marche avec un tcd de ce type

Bonjour

Utiliser

    ThisWorkbook.Connections("Requête - Tableau1 (2)").Refresh

Bonjour

Utiliser

    ThisWorkbook.Connections("Requête - Tableau1 (2)").Refresh

Bonjour,

Merci pour la réponse

J'ai rentré ce code dans Feuil1 et dans ThisWorkbook mais aucun des 2 ne semble fonctionner (l'indice n'appartient pas à la sélection) . En manuel, le tcd s'actualise normalement.

Option Explicit
'actualiser le tcd automatiquement
Private Sub Worksheet_Activate()

    ThisWorkbook.Connections("Requête - Tableau1 (2)").Refresh

End Sub

Est-ce que j'ai mis le code au bon endroit ?

RE

Peut-être un effet de bord du forums : dans Données, Connexions, sélectionne la connexion correspondant à la requête, Propriétés, copie le nom et colle le dans le VBA entre les ""

RE

Peut-être un effet de bord du forums : dans Données, Connexions, sélectionne la connexion correspondant à la requête, Propriétés, copie le nom et colle le dans le VBA entre les ""

J'avais déjà essayé et malheureusement ça ne change rien

RE

Sur 2016 je ne sais pas mais sur 365 en plus le nom qui apparait dans propriétés est incomplet contrairement à 2010

J'ai utilisé le débogueur pour récupérer le nom et modifier le code en collant ce nom

Sur 365 et 2010 cela fonctionne maintenant

Super j'ai appliqué sur mon fichier principal et ça fonctionne

Merci !

Rechercher des sujets similaires à "mise forme conditionnelle tcd"