Enregistrer la valeur d'une cellule d'un TCD a plusieurs dates données

Bonjour à tous !

J'aurais besoin de votre aide pour un problème a priori simple.

Je souhaiterais prendre la valeur contenue dans un cellule à des dates différentes et donc enregistrer l'évolution de cette valeur dans le temps.

Pour l'instant, j'utilise la formule suivante : =SI(AUJOURDHUI()=A353;LIREDONNEESTABCROISDYNAMIQUE("Clé";$F$353;"Stream";"INDUS");"") ou A353 est la date contenu dans la première colonne (ici 30/12/2020)

Seulement dès que la date est passée, la valeur de la date précédente est effacée, ce qui est logique au vue de la formule. Mais je ne trouve pas d'autres solutions.

Mon besoin serait donc de figer une valeur, une fois que celle-ci a été calculée.

DaterésoluouvertAge Moyen
29/12/2020
30/12/2020211612
31/12/2020
01/01/2021
02/01/2021
03/01/2021

Merci d'avance pour votre aide !

Bonjour à tous !

J'ai résolu mon problème en passant par du code VBA. Je ne pense pas qu'il y ai de possibilité pour enregistrer une valeur au cours du temps juste avec des formules

Je colle le code ci-dessous si jamais ca peut servir à quelqu'un. Précision je suis débutant en VBA, je ne pense pas que le code soit optimisé

J'ai par exemple crée plusieurs variables par tableau, il y a certainement mieux à faire

Le but de ce code est donc de prendre des données provenant de TCD et de les copier dans un tableau avec des dates pour avoir l'historique de la valeur au cours du temps. l'opération a été réalisé sur plusieurs onglets

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dim x As Integer, i As Integer, f As Integer, a As Integer, p As Integer, o As Integer
Dim Pvt As PivotTable, Pvt1 As PivotTable, Pvt2 As PivotTable
Dim Fin As PivotTable, Fin1 As PivotTable, Fin2 As PivotTable
Dim ach As PivotTable, ach1 As PivotTable, ach2 As PivotTable
Dim pmd As PivotTable, pmd1 As PivotTable, pmd2 As PivotTable
Dim om As PivotTable, om1 As PivotTable, om2 As PivotTable
Dim intl As PivotTable, intl1 As PivotTable, intl2 As PivotTable
Dim resolu As Integer, encours As Integer, agemoyen As Integer
Dim resolu1 As Integer, encours1 As Integer, agemoyen1 As Integer
Dim resolu2 As Integer, encours2 As Integer, agemoyen2 As Integer
Dim resolu3 As Integer, encours3 As Integer, agemoyen3 As Integer
Dim resolu4 As Integer, encours4 As Integer, agemoyen4 As Integer
Dim resolu5 As Integer, encours5 As Integer, agemoyen5 As Integer
Dim resolu6 As Integer, encours6 As Integer, agemoyen6 As Integer

Set Pvt = Worksheets("INDUS").PivotTables("indus")
resolu1 = Pvt.GetData("'Total général' 'INDUS'")
Set Pvt1 = Worksheets("INDUS").PivotTables("indus1")
encours1 = Pvt1.GetData("'Total général' 'INDUS'")
Set Pvt2 = Worksheets("INDUS").PivotTables("indus2")
agemoyen1 = Pvt2.GetData("'Moyenne de Age ticket' 'Total général'")
Set Fin = Worksheets("FINANCE").PivotTables("Finance1")
resolu2 = Fin.GetData("'Total général' 'FINANCE'")
Set Fin1 = Worksheets("FINANCE").PivotTables("Finance2")
encours2 = Fin1.GetData("'Total général' 'FINANCE'")
Set Fin2 = Worksheets("FINANCE").PivotTables("Finance3")
agemoyen2 = Fin2.GetData("'Moyenne de Age ticket' 'Total général'")
Set ach = Worksheets("ACHAT").PivotTables("achat1")
resolu3 = ach.GetData("'Total général' 'ACHAT'")
Set ach1 = Worksheets("ACHAT").PivotTables("achat2")
encours3 = ach1.GetData("'Total général' 'ACHAT'")
Set ach2 = Worksheets("ACHAT").PivotTables("achat3")
agemoyen3 = ach2.GetData("'Moyenne de Age ticket' 'Total général'")
Set pmd = Worksheets("PMD").PivotTables("pmd01")
resolu4 = pmd.GetData("'Total général' 'PMD'")
Set pmd1 = Worksheets("PMD").PivotTables("pmd02")
encours4 = pmd1.GetData("'Total général' 'PMD'")
Set pmd2 = Worksheets("PMD").PivotTables("pmd03")
agemoyen4 = pmd2.GetData("'Moyenne de Age ticket' 'Total général'")
Set om = Worksheets("OM").PivotTables("om1")
resolu5 = om.GetData("'Total général' 'OM'")
Set om1 = Worksheets("OM").PivotTables("om2")
encours5 = om1.GetData("'Total général' 'OM'")
Set om2 = Worksheets("OM").PivotTables("om3")
agemoyen5 = om2.GetData("'Moyenne de Age ticket' 'Total général'")
Set intl = Worksheets("INTL").PivotTables("intl0")
resolu6 = intl.GetData("'Total général' 'INTER'")
Set intl1 = Worksheets("INTL").PivotTables("intl01")
encours6 = intl1.GetData("'Total général' 'INTER'")
Set intl2 = Worksheets("INTL").PivotTables("intl02")
agemoyen6 = intl2.GetData("'Moyenne de Age ticket' 'Total général'")

