TCD avec filtre chronologique VBA - erreur

Bonjour le forum,

J'ai une macro pour créer des TCD sur plusieurs onglets...la macro fonctionne super bien....

Par contre j'ai essayé via l'enregistreur de macro d'y ajouter une filtre chronologique....tout se passe bien pour le 1er onglet, par contre pour le deuxième, j'ai une erreur d’exécution 5 : Argument ou appel de procédure incorrect.....

Pourriez-vous m'aider ?

Merci d'avance

Oli

8tdc-chrono.xlsm (46.00 Ko)

Bonjour,

C'est toi à l'origine du module de classe ?

Cdlt.

Bonjour Jean-Eric,

Non, je ne suis pas à l'origine du modèle de classe, il provient du site developpez.com, l'auteur est Rdurupt.....c'est une macro qui date de + ou - 3 ans....

Oli

Bonjour,

Une proposition de ce que j'ai compris pour la construction des TCDs et des chronologies.

Cdlt.

12tdc-chrono.xlsm (43.59 Ko)
Option Explicit

Public Sub CreatePTs()
Dim wb As Workbook
Dim ws As Worksheet, wsPT As Worksheet
Dim T() As String
Dim rngData As Range
Dim PTCache As PivotCache, PT As PivotTable
Dim SLCache As SlicerCache, SL As Slicer
Dim N As Long, i As Long

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set wb = ActiveWorkbook
    For Each ws In wb.Worksheets
        If Left(ws.Name, 3) = "TCD" Then ws.Delete
    Next ws
    Application.DisplayAlerts = False
    N = wb.Worksheets.Count
    ReDim T(1 To N)
    For i = 1 To N
        T(i) = wb.Worksheets(i).Name
    Next i
    For i = 1 To UBound(T)
        Set rngData = wb.Worksheets(T(i)).Cells(1).CurrentRegion
        Set PTCache = wb.PivotCaches.Create(xlDatabase, rngData)
        Set wsPT = wb.Worksheets.Add(after:=wb.Worksheets(Worksheets.Count))
        wsPT.Name = "TCD_" & T(i)
        Set PT = PTCache.CreatePivotTable(wsPT.Cells(4, 1), wsPT.Name)
        With PT
            .AddFields RowFields:="Domaine", PageFields:="Degr?"
            With .PivotFields("Cours")
                .Orientation = xlDataField
                .Function = xlCount
                .Caption = "Nb Cours"
            End With
            .RowAxisLayout xlTabularRow
            .TableStyle2 = "PivotStyleLight16"
        End With
        Set SLCache = wb.SlicerCaches.Add2(PT, "Date", , xlTimeline)
        Set SL = SLCache.Slicers.Add(wsPT, , "Date" & i, "Date", Cells(2, 4).Top, Cells(2, 4).Left)
        wsPT.Cells(1).Select
        ActiveWindow.DisplayGridlines = False
    Next i
End Sub

Bonjour Jean-Eric,

Grand merci, cela fonctionne nickel...

J'ai une petite question: le timeline entre deux dates c'est possible...et d'avoir le total distinct en permanence....

Merci

Excellente journée

Oli

Bonjour,

Je répondrai non à priori, mais tu devrais préciser ta question.

Cdlt.

Jean-Eric,

La chronologie entre deux dates....je sais qu'on peut le faire avec le timeline

Par contre le total distinct, je viens d'éplucher quelques pages internet mais rien de concret...ou il faut faire une formule et l'attribuer à la fonction...?

Oli

re,

j'ai essayer avec function = xlDistinctCount

j'ai une erreur impossible de définir la propriété fonction de la classe pivotfield...

Oli

Re,

Donne un exemple concret de ce que tu souhaites faire, dans un fichier !...

Cdlt.

re,

Voici un exemple de ce que je désire

en feuille 1 : les données

en feuille 2 : les tcd avec totaldistinct et les chronologies

à remettre dans le premier fichier avec les onglets, vu que je scinde les domaines

Oli

4totaldistinct.xlsx (187.06 Ko)

Bonjour Jean-Eric,

Bonjour le forum

Tout d'abord, meilleurs vœux pour l’année 2020.....

Je viens un peu au nouvelle, voir si tu as pu regarder pour ma dernière demande...

Merci

Oli

Bonsoir Jean-Eric,

Je reviens vers toi...as tu eu le temps de regarder pour mon cas....

Merci

Bonne Soirée...

OLi

Bonjour,

Créer des TCds classiques à la volée, y ajouter des chronologies, okay pour l'exemple.

Dans la réalité quel est le besoin ?

Vouloir y traiter les distincts ? et multiplier par 2 ?

Ce ne sont plus les mêmes TCds. On doit utiliser Power Pivot et la programmation est différente (et plus contraignante).

Pourquoi ne pas intégrer ces calculs dans les données source ?

Sinon, je ne comprends pas la chronologie entre 2 dates de naissance !? Pourquoi ne pas travailler sur les âges ?

De plus, je viens de constater que tu travailles avec Excel 2019. Tu disposes donc de Récupérer et transformer (Power Query) pour traiter tes demandes et te passer de VBA.

Cdlt.

Bonsoir Jean-Eric,

En fait c'est pour un travail de statistique, en fait la liste de base contient des des doublons car un élève peut suivre plusieurs cours dans un même domaine, d'ou le calcul distinc.(ils sont multipliés par deux parce j'ai deux deux domaines, je dois insérer l'ensemble des données dans un tableau , d'ou une cellule par résultat.

On peut travailler avec les âges aussi mais mon tableau statistique travaille entre date de naissance et change chaque année...+1

A mon privé, je suis bien sous excel 2019 mais au boulot, je suis sous excel 2010...c'est pour cela qu'il fallait une solution en vba...

OLi

Bonjour Jean-Eric,

Je me tourne vers toi( car tu étais l'auteur du code pour mon projet), j'ai su ajouter les dates pour la chronologies... mais j'aimerais changer le xlCount en xlDistinctCount et lors de ce changement j'ai un message d'erreur du type impossible de définir la propriété fonction de la classe pivotfield...

Peux-tu me dire pourquoi ? et peut-être faire une petite correction ?

Je t'en remercie par avance

OLi

2tdc-chrono.xlsm (67.62 Ko)

Bonjour,

Voir fichier joint, pour la construction du TCD OLAP en VBA.

Cdlt.

11tdc-chrono.xlsm (42.26 Ko)

Bonsoir Jean-Eric,

Merci pour ta rapidité,

J'ai une erreur sur la ligne suivante :

Set SLCache = wb.SlicerCaches.Add2(PT, "[Range].[Date]", , xlTimeline)

argument ou appel de procédure incorrect.

OLi

Re,

Je n'ai aucune erreur de mon côté.

Cdlt.

9tdc-chrono.zip (134.22 Ko)

Bonsoir Jean-Eric,

J'ai testé le fichier sur deux PC , un avec Excel 2016 et l'autre Excel 2019, j'obtiens la même erreur : argument ou appel de procédure incorrect.

Set SLCache = wb.SlicerCaches.Add2(PT, "[Range].[Date]", , xlTimeline)

je viens aussi de voir que dans ton fichier les créations des tcd se font sur des feuilles nommées en anglais (sheet), alors que mes feuilles à moi (feuil)

Le problème de vient-il pas de la langue ?

OLi

Bonsoir le forum,

Bonjour Jean-Eric,

J'ai toujours ce problème d'erreur et j'arrive pas à en trouver la cause...

Si quelqu'un pouvait regarder ...

Je vous en remercie d'avance

OLi

Rechercher des sujets similaires à "tcd filtre chronologique vba erreur"