Filtrer données de graphique - TCD vs DECALER

Bonjour,

Dans le fichier en PJ onglet DATA, le tableau en B2:L7 présente les données sous la forme de séries en lignes, renseignées par date en colonne. Certains dates correspondent à des jours travaillés (identifiés "O" en ligne 2). A noter qu'il est possible d'avoir des jours non travaillés même si il existe des valeurs non nulles.

Mon objectif est de présenter les valeur des séries de données uniquement pour les jours travaillés dans un graphique.

Le format même des données m'empêche de faire un Graphique croisé dynamique.

C'est ce que j'ai fait dans l'onglet GCD sur la base de mon tableau qui a été inversé en B25:G35

Une des solutions consisterait donc à présenter mes données de façon inversée, sauf que les rapports des activités concernées sont historiquement présentées selon la forme du tableau B2:L7.

Je me dis néanmoins qu'il doit exister 2 solutions, mais je n'arrive pas à les maîtriser :

  • ne serait-il pas possible d'indiquer au Graphique Croisé Dynamique que la source de données doit être inversée ?
  • ne serait-il pas possible, lorsqu'une graphique est généré sur la base du tableau B2:L7 que les séries de données soient le résultat d'une formule (je pense à la fonction DECALER et/ou un calcul matriciel) qui permette d'ignorer les données correspondant aux jours non travaillés ?

Merci de vos conseils !!

AE

bonjour,

examinez la pièce jointe.

cordialement.

Bonsoir,

Une proposition VBA.

La saisie des données s'effectue dans la feuille Data.

Toute modification est intégrée au TCD et au GCD à l'activation de leur feuille.

Cdlt.

Bonjour,

Merci Jean-Eric et sakman26 pour vos réponses.

Jean-Eric,

Deux questions pour bien comprendre :

- Set lo = Me.ListObjects(1) : tu récupéres l'objet Nom "Tableau1" que tu supprimes, correct ? existe t il une méthode pour retrouver directement un objet par son nom ou faut il boucler sur la liste des objets et tester l'attribut DisplayName ?

- Tu inverses le tableau de transition 'arr' à la fin. Je me suis dit qu'il serait possible de le remplir ainsi en inversant les index le lignes et de colonnes, mais j'ai une erreur lors du second ReDim. Je n'ai pas vu de restriction concernant les redimensionnement selon les lignes ; je rate qqchose ?

    For I = 3 To UBound(tbl, 1)
        For J = 2 To UBound(tbl, 2)
            ReDim Preserve arr(k + 1, 4)
            arr(k, 0) = tbl(2, J)
            arr(k, 1) = tbl(1, J)
            arr(k, 2) = tbl(I, 1)
            arr(k, 3) = tbl(I, J)
            k = k + 1
        Next J
    Next I

    Set lo = Me.ListObjects(1)
    With lo
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        Set rCell = .InsertRowRange.Cells(1)
    End With

    rCell.Resize(UBound(arr, 2), 4).Value = arr

sakman26

J'avoue ne pas comprendre les formules et les calculs intermédiaires donnés dans le gestionnaire de noms.

Peux-tu me donner quelques explications ?

A tous,

Question en apparté : étant donné qu'avec un tableau inversé je pourrais traiter directement mes données, ne serait-il pas possible de créer une fonction personnelle d'inversion de tableau qui puisse être appelée au moment de la définition des données sources d'un tableau croisé dynamique ?

Merci à vous,

AE

Rechercher des sujets similaires à "filtrer donnees graphique tcd decaler"