resolu = Sheets("Avancement_Global").Range("AL15").Value
encours = Sheets("Avancement_Global").Range("AJ15").Value + Sheets("Avancement_Global").Range("AK15").Value
agemoyen = Sheets("Avancement_Global").Range("D77").Value
i = 351
f = 141
a = 62
p = 38
o = 56
it = 56

For x = 28 To 80

If Sheets("Avancement_Global").Range("H" & x).Value = Date And Sheets("Avancement_Global").Range("J" & x).Value = "" Then Sheets("Avancement_Global").Range("J" & x).Value = resolu
If Sheets("Avancement_Global").Range("H" & x).Value = Date And Sheets("Avancement_Global").Range("K" & x).Value = "" Then Sheets("Avancement_Global").Range("K" & x).Value = encours
If Sheets("Avancement_Global").Range("H" & x).Value = Date And Sheets("Avancement_Global").Range("I" & x).Value = "" Then Sheets("Avancement_Global").Range("I" & x).Value = agemoyen

i = i + 1

If Sheets("INDUS").Range("A" & i).Value = Date And Sheets("INDUS").Range("B" & i).Value = "" Then Sheets("INDUS").Range("B" & i).Value = resolu1
If Sheets("INDUS").Range("A" & i).Value = Date And Sheets("INDUS").Range("C" & i).Value = "" Then Sheets("INDUS").Range("C" & i).Value = encours1
If Sheets("INDUS").Range("A" & i).Value = Date And Sheets("INDUS").Range("D" & i).Value = "" Then Sheets("INDUS").Range("D" & i).Value = agemoyen1

f = f + 1

If Sheets("FINANCE").Range("A" & f).Value = Date And Sheets("FINANCE").Range("B" & f).Value = "" Then Sheets("FINANCE").Range("B" & f).Value = resolu2
If Sheets("FINANCE").Range("A" & f).Value = Date And Sheets("FINANCE").Range("C" & f).Value = "" Then Sheets("FINANCE").Range("C" & f).Value = encours2
If Sheets("FINANCE").Range("A" & f).Value = Date And Sheets("FINANCE").Range("D" & f).Value = "" Then Sheets("FINANCE").Range("D" & f).Value = agemoyen2

a = a + 1

If Sheets("ACHAT").Range("A" & a).Value = Date And Sheets("ACHAT").Range("B" & a).Value = "" Then Sheets("ACHAT").Range("B" & a).Value = resolu3
If Sheets("ACHAT").Range("A" & a).Value = Date And Sheets("ACHAT").Range("C" & a).Value = "" Then Sheets("ACHAT").Range("C" & a).Value = encours3
If Sheets("ACHAT").Range("A" & a).Value = Date And Sheets("ACHAT").Range("D" & a).Value = "" Then Sheets("ACHAT").Range("D" & a).Value = agemoyen3

p = p + 1

If Sheets("PMD").Range("A" & p).Value = Date And Sheets("PMD").Range("B" & p).Value = "" Then Sheets("PMD").Range("B" & p).Value = resolu4
If Sheets("PMD").Range("A" & p).Value = Date And Sheets("PMD").Range("C" & p).Value = "" Then Sheets("PMD").Range("C" & p).Value = encours4
If Sheets("PMD").Range("A" & p).Value = Date And Sheets("PMD").Range("D" & p).Value = "" Then Sheets("PMD").Range("D" & p).Value = agemoyen4

o = o + 1

If Sheets("OM").Range("A" & o).Value = Date And Sheets("OM").Range("B" & o).Value = "" Then Sheets("OM").Range("B" & o).Value = resolu5
If Sheets("OM").Range("A" & o).Value = Date And Sheets("OM").Range("C" & o).Value = "" Then Sheets("OM").Range("C" & o).Value = encours5
If Sheets("OM").Range("A" & o).Value = Date And Sheets("OM").Range("D" & o).Value = "" Then Sheets("OM").Range("D" & o).Value = agemoyen5

it = it + 1

If Sheets("INTL").Range("A" & it).Value = Date And Sheets("INTL").Range("B" & it).Value = "" Then Sheets("INTL").Range("B" & it).Value = resolu6
If Sheets("INTL").Range("A" & it).Value = Date And Sheets("INTL").Range("C" & it).Value = "" Then Sheets("INTL").Range("C" & it).Value = encours6
If Sheets("INTL").Range("A" & it).Value = Date And Sheets("INTL").Range("D" & it).Value = "" Then Sheets("INTL").Range("D" & it).Value = agemoyen6

Next

End Sub
Rechercher des sujets similaires à "enregistrer valeur tcd dates donnees"