Mettre en forme une cellule d'un TCD en fonction des valeurs d'items ligne et colonne

adhyatma

XLDnaute Nouveau
Bonjour,

Ma question est relativement simple car je pense que c'est un problème de syntaxe.

Dans le cadre d'une réaffectation de portefeuille de clientèle, je crée un TCD avec une macro dans lequel les lignes sont les noms des nouveaux conseillers et les colonnes les noms des anciens conseillers. les cellules de valeurs sont tout simplement le comptage du nombre de clients affiché sous forme de pourcentage de ligne, ce qui permet de savoir comment est constitué le nouveau portefeuille.

Afin d'en augmenter la lisibilité, je voudrais que le pourcentage de portefeuille récupéré (même agent en ligne et en colonne) soit mis en surbrillance (fond vert par exemple).

J'ai essayé différentes approches qui fonctionnent toutes en partie mais je bute sur la syntaxe pour adresser la bonne cellule.

J'ai essayé selon les deux méthodes ci-après, rien à faire, j'ai une erreur d'objet et je ne sais comment identifier le nom de l'objet qui me permettra de faire fonctionner l'une ou l'autre technique :

'Première méthode : parcourir les items ligne et colonne
Set pvt = Worksheets("Feuil9").Range("A3").PivotTable
Dim Ptl, Ptc As PivotItem
Dim numl, numc, nbl, nbc As Integer
For Each Ptl In pvt.PivotFields("Nom agent cible").PivotItems ' Lignes
For Each Ptc In pvt.PivotFields("Nom").PivotItems 'Colonnes
If Ptl = Ptc Then pvt.DataBodyRange.Cells(Ptl.Row, Ptc.Column).Interior.ColorIndex = 4
Next
Next

' Deuxième méthode : parcourir les cellules
Dim cell As Range
For Each cell In pvttable.TableRange1
If cell.PivotFields("Nom agent cible").PivotItem.Value = cell.PivotFields("Nom").PivotItem.Value Then _
cell.Interior.ColorIndex = 4
Next


Merci d'avance de votre aide
 

adhyatma

XLDnaute Nouveau
Re : Mettre en forme une cellule d'un TCD en fonction des valeurs d'items ligne et co

Finalement j'ai trouvé une syntaxe qui fonctionne pour la première méthode, j'ai corrigé la ligne if de la manière suivante :

If Trim(Ptl) = Trim(Ptc) Then pvt.DataBodyRange.Cells(Ptl.DataRange.Row - 4, Ptc.DataRange.Column - 1).Interior.ColorIndex = 4

Quelqu'un aurait-il une solution plus élégante et/ou plus simple ?
 

Discussions similaires

Statistiques des forums

Discussions
311 737
Messages
2 082 036
Membres
101 878
dernier inscrit
1475214