Attribuer valeur à plusieurs trimestres

Bonjour,

J'aimerais établir un graphique qui résume la moyenne des devis sur les trimestres des années 2015 2016 et 2017. Cependant, il y a des devis qui sont sur plusieurs trimestres et j'aimerais attribuer une valeur à chaque trimestre correspondant correspondant. Exemple: un devis commence le 1/1/2016 et fini le 13/5/2016. Je veux alors attribuer une valeur au trimestre 1 et 2 de 2016.

Merci de votre aide.

Bonjour,

Un début de réponse à étudier.

On verra pour le graphique plus tard.

Cdlt.

14xlp-fizuaal-v1.xlsm (40.74 Ko)

Merci beaucoup!

Cependant, je ne suis pas sur de tout comprendre comment tu as fait mais c'est bien sa que je voulais.

Et la vue trimestrielle résume les sommes, hors j'aimerais des moyennes des TJM. Quand je change la valeur en moyenne il me met des chiffres totalement différent de moyennes

En tout cas merci pour ta patience et ton analyse!

Cdlt

Bonjour,

Tu pourras préciser ton calcul de moyennes ? Avec les résultats souhaités.

Je te renvoie le fichier modifié avec de nouveaux calculs.

Cdlt.

snip 20161103094814
6xlp-fizuaal-v2.xlsm (116.30 Ko)

Excuse moi mais ce que je recherche précisément c'est d'attribuer le même tjm sur plusieurs si il déborde sur plusieurs trimestre. Or je viens de voir que tes calculs font des prorata. PAR exemple un devis au tjm de 800e du 25/2/16 au 20/4/16 amènerait à : trimestre 1 2016=800 et trimestre 2 2016=800.

Desolé si je me fais mal comprendre

Bonjour,

Une proposition à tester !!!!

Bien à vous

Jp

12rgp-by-trim-v1.xlsx (33.19 Ko)

Bonjour,

j'ai l'impression que tu t'embêtes beaucoup à rendre mathématiquement faux un calcul qui serait exact sinon.

Tu augmentes artificiellement le nombre de devis, les moyennes seront forcément faussées.

Décide de les compter sur le trimestre de création et c'est tout, en plus c'est sur cette période que ça a généré du travail. De toute façon ta moyenne ne peut être qu'indicative puisque certains devis seront concrétisés et d'autres non, qu'ils soient à cheval ou pas.

eric

Re,

Tout comme Eric, je ne comprends pas tout.

J'ai tout de même modifié ma proposition en essayant de répondre à ton souhait.

Je rappelle avoir demandé un exemple de résultat...

Cdlt.

snip 20161103150730

Je rejoints nos amis Eriic et Jean-Eric,

Un moyenne sur période de validités d'un montant devis, n'a aucun sens !!!!!

Quel est l'utilité de ce KPI ?

Merci Eric c'est exactement sa que je voulais !

Ce kpi m'aidera beaucoup dans l'élaboration d'un tableau de bord sur le suivi du budget.

Désolé pour l'imprécision mais ma direction insiste sur la confidentialité. Ces devis représente une équipe du service.

En tout cas merci à tous de m'avoir aidé et trouver une solution!

Cdlt


Jean Eric je veux dire

Sa serait sympas de me dire en bref ta démarche pour créer ce tcd (formules en particulier?, ...etc.). Sa pourrait m'aider pour une prochaine fois.

Bonjour,

Peux-tu préciser ta demande ?

Cdlt.

Jean-Eric a écrit :

Bonjour,

Peux-tu préciser ta demande ?

Cdlt.

Excuse moi, oui je voulais savoir comment tu as fait Jean Eric, pour catégoriser les les dates selon leurs trimestre car je vois que tu as du créer 2 tableaux distincts mais je ne sais pas comment tu as fait!

Merci

Cdlt,

Bonjour,

Je te renvoie le classeur modifié car le précédent ne fonctionnait pas réellement.

Tu effectueras des tests.

J'ai commenté la procédure pour te permettre de comprendre la démarche. Tu me diras !

ALT F11 pour ouvrir l'éditeur VBE et voir module Feuil1 (Feuil1).

Cdlt.

Option Explicit

