TCD & Macro position case

gabvoir

XLDnaute Nouveau
Bonjour tlm,

Je souhaiterais ajouter une fonctionnalité à mon TCD, compter les valeurs uniques d'un champ.
Il me semble avoir vu kkpart que ça n'était pas possible.
(Si ce n'est pas le cas, ça m'éviterai le problème ci dessous ?)

J'ai donc eu l'idée d'écrire une macro qui va le faire.
Bref j'ai donc utilisé : Workbook_SheetBeforeDoubleClick
Mais je ne crois pas que l'objet target soit lié au TCD.
(Si ce n'est pas le cas, ça m'éviterai le problème ci dessous ?)

Je suis donc passé par une boucle de ce type :
Code:
            For Each r In sheet.PivotTables(1).RowFields("Famille 2").PivotItems
                If r.LabelRange.Row = target.Row Then
                    Famille2 = r.name
                    Exit For
                End If
            Next r

Le problème c'est que cela ne fonctionne que si Famille 2 est développé, car dans ce cas "LabelRange" n'existe pas.
Comment puis-je savoir qu'un item ligne est développé ?

De plus la fonction ci-dessus ne fonctionnera plus s'il y a pls Famille2, dans une Famille1, est il possible de connaitre l'étendu de LabelRange ?

Merci pour votre aide,

Gabvoir
 

Misange

XLDnaute Barbatruc
Re : TCD & Macro position case

Bonjour
Si on peut compter les valeurs uniques d'un champ, le plus simple étant d'ajouter une colonne à la base de données pour cela. Ce serait bien plus facile de t'aider si tu joignais un bout de fichier anonymisé en cliquant sur mode avancé puis sur le trombone.
 

chris

XLDnaute Barbatruc
Re : TCD & Macro position case

Bonjour
Coucou Misange

Dans 2010 il faut ou bien une formule dans la source comme indiqué par Misange ou bien PowerPivot.
Dans 2013 PowerPivot est intégré et la solution passe aussi par là.
 

gabvoir

XLDnaute Nouveau
Re : TCD & Macro position case

Bonjour Misange, bonjour chris,

Oui j'avais trouvé des astuces pour compter les valeurs uniques en ajoutant une colonne dans le tableau de base.
Malheureusement cette colonne ne va pas permettre de calculer les valeurs uniques suivant quel ligne est développé.

Malheureusement je travail sur un PC d'entreprise, impossibilité d'utiliser PowerPivot.

Je m'occupe de créer un fichier anonymisé et je vous envoi cela dans la journée !

Merci!

EDIT : En PJ un fichier anonymisé.
Comme vous pourrez le voir, j'ai commencé a ecrire kkchose pour obtenir le nb de fournisseur, en passant par la création d'un onglet (similaire au double clic sur un TCD). Cf le double clic sur une valeur d'une colone NbFact.
 

Pièces jointes

  • Recapitulatif v13 Anonym.xlsm
    53.9 KB · Affichages: 27
  • Recapitulatif v13 Anonym.xlsm
    53.9 KB · Affichages: 31
  • Recapitulatif v13 Anonym.xlsm
    53.9 KB · Affichages: 36
Dernière édition:

Misange

XLDnaute Barbatruc
Re : TCD & Macro position case

Bonjour

On peut tout à fait compter les valeurs uniques suivant d'autres critères mais comme tu ne dis pas ce que tu veux compter comme critère, c'est difficile de t'aider
par exemple
=SI(SOMMEPROD(($A$2:$A2=A2)*($D$2:$D2=D2))>1;0;1)
met 1 sur la ligne la première fois qu'une valeur nouvelle pour les deux critères des colonnes A ET D apparait, 0 si c'est un doublon sur ces deux critères. Tu peux bien entendu ajouter des paramètres à cette formule pour chercher les doublons sur X critères simultanés.

Tu fournis un TCD qui ne doit pas être ce que tu cherches sinon tu ne poserais pas la question mais tu ne montres pas le TCD que tu voudrais avoir.
 

gabvoir

XLDnaute Nouveau
Re : TCD & Macro position case

En effet je n'etait peut pas très explicite sur ce que je cherche à faire.
Qui je pense est relativement compliqué en fait....

