diff --git a/models/acc_enedis_cdc.py b/models/acc_enedis_cdc.py
index d5f15c5a668f92b336782dc2a969c1de16965546..6d401019e69b800627acc89adb4b5a93a956c050 100644
--- a/models/acc_enedis_cdc.py
+++ b/models/acc_enedis_cdc.py
@@ -72,7 +72,11 @@ class AccEnedisCdc(models.Model):
 
         batch_name = f"{operation.name} curves"
         queue_batch = self.env["queue.job.batch"].get_new_batch(
-            batch_name, acc_operation_id=operation.id, batch_type="monthly_curves"
+            batch_name,
+            acc_operation_id=operation.id,
+            batch_type="monthly_curves",
+            start_date=start_date,
+            end_date=end_date,
         )
 
         # Si pas de PRM sélectionnés
@@ -217,8 +221,6 @@ class AccEnedisCdc(models.Model):
             + str(fields.Datetime.now())
             + "</h1>"
         )
-        if not operation.is_cdc_data_exists:
-            operation.is_cdc_data_exists = True
         # Logs information
         self.env["acc.logs"].create(
             {
@@ -294,19 +296,6 @@ class AccEnedisCdc(models.Model):
                             "timestep": timestep,
                         }
                     )
-                # Update partner_id for retrieved cdc
-                domain = [
-                    ("acc_operation_id", "=", operation.id),
-                    ("acc_counter_id", "=", usage_point_id.id or False),
-                    (
-                        "prm_type",
-                        "=",
-                        "delivery" if type_prm == "cons" else "injection",
-                    ),
-                ]
-                self.env["acc.counter.period"]._get_periods_from_interval(
-                    domain, start_date, end_date
-                )._update_cdc_partner_id()
             message += "Fin du traitement des données\n"
         else:
             message += (
diff --git a/models/acc_operation.py b/models/acc_operation.py
index 10f6664e2a494ab34bce7bff5f65788a4a515aec..f310e1555aef54966961ee5ec73150dc1985693b 100644
--- a/models/acc_operation.py
+++ b/models/acc_operation.py
@@ -2,7 +2,6 @@
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
 
 from odoo import fields, models
-from odoo.osv import expression
 from odoo.tools import date_utils
 
 from odoo.addons.api_connector.tools.date_utils import local_to_utc
@@ -38,7 +37,6 @@ class AccOperation(models.Model):
     # ------------------------------------------------------
     # Actions
     # ------------------------------------------------------
-
     def _get_monthly_enedis_data(self, from_cron):
         """
         Overrides function from oacc_perimeter_api to request curves for last month
@@ -51,7 +49,6 @@ class AccOperation(models.Model):
         # end_date is excluded so it should be first day of next month
         end_date = end_month + date_utils.relativedelta(days=1)
 
-
         super()._get_monthly_enedis_data(from_cron)
 
         if from_cron:
@@ -64,23 +61,19 @@ class AccOperation(models.Model):
             from_cron=from_cron,
         )
 
-
     def _remove_cdc(self, start_date, end_date):
         """
-        remove cdc for current month
+        remove existing cdc between given dates
         """
-        domain_base = [
-            ("acc_operation_id", "in", self.ids),
-        ]
         start_datetime = local_to_utc(start_date, "Europe/Paris")
         end_datetime = local_to_utc(end_date, "Europe/Paris")
-        domain_date = [
+        domain = [
+            ("acc_operation_id", "in", self.ids),
             ("date_slot", ">=", start_datetime),
             ("date_slot", "<", end_datetime),
         ]
-        domain_cdc = expression.AND([domain_base, domain_date])
 
-        rec_ids = self.env["acc.enedis.cdc"].search(domain_cdc)
+        rec_ids = self.env["acc.enedis.cdc"].search(domain)
         if rec_ids:
             rec_ids.unlink()
 
diff --git a/models/queue_job_batch.py b/models/queue_job_batch.py
index 92c2cb0a951b74b17417eeb13c7a9aa9e25e8bd1..f62f309f17ec6a49328377958deb5aa492caa69a 100644
--- a/models/queue_job_batch.py
+++ b/models/queue_job_batch.py
@@ -5,16 +5,41 @@ class QueueJobBatch(models.Model):
     _inherit = ["queue.job.batch"]
 
     acc_operation_id = fields.Many2one("acc.operation", string="Opération liée")
-
     batch_type = fields.Selection(
         [("monthly_curves", "Récupération automatique des courbes")]
     )
+    start_date = fields.Date("Date de début des données")
+    end_date = fields.Date("Date de fin des données (exclue)")
 
     def write(self, vals):
-        super().write(vals)
+        res = super().write(vals)
         if self.acc_operation_id and self.state == "finished":
             self.post_finished_action()
+        return res
 
     def post_finished_action(self):
         if self.acc_operation_id and self.batch_type == "monthly_curves":
+            if (
+                not self.acc_operation_id.is_cdc_data_exists
+                and self.finished_job_count > 0
+            ):
+                self.acc_operation_id.is_cdc_data_exists = True
+            # Update partner_id for retrieved cdc
+            self.env["acc.counter.period"]._get_periods_from_interval(
+                [("acc_operation_id", "=", self.acc_operation_id.id)],
+                self.start_date,
+                self.end_date,
+            ).update_cdc_partner_id(date_start=self.start_date, date_end=self.end_date)
+            # Compute by-day aggregated curves
+            self.env["acc.enedis.cdc.day"].populate_daily_aggregated_data(
+                acc_operation_id=self.acc_operation_id.id,
+                start_date=self.start_date,
+                end_date=self.end_date,
+            )
+            self.env["acc.enedis.cdc.prorata"].populate_daily_prorata(
+                acc_operation_id=self.acc_operation_id.id,
+                start_date=self.start_date,
+                end_date=self.end_date,
+            )
+            # Recompute static datas for last month
             self.acc_operation_id.set_static_data()