TCD à partir d'une zone glissante : problème d'étiquettes?

baboucm

XLDnaute Nouveau
Bonjour,

Tous d’abord je vous remercie pour votre forum qui m’a initié aux TCD et qui m’a permis d’apprendre à utiliser plein de fonctions comme decaler, recherchev…ect.

Mais là je suis face à un problème que je n’arrive pas à résoudre.
J’ai une base de données comprenant diverses informations sur plusieurs années (par date) et je souhaite faire un TCD sur les données comprises entre 2 dates que je saisie dans une feuille paramètre.
Pour cela j’ai nommé une zone glissante zv à l’aide de fonctions décaler (et nbval et equiv).

Quand je vais dans gestionnaire des noms, la zone en surbrillance correspondant à zv correspond bien aux données que je veux dans mon TCD, donc ma définition de zone est bonne. Mais quand je fais insérer TCD et en mettant zv comme données sources, soit il me met toutes les données du tableau, soit je me retrouve avec un problème d’étiquettes puisque ma zone variable n’a pas d’étiquettes, ce qui pose problème pour construire un TCD

Si possible il faudrait que la manipulation n’utilise pas de macro (car je ne les maitrise pas du tout et je vais devoir reproduire l’opération sur divers classeurs) et je travaille sur Excel 2010 mais mes collaborateurs devront pouvoir CONSULTER les fichiers sous Excel 2003 et 2007

ci-joint un fichier pour plus de compréhension
 

Pièces jointes

  • essai tcd simplifie.xls
    71 KB · Affichages: 51

Legolas

XLDnaute Occasionnel
Re : TCD à partir d'une zone glissante : problème d'étiquettes?

Bonjour,

Sans passer par macro, je n'arrive pas à faire ce qui est demandé... (cela doit dépasser mes compétences ^^)
Sinon, une solution proposée dans le fichier joint.
Le TCD prend en compte toute la base de données, et il y a un filtre sur les dates de la feuille paramètre.
Le code est assez simple à lire :

VB:
Sub Macro1()

Dim date_deb, date_fin As String

date_deb = Sheets("par").Cells(4, 2) 'défintion de la date de début par rapport à la feuille "par"
date_fin = Sheets("par").Cells(5, 2) 'défintion de la date de fin par rapport à la feuille "par"

'enlève les filtres existants
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Départ"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Années"). _
        ClearAllFilters
'ajoute le filtre avec date_deb <= date <= date_fin
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Départ"). _
        PivotFilters.Add Type:=xlDateBetween, Value1:=date_deb, Value2:=date_fin
        
End Sub

A+
 

Pièces jointes

  • Classeur1.xlsm
    45.5 KB · Affichages: 64
  • Classeur1.xlsm
    45.5 KB · Affichages: 70
  • Classeur1.xlsm
    45.5 KB · Affichages: 61

chris

XLDnaute Barbatruc
Re : TCD à partir d'une zone glissante : problème d'étiquettes?

Bonjour

Tu as 2010 : si tu utilisais un seul TCD avec des segments, on pourrait simplifier les choses sans VBA ou avec peu de code VBA, synchroniser TCD et choix.
 

baboucm

XLDnaute Nouveau
Re : TCD à partir d'une zone glissante : problème d'étiquettes?

Bonjour,

Je n'arrive pas à mettre en place la macro mais en essayant de la comprendre avec le fichier de Legolas j'ai découvert qu'avec 2010 on pouvait faire un trie chronologique sur le champs date et qu'on pouvait selectionner "entre" 2 dates. Ce qui est relativement simple a mettre en place donc facile de refaire la manip sur les 12 classeurs de différents type ou je dois faire glisser les tableaux et en plus ça reste consultable par mes collègues qui sont en 2003 ou 2007. Donc ça me convient. Sujet Résolu.

En revanche Chris je n'ai pas compris ce que tu voulais dire qu'est ce que des segments et la synchronisation de TCD?

merci de votre aide!
 

chris

XLDnaute Barbatruc
Re : TCD à partir d'une zone glissante : problème d'étiquettes?

Bonjour

Ci-joint un TCD avec des segments (à ouvrir avec 2010). J'ai mis n'importe quoi ne sachant pas quel TCD tu vises.

Mais tu peux voir qu'il est très facile de sélectionner une période sans VBA.

Ma remarque était que tu pouvais néanmoins, par macro, sélectionner des valeurs dans les segments afin d'être synchrone avec tes zones de choix mais que je n'en voyais pas trop l'intérêt.

Si le classeur est utilisé en 2003 et 2007 mes remarques tombent...
 

Pièces jointes

  • tcd simplifie.xlsx
    42.9 KB · Affichages: 52

Efgé

XLDnaute Barbatruc
Re : TCD à partir d'une zone glissante : problème d'étiquettes?

Bonjour baboucm, Legolas, Bonjour chris :)
Etant sous 2007, je n'ai pas pu voir le classeur de chris, dommage je ne connais pas les segments...
Même si le sujet semble clos, une proposition par formule, valable pour toute version, avec une feuille "RELAIS" supplémentaire.
Le principe :
Mettre sur la feuille relais les valeurs de l'en-tete et les valeurs du tableau dynamique "zv"
Deux zones nommées
EnTete =DECALER(BDG!$A$1;;;;NBVAL(BDG!$1:$1))
DataTCD =DECALER(RELAIS!$A$1;;;LIGNES(zv)+1;COLONNES(EnTete))

Deux formules sur la feuille relais
En $A$1 à tirer vers la droite
=SI(COLONNES($A:A)<=COLONNES(EnTete);INDEX(EnTete;1;COLONNES($A:A));"")

En $A$2 à tirer vers la droite et vers le bas
=SI(ET(COLONNES($A:A)<=COLONNES(zv);LIGNES($1:1)<=LIGNES(zv));INDEX(zv;LIGNES($1:1);COLONNES($A:A));"")

Le tcd prend comme source la plage DataTCD

Cordialement
 

Pièces jointes

  • essai_tcd_simplifie(4).xls
    717.5 KB · Affichages: 62

Discussions similaires

Réponses
5
Affichages
250

Statistiques des forums

Discussions
312 496
Messages
2 088 980
Membres
103 997
dernier inscrit
SET2A