Calcul prorata prix date milieu de mois
Bonjour à tous
En colonne A et B j'ai des période... exemple : du 01/01/2019 au 21/03/2019
En colonne C j'ai des prix qui correspondent à chacune des périodes.
Exemple :
Du 01/01/2019 au 21/03/2019 le prix est à 1,2940 €
Du 22/03/2019 au 16/05/2019 le prix est à 2,9480 €
etc ..
Jusque là, tout va bien.
En colonne E et F j'ai ma période mensuelle comptable de 2019
Du 01/01/2019 au 31/01/2019
Du 01/02/2019 au 28/02/2019
Du 01/03/2019 au 31/03/2019
etc...
Sachant qu'en colonne G ma quantité d'achat est de 1000 pour chaque mois.
Je voudrais proratisé la quantité selon le prix de la colonne C par rapport aux dates qu'il y a en A et B.
Je vous laisse mon fichier excel cette fois ci.
Merci de votre réponse.
Bonjour ngynvn,
Sachant qu'en colonne G ma quantité d'achat est de 1000 pour chaque mois.
A quelle date effectuez vous les achats, avant ou après le changement de tarif?
Sont-ils répartis par semaines, 50 par jour ouvrable???
Bonjour,
Pas de répartition particulier, je vous explique plus concrètement
Du 01/01/2019 au 31/01/2019 : 1000 à 1,2940
Du 01/02/2019 au 28/02/2019 : 1000 à 1,2940
Du 01/03/2019 au 31/03/2019 : 1000 à 1,2940 du 01/03/2019 au 21/03/2019 + 1000 à 2,9480 Du 22/03/2019 au 31/03/2019 (changement de prix à partir du 22) << je cherche une formule pour imbiquer ce calcul sur toutes les dates
Du 01/04/2019 au 31/04/2019 : 1000 à 2,9480
Du 01/05/2019 au 30/05/2019 : 1000 à 2,9480 du 01/05/2019 au 16/05/2019 + 1000 à 2,4940 Du 17/05/2019 au 30/05/2019 (changement de prix à partir du 17) << << idem je cherche la formule pour imbiquer ce calcul sur toutes les dates
Voilà, j'espère que c'est plus clair.
Merci beaucoup
Bonjour,
Une proposition VBA et TCD (Tableau croisé dynamique).
On crée un tableau intermédiaire pour consolider les données.
Cdlt.
Option Explicit
Dim TD As Range
Dim PT As PivotTable
Public Sub AggregatData()
'Déclaration des variables
Dim tbl As Variant, arr() As Variant
Dim rngGroup As Range
Dim nDays As Double
Dim I As Long, J As Long, k As Long
Const QTY = 1000
Application.ScreenUpdating = False
'Initialisation des variables
Set TD = Range("Input")
tbl = TD.Value
'Création tableau intermédiare
For I = 1 To UBound(tbl)
For J = tbl(I, 1) To tbl(I, 2)
nDays = Day(WorksheetFunction.EoMonth(J, 0))
ReDim Preserve arr(3, k + 1)
arr(0, k) = CLng(J)
arr(1, k) = QTY / nDays
arr(2, k) = QTY / nDays * tbl(I, 3)
k = k + 1
Next J
Next I
'Restitution des données et mise à jour TCD
Set TD = Range("Output")
If Not TD.ListObject.DataBodyRange Is Nothing Then TD.ListObject.DataBodyRange.Delete
TD.Cells(1, 1).Resize(k, 3).Value = Application.Transpose(arr)
Set PT = ActiveSheet.PivotTables(1)
With PT
.PivotCache.Refresh
On Error Resume Next
.AddFields RowFields:="Date"
Set rngGroup = .PivotFields("Date").DataRange
rngGroup.Cells(1).Group _
Start:=True, _
End:=True, _
Periods:=Array(False, False, False, False, True, False, False)
End With
Set TD = Nothing: Set PT = Nothing
End Sub
Public Sub ResetData()
Application.ScreenUpdating = False
Set TD = Range("Output")
If Not TD.ListObject.DataBodyRange Is Nothing Then TD.ListObject.DataBodyRange.Delete
Set PT = ActiveSheet.PivotTables(1)
PT.PivotCache.Refresh
Set TD = Nothing: Set PT = Nothing
End Sub
Bonjour,
Merci pour la réponse.
Cependant j'aurais aimé éviter les VBA et les TCD et utiliser uniquement les formules
Merci.