J'ai copié en dessous du TCD actuel ce que je cherche à faire.
Ca sera certainement plus clair.

En espérant qu'il y aura une solution.

Donc en effet ta formule m'irai (déplacer sur al colonne F et G), si dans le TCD je n'était pas ammené à réduire la famille 1.
Puisquelle me compte sur le critère Famille 1 et Famille 2, en réduisant le champs je ne voudrais compter que sur le critère de famille, et cela dans la même colonne. (Afin de rester dans la logique du TCD)
 

Pièces jointes

  • Recapitulatif v13 Anonym.xlsm
    55.1 KB · Affichages: 31
  • Recapitulatif v13 Anonym.xlsm
    55.1 KB · Affichages: 37
  • Recapitulatif v13 Anonym.xlsm
    55.1 KB · Affichages: 36

gabvoir

XLDnaute Nouveau
Re : TCD & Macro position case

On compte le nombre de fournisseur (colonne D) pour une même entreprise (colonne A), ET une même famille 1 (col F) ET une même famille 2 (col G).
Donc je pourrais utiliser :
Code:
=SI(SOMMEPROD(($A$2:$A2=A2)*($D$2:$D2=D2)*($F$2:$F2=F2)*($G$2:$G2=G2))>1;0;1)

Cette formule fonctionnerai correctement dans le TCD quand la famille 1 serait développé.
Seulement si on réduit le champ Famille 1 (on cache les famille 2) il n'a donc pas lieux de faire le filtre sur la famille 2.

Si on se sert de la même formule qu'au dessus, si on a:
Frs 1 dans la famille1=A/famille2=C
mais aussi Frs1 dans la famille=A/famille2=D
Ben le nombre de fournisseur fera 2, alors qu'il n'y en a qu'un seul.

Cf l'exemple ci-dessous qui illustre le fait que la formule complète ne fonctionnerai pas :
Screen.jpg

EDIT : J'ai remis le fichier exemple en ayant inclus la formule ci-dessus, et mis en surbrillance les cases qui ne vont pas.
 

Pièces jointes

  • Screen.jpg
    Screen.jpg
    48.7 KB · Affichages: 32
  • Screen.jpg
    Screen.jpg
    48.7 KB · Affichages: 30
  • Recapitulatif v13 Anonym.xlsm
    62.5 KB · Affichages: 29
  • Recapitulatif v13 Anonym.xlsm
    62.5 KB · Affichages: 31
  • Recapitulatif v13 Anonym.xlsm
    62.5 KB · Affichages: 33
Dernière édition:

Misange

XLDnaute Barbatruc
Re : TCD & Macro position case

Dans ce cas il te faut deux indicateurs "uniques" différentes, un qui tienne compte de la famille 1 et de la famille 2 pour les uniques et l'autre qui ne tienne compte que de la famille 1. Tu peux faire alors deux TCD développés et réduits sur les familles. Ou alors un seul mais avec les deux indicateurs.
 

gabvoir

XLDnaute Nouveau
Re : TCD & Macro position case

Oue c'est bien ce que j'avais peur.
Donc ca va me faire 4 colonnes avec des formules de ce genre.
Car effectivement la tu parles de l’agrégation famille2 dans famille1 mais y'a le meme soucis avec l'agregation des entreprise colonne 1.

La solution d'un 2° TCD
Etant donné que je suis justement (cf un autre post auquel tu as participé :D) dans le cadre d'un fichier extremement lourd en ligne, et en TCD graphique, j'essaye de reduire au maximum le nombre :D

EDIT : Et qui plus est ca ne changera pas le problème indiqué en Rouge dans mon post d'avant, car les colonnes de droites ne font qu'effectuer la somme de la ligne.

Donc la solution que j'avais trouvé c'est de ne pas l'afficher directement dans le tableau mais dans une msgbox qui s'ouvre en double cliquant.
D'où mon interrogation qui a donné le nom à mon topic :
Lien entre le Target de la routine DoubleClick, et position dans le TCD ?

Si il n'y en a pas, ce que je pense, j'ai commencé à écrire kkchose, mais il me manquerait juste une information me permettant de savoir si un PivotItem est Développé ou Réduit ?

Merci
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 852
Membres
103 974
dernier inscrit
chmikha