Cumul TCD à partir d'une valeur

Bonjour à tous,

Je viens vers vous car j'ai un problème - que je ne sais pas résoudre. Je m'explique :

J'ai un TCD avec des montants par semaine, que j'affiche ensuite en graphique, par résultat cumulé par semaines. Jusque là aucun soucis. Simplement, mes graphiques doivent s'afficher sur 3 plages différentes, sem 1 à 18, sem 16 à 38 et sem 36 à 54. Pour cela rien de plus simple, j'utilise des macros et des slicers, aucun soucis.

Mon problème est donc que, en cumulé par semaine, si par exemple j'affiche de la semaine 16 à 38, le graphique commence à la valeur de la semaine 16, et non pas à (valeur semaine 1 à 15) + valeur semaine 16.

Dans mon exemple, le montant à la semaine 16 est 80€, et le graphique en cumulé commence à ce 80€ et non pas à 680€ ((cumulé des semaines 1 à 15) + 16)

Je cherche donc comment faire pour le cumul prenne en compte mes semaines d'avant, même si je commence de la semaine 16 ou 36.

Merci par avance,

NT.

8test-cumul.xlsm (46.28 Ko)

Bonjour,

Une alternative sans passer par TCD qui me semble conserver le contexte de filtre lors de ses calculs. De plus ici il n'y a pas de doublons de semaines. Avec une colonne cumul ajouté puis un simple filtre de la BDD :

Sub L_1_18()
ActiveSheet.ListObjects("BDD").Range.AutoFilter Field:=1, Criteria1:=">=1", Operator:=xlAnd, Criteria2:="<=18"
End Sub

Sub L_16_38()
ActiveSheet.ListObjects("BDD").Range.AutoFilter Field:=1, Criteria1:=">=16", Operator:=xlAnd, Criteria2:="<=38"
End Sub

Sub L_36_54()
ActiveSheet.ListObjects("BDD").Range.AutoFilter Field:=1, Criteria1:=">=36", Operator:=xlAnd, Criteria2:="<=54"
End Sub

Sub RAZ()
ActiveSheet.ListObjects("BDD").AutoFilter.ShowAllData
End Sub

Et le fichier qui va avec.

Il serait également possible dans un second temps d'avoir un USF ou une validation des données afin de laisser libre court sur le choix de la période de filtre.

Cdlt,

Bonjour Ergotamine !

Merci pour votre réponse rapide. En effet cela fonctionnerait, mais malheureusement, le TCD est obligatoire. L'exemple que j'ai donné n'était qu'un petit extrait. En réalité c'est toute la production d'une entreprise qui est gérée par ce tableau, donc m'en passer ne me parait pas envisageable.

J'ai réussi à "refabriquer" le même cas de figure, en me servant de groupement, mais je suis contraint de passer par des "dégroupements", car je ne sais pas dans quel ordre l'opérateur va utiliser les macros. Une fois la plage de semaines choisies, avant de pouvoir en consulter une autre, il faut avant tout utiliser les boutons "retour" associé à la plage... Mais ça reste peu pratique, ou alors il faudrait une sécurité du style : "ne pas pouvoir sélectionner une autre plage tant que le bouton retour n'a pas été utilisé".

Je me permets de joindre le fichier de nouveau, et si possible, pourriez-vous y jeter un œil pour avoir votre avis ?

2test-cumul.xlsm (51.18 Ko)

Merci pour votre aide, votre temps et votre réponse,

NT.

Bonjour,

Normalement le groupement permet de créer une hiérarchie de date, mais bon pourquoi pas pour cet usage détourné si ça vous convient. Pour éviter les boutons retour et toute fausse manipulation il faut RaZ le TCD en début de macro de filtrage/groupage > dégrouper et défiltrer. Je n'ai pas l'habitude de manipuler les TCD via VBA mais un test surement optimisable dans une seule et même procédure :

Sub Sem16a38()
On Error Resume Next
Application.ScreenUpdating = False
Application.Calculation = xlManual
ActiveSheet.PivotTables("ANALYSE").PivotFields("Semaine2").DataRange.Ungroup
ActiveSheet.PivotTables("ANALYSE").ClearAllFilters
[D2:D16].Group
With ActiveWorkbook.SlicerCaches("Segment_Semaine")
    For i = 1 To 54
        If i >= 1 And i <= 38 Then
            .SlicerItems(i).Selected = True
            Else
            .SlicerItems(i).Selected = False
        End If
    Next i
End With
ActiveSheet.PivotTables("ANALYSE").PivotFields("Semaine").Orientation = xlHidden
ActiveSheet.PivotTables("ANALYSE").PivotFields("Somme de Montant").Calculation = xlRunningTotal
ActiveSheet.PivotTables("ANALYSE").PivotFields("Somme de Montant").BaseField = "Semaine2"
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub

Sub Sem36a54()
On Error Resume Next
Application.ScreenUpdating = False
Application.Calculation = xlManual
ActiveSheet.PivotTables("ANALYSE").PivotFields("Semaine2").DataRange.Ungroup
ActiveSheet.PivotTables("ANALYSE").ClearAllFilters
[D2:D36].Group
With ActiveWorkbook.SlicerCaches("Segment_Semaine")
    For i = 1 To 54
        If i >= 1 And i <= 54 Then
            .SlicerItems(i).Selected = True
            Else
            .SlicerItems(i).Selected = False
        End If
    Next i
End With
ActiveSheet.PivotTables("ANALYSE").PivotFields("Semaine").Orientation = xlHidden
ActiveSheet.PivotTables("ANALYSE").PivotFields("Somme de Montant").Calculation = xlRunningTotal
ActiveSheet.PivotTables("ANALYSE").PivotFields("Somme de Montant").BaseField = "Semaine2"
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub

Sub Sem1a18()
On Error Resume Next
Application.ScreenUpdating = False
Application.Calculation = xlManual
ActiveSheet.PivotTables("ANALYSE").PivotFields("Semaine2").DataRange.Ungroup
ActiveSheet.PivotTables("ANALYSE").ClearAllFilters
With ActiveWorkbook.SlicerCaches("Segment_Semaine")
    For i = 1 To 54
        If i >= 1 And i <= 18 Then
            .SlicerItems(i).Selected = True
            Else
            .SlicerItems(i).Selected = False
        End If
    Next i
End With
End Sub

Et le fichier qui va avec (j'ai renommé le TCD en ANALYSE).

Cdlt,

25test-cumul-1.xlsm (51.43 Ko)

PS : Pensez à POWER BI qui permet de faire de l'analyse de donnée plus poussée.

Merci encore une fois pour l'attention que vous portez à ce sujet.

En effet, je comprends bien que cet artifice n'est qu'une illusion, mais je ne vois pas vraiment comment faire autrement.

Oui en effet, c'est plutôt cette idée que j'avais en tête, mais étant encore uniquement "débutant" en VBA, l'adapter en code est loin au dessus de mes capacités. Cependant, je constate avec émerveillement que votre solution correspond à mes attentes. Je ne suis pas encore dans l'optimisation, et pouvoir proposer un produit qui fonctionne est déjà un grand pas !

Merci pour votre aide, et la solution apportée.

NT.

PS : je ne connaissais pas Power BI, mais je vais m'y intéresser !

Rechercher des sujets similaires à "cumul tcd partir valeur"