Eclatement par année de survenance

Bonjour à tous,

je cherche depuis un moment une solution mais je n'y arrive pas .....

J'ai une liste de factures dont le montant impacte plusieurs années. J'aimerai que ces lignes soit dupliqué par année et proratisé.

Ex : 1 facture de 1000€ pour une prestation du 01/07/2009 au 30/06/2011

Résultat souhaité :

1 facture de 1000€ dont 2009 = 250€

1 facture de 1000€ dont 2010 = 500€

1 facture de 1000€ dont 2011 = 250€

Je joint un fichier qui est plus explicatif

Merci de votre aide

Bonjour,

on pourrait imaginer une liste déroulante des "Locataires"

Amicalement

Claude

12kikekoi-formule.zip (16.10 Ko)

Merci Claude,

Je souhaitais une formule ou macro qui donne l'inverse . C'est à dire partir des 2 lignes de factures et recréer 6 lignes selon les années pleine de survenance (du 01/01/N au 31/12/N)

Actuel

Locataire = A 1000€ 01/07/2009 au 31/06/2011

Résultat souhaité

Locataire = A 250€ 01/07/2009 au 31/12/2009

Locataire = A 500€ 01/01/2010 au 31/12/2010

Locataire = A 250€ 01/01/2011 au 31/06/2011

C'est un peu compliqué pour moi

Merci beaucoup

-- 02 Fév 2011, 17:09 --

oups 31/06/2011 n'existe pas !!! Il fallait lire 30/06/2011

re,

Je ne vois pas, désolé !

Claude

Merci Claude !

Je réessaie avec un détail avec le nombre de jours

Actuel

Locataire = A 1000€ 01/07/2009 au 30/06/2011 = (730 jours)

Résultat souhaité

Locataire = A 252€ 01/07/2009 au 31/12/2009 = (184 jours)

Locataire = A 500€ 01/01/2010 au 31/12/2010 = (365 jours)

Locataire = A 248€ 01/01/2011 au 30/06/2011 = (181 jours)

Bonjour à tous,

Je ne sais pas faire en formule, mais çà doit être possible,

en attendant voici une solution VBA

Sub Décompose()
Dim Lg%, A%, i%, Jours%, Ans%, D1&, D2&
'Macro par Claude Dubois pour "kikekoi" Excel-Pratique le 04/02/11
        Application.ScreenUpdating = False
        Range("a13:j200").ClearContents
    For A = 4 To Range("b11").End(xlUp).Row
            D1 = Cells(A, "h")                                  'date début
            D2 = Cells(A, "i")                                  'date fin
            Jours = D2 - D1                                     'période
            Ans = Application.Ceiling(Jours / 365.25, 1) + 1    'plafond années
        For i = 1 To Ans
            Lg = Range("a65000").End(xlUp)(2).Row
            Range(Cells(A, "a"), Cells(A, "f")).Copy Destination:=Range("a" & Lg)
                Cells(Lg, "i") = "=DATE(YEAR(h" & Lg & "),12,31)"
            If i = 1 Then
                Cells(Lg, "h") = D1
                Cells(Lg, "j") = "=DATE(YEAR(h" & Lg & "),12,31)-h" & Lg
                Cells(Lg, "g") = Cells(A, "g") * Cells(Lg, "j") / Jours
            Else
                Cells(Lg, "h") = Cells(Lg - 1, "i") + 1
                Cells(Lg, "j") = Cells(Lg, "i") - Cells(Lg, "h") + 1
                Cells(Lg, "g") = Cells(A, "g") * Cells(Lg, "j") / Jours
            End If

            If i = Ans Then
                Cells(Lg, "i") = D2
                Cells(Lg, "j") = "=RC[-1]-(DATE(YEAR(RC[-1]),1,1)-1)"
                Cells(Lg, "g") = Cells(A, "g") * Cells(Lg, "j") / Jours
            End If
        Next i
    Next A
    Columns("j").ClearContents
End Sub

Amicalement

Claude

édit du 04/02/11 12:30 :

code et fichier modifiés

Bonjour à tous,

Pas de suivi ?

çà valait pour le moins une réponse, tant pis !

Claude

Rechercher des sujets similaires à "eclatement annee survenance"