Private Sub cmdConsolidate_Click()
'Déclarations des variables
Dim tbl, arr()
Dim rStart As Range, rngGroup As Range
Dim I As Long, J As Long, k As Long
Dim n As Long, x As Double
Dim startDate As Date, endDate As Date
Dim q As Long
Dim startYear As Integer

    'Optimisation procédure (gel affichage)
    Application.ScreenUpdating = False
    'Tableau
    tbl = Me.ListObjects("Tableau3").DataBodyRange.Value

    With Me.ListObjects("Tableau4")
        'RAZ tableau
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        'Initialisation cellule pour copie
        Set rStart = .InsertRowRange.Cells(1)
    End With

    For I = 1 To UBound(tbl, 1)
        'Dates de départ et de fin
        startDate = CDate(tbl(I, 1)): endDate = CDate(tbl(I, 2))
        'Année de départ
        startYear = Year(startDate)
        'Trimestre de départ
        q = DatePart("q", startDate)
        'Nombre de trimestres entre la date de début et la date de fin
        n = DateDiff("q", startDate, endDate) + 1
        For J = 1 To n
            'Mois en fonction du numéro de trimestre
            x = Choose(q, 1, 4, 7, 10)
            ReDim Preserve arr(3, k + 1)
            'Date (année)
            arr(0, k) = CLng(DateAdd("q", 1 * J - 1, DateSerial(startYear, x, 1)))
            'Numéro du trimestre
            arr(1, k) = DatePart("q", arr(0, k))
            'Montant
            arr(2, k) = tbl(I, 3)
            k = k + 1
        Next J

    Next I
    'Restitution des données
    rStart.Resize(UBound(arr, 2), 3).Value = Application.Transpose(arr)

    With Me.PivotTables(1)
        'Actualisation du TCD
        .PivotCache.Refresh
        'Mise en forme TCD (groupement par trimestres)
        With .PivotFields("Année")
            .Orientation = xlColumnField
            Set rngGroup = .DataRange
            On Error Resume Next
            rngGroup.Cells(1).Group _
                    Start:=True, _
                    End:=True, _
                    Periods:=Array(False, False, False, False, False, False, True)
            'Tri
            .PivotFields("Trimestre").AutoSort xlAscending, "Trimestre"
        End With
    End With
    'Mise en forme étiquettes de lignes du TCD
    With Me.Columns(11)
        .Replace "1", "T1"
        .Replace "2", "T2"
        .Replace "3", "T3"
        .Replace "4", "T4"
    End With

    'RAZ variables
    Erase arr()
    Set rngGroup = Nothing: Set rStart = Nothing

End Sub
Private Sub cmdRaz_Click()

    Application.ScreenUpdating = False

    'RAZ tableau
    With Me.ListObjects("Tableau4")
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
    End With

    'Actualisation TCD
    Me.PivotTables(1).PivotCache.Refresh

End Sub

Merci je comprend un peu mieux!

Maintenant je n'arrive pas à changer la source des dates de devis et des calculs car sur mon doc source il y a des nouvelles entrées toutes les semaines et des modifications de dates. J'aimerais connecté celui-ci au doc que tu viens de me créer, est-ce possible?

Bonjour,

Et si tu envoyais un fichier représentatif de ta réalité ?

Cdlt.

Oui d'accord. Voilà je veux juste connecter le graphique et les tableaux qui vont ensemble avec le classeur 1. Ainsi je veux rendre les tableaux "DEVIS" et "CALCULS" du doc CM dynamique.

Oublie ma dernière demande!!

Mon plus gros soucis aujourd'hui est qu'il y ait des macros. Ma direction insiste sur le fait de ne créer aucunes macros!

Y aurait-il une alternative sans macros qui donne exactement le même résultat? Cela serait super.

Bonjour,

Tu fais tout manuellement avec un risque d'erreur important maist surtout une perte de temps non négligeable.

Maintenant si tu n'as que ça à faire !? Tu mesures le temps manuel et les risques d'erreurs encourues et la proposition avec VBA. Et tu fais un topo à ta direction...

je te renvoie cependant le fichier mis à jour (avec la correction mentionnée précédemment, et les résultats à tester.)

Pour la mise à jour, tu copies tes nouvelles données en bas du tableau, ou tu saisis manuellement. Tu peux aussi faire un RAZ, etc...

Cdlt.

15xlp-fizuaal-v4.xlsm (67.29 Ko)

Oui je suis désolé et je comprends que je ne vais pas dans la simplicité mais ma direction a refusé catégoriquement mon doc avec macros et insiste pour que le fasse sans!

C'est super compliqué sans ce fameux code macro!

Rechercher des sujets similaires à "attribuer valeur trimestres"