diff --git a/models/acc_operation.py b/models/acc_operation.py
index 3241845914c4529a91d01a6b6d822cf0ea0db0fc..23a3f2269275da58b63a9b18b99323f9bc5483d7 100644
--- a/models/acc_operation.py
+++ b/models/acc_operation.py
@@ -115,22 +115,48 @@ class AccOperation(models.Model):
                 "de consommation</strong><br/>"
             )
             for usage_point_id in usage_point_cons_ids:
-                desc = (
-                    "Opération: "
-                    + self.name
-                    + " - PRM: "
-                    + usage_point_id.name
-                    + " - Date: "
-                    + str(fields.Datetime.today())
-                    + " - Période: du "
-                    + str(start_date)
-                    + " au "
-                    + str(end_date)
-                )
-                message += desc + "<br/>"
-                self.with_delay(description=desc).get_definitive_load_curves(
-                    start_date, end_date, usage_point_id, "cons"
+                # Vérification que le PRM est actif sur la période demandée
+                period_ids = self.env["acc.counter.period"]._get_periods_from_interval(
+                    [
+                        ("acc_operation_id", "=", self.id),
+                        ("acc_counter_id", "=", usage_point_id.id),
+                        ("prm_type", "=", "delivery"),
+                    ],
+                    start_date,
+                    end_date,
                 )
+                # Si pas de période de PRM, on ne fait pas d'appel API
+                if not period_ids:
+                    message += (
+                        "Opération: "
+                        + self.name
+                        + " - PRM: "
+                        + usage_point_id.name + " - aucune période trouvée du " + str(start_date)
+                         + " au "
+                         + str(end_date) + "<br/>"")
+                # Si période de PRM on vérifie les dates puis on appelle l'API
+                else:
+                    start_date_upd = max(start_date, period_ids[0].start_date)
+                    if period_ids[-1].end_date:
+                        end_date_upd = min(end_date, period_ids[-1].end_date)
+                    else:
+                        end_date_upd = end_date
+                    desc = (
+                        "Opération: "
+                        + self.name
+                        + " - PRM: "
+                        + usage_point_id.name
+                        + " - Date: "
+                        + str(fields.Datetime.today())
+                        + " - Période: du "
+                        + str(start_date_upd)
+                        + " au "
+                        + str(end_date_upd)
+                    )
+                    message += desc + "<br/>"
+                    self.with_delay(description=desc).get_definitive_load_curves(
+                        start_date_upd, end_date_upd, usage_point_id, "cons"
+                    )
 
         if usage_point_prod_ids:
             # Traitement données de prod
@@ -139,25 +165,51 @@ class AccOperation(models.Model):
                 "de production</strong><br/>"
             )
             for usage_point_id in usage_point_prod_ids:
-                desc = (
-                    "Opération: "
-                    + self.name
-                    + " - PRM: "
-                    + usage_point_id.name
-                    + " - Date: "
-                    + str(fields.Datetime.today())
-                    + " - Période: du "
-                    + str(start_date)
-                    + " au "
-                    + str(end_date)
-                )
-                message += desc + "<br/>"
-                self.with_delay(description=desc).get_definitive_load_curves(
+                # Vérification que le PRM est actif sur la période demandée
+                period_ids = self.env["acc.counter.period"]._get_periods_from_interval(
+                    [
+                        ("acc_operation_id", "=", self.id),
+                        ("acc_counter_id", "=", usage_point_id.id),
+                        ("prm_type", "=", "injection"),
+                    ],
                     start_date,
                     end_date,
-                    usage_point_id,
-                    "prod",
                 )
+                # Si pas de période de PRM, on ne fait pas d'appel API
+                if not period_ids:
+                    message += (
+                        "Opération: "
+                        + self.name
+                        + " - PRM: "
+                        + usage_point_id.name + " - aucune période trouvée du " + str(start_date)
+                         + " au "
+                         + str(end_date) + "<br/>"")
+                # Si période de PRM on vérifie les dates puis on appelle l'API
+                else:
+                    start_date_upd = max(start_date, period_ids[0].start_date)
+                    if period_ids[-1].end_date:
+                        end_date_upd = min(end_date, period_ids[-1].end_date)
+                    else:
+                        end_date_upd = end_date
+                    desc = (
+                        "Opération: "
+                        + self.name
+                        + " - PRM: "
+                        + usage_point_id.name
+                        + " - Date: "
+                        + str(fields.Datetime.today())
+                        + " - Période: du "
+                        + str(start_date_upd)
+                        + " au "
+                        + str(end_date_upd)
+                    )
+                    message += desc + "<br/>"
+                    self.with_delay(description=desc).get_definitive_load_curves(
+                        start_date_upd,
+                        end_date_upd,
+                        usage_point_id,
+                        "prod",
+                    )
 
         message += (
             "<br/><h1>Fin de création des jobs de récupération des courbes: "
diff --git a/wizards/acc_operation_wizard.py b/wizards/acc_operation_wizard.py
index 875fdbb2b15b45b8b09a1afa37e8c14f940d5225..0c0a8221d9a1c6c0faa60b564b23b62250cc8a12 100644
--- a/wizards/acc_operation_wizard.py
+++ b/wizards/acc_operation_wizard.py
@@ -2,6 +2,7 @@
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
 from odoo import _, fields, models
 from odoo.exceptions import UserError
+from odoo.osv import expression
 
 
 class AccOperationWizard(models.TransientModel):
@@ -29,8 +30,6 @@ class AccOperationWizard(models.TransientModel):
         relation="acc_counter_cons_rel",
         column1="cons_id",
         column2="op_id",
-        # TODO: rework domain ?
-        # domain=[("prm_type", "=", "injection")],
         string="PRM de soutirage",
     )
     prm_prod_ids = fields.Many2many(
@@ -38,8 +37,6 @@ class AccOperationWizard(models.TransientModel):
         relation="acc_counter_prod_rel",
         column1="prod_id",
         column2="op_id",
-        # TODO: rework domain ?
-        # domain=[("is_injection", "=", True)],
         string="PRM d'injection",
     )
 
@@ -67,45 +64,63 @@ class AccOperationWizard(models.TransientModel):
     # Actions
     # ------------------------------------------------------
     def get_curves(self):
-        if not self.end_date and not self.start_date:
+        if not self.start_date or not self.end_date:
             raise UserError(
                 _("Les champs Date de début et Date de fin sont obligatoires")
             )
         if (self.end_date - self.start_date).days > 31:
             raise UserError(_("L'intervalle de temps ne doit pas dépasser 31 Jours"))
 
-        if self.end_date <= self.start_date:
+        if self.start_date >= self.end_date:
             raise UserError(_("La date de fin doit être supérieure à la date de début"))
 
-        # Vérification si des données existent déjà
-        # pour cet intervalle de date
-        domain_all = [
-            ("date_slot", ">=", self.start_date),
-            ("date_slot", "<", self.end_date),
+        # Instanciation des domaines de recherche
+        domain_base = [
             ("acc_operation_id", "=", self.operation_id.id),
         ]
-        if self.prm_cons_ids and self.prm_prod_ids:
-            domain_all += [
-                "|",
-                "&",
+        domain_extra = []
+        domain_extra_cdc = []
+        if self.prm_cons_ids:
+            domain_cons = [
                 ("acc_counter_id", "in", self.prm_cons_ids.ids),
-                ("comp_data_type", "in", ("autocons", "cons")),
-                "&",
-                ("acc_counter_id", "in", self.prm_prod_ids.ids),
-                ("comp_data_type", "in", ("prod", "surplus")),
-            ]
-        elif self.prm_cons_ids:
-            domain_all += [
-                ("acc_counter_id", "in", self.prm_cons_ids.ids),
-                ("comp_data_type", "in", ("autocons", "cons")),
             ]
-        elif self.prm_prod_ids:
-            domain_all += [
+            domain_cons_cdc = expression.AND(
+                [domain_cons, [("comp_data_type", "in", ("autocons", "cons"))]]
+            )
+            domain_extra = domain_cons
+            domain_extra_cdc = domain_cons_cdc
+        if self.prm_prod_ids:
+            domain_prod = [
                 ("acc_counter_id", "in", self.prm_prod_ids.ids),
-                ("comp_data_type", "in", ("prod", "surplus")),
             ]
+            domain_prod_cdc = expression.AND(
+                [domain_prod, [("comp_data_type", "in", ("prod", "surplus"))]]
+            )
+            domain_extra = domain_prod
+            domain_extra_cdc = domain_prod_cdc
+        if self.prm_cons_ids and self.prm_prod_ids:
+            domain_extra = expression.OR([domain_cons, domain_prod])
+            domain_extra_cdc = expression.OR([domain_cons_cdc, domain_prod_cdc])
+
+        domain_periods = expression.AND([domain_base, domain_extra])
+        domain_date = [
+            ("date_slot", ">=", self.start_date),
+            ("date_slot", "<", self.end_date),
+        ]
+        domain_cdc = expression.AND([domain_base, domain_extra_cdc, domain_date])
 
-        rec_ids = self.env["acc.enedis.cdc"].search(domain_all)
+        # Vérification que des périodes existent pour cet intervalle de date
+        period_ids = self.env["acc.counter.period"]._get_periods_from_interval(
+            domain_periods,
+            self.start_date,
+            self.end_date,
+        )
+        if not period_ids:
+            raise UserError(_("Aucun période trouvée pour le(s) PRM(s) et la période demandés"))
+
+        # Vérification si des données existent déjà
+        # pour cet intervalle de date
+        rec_ids = self.env["acc.enedis.cdc"].search(domain_cdc)
         if rec_ids:
             wizard = self.env["acc.operation.wizard.confirm"].create(
                 {
diff --git a/wizards/acc_operation_wizard_confirm.py b/wizards/acc_operation_wizard_confirm.py
index 0935682f5fbc765a3e9a8bab4f352e09ed40665a..03d49f2c44e385f8596f810484d48274a2a1d875 100644
--- a/wizards/acc_operation_wizard_confirm.py
+++ b/wizards/acc_operation_wizard_confirm.py
@@ -18,8 +18,6 @@ class AccOperationWizardConfirm(models.TransientModel):
         relation="acc_counter_cons_confirm_rel",
         column1="cons_id",
         column2="op_id",
-        # TODO: rework domain ?
-        # domain=[("is_delivery", "=", True)],
         string="PRM de soutirage",
     )
     prm_prod_ids = fields.Many2many(
@@ -27,8 +25,6 @@ class AccOperationWizardConfirm(models.TransientModel):
         relation="acc_counter_prod_confirm_rel",
         column1="prod_id",
         column2="op_id",
-        # TODO: rework domain ?
-        # domain=[("is_injection", "=", True)],
         string="PRM d'injection",
     )
     rec_ids = fields.Many2many("acc.enedis.cdc", string="Records")
diff --git a/wizards/acc_operation_wizard_views.xml b/wizards/acc_operation_wizard_views.xml
index 760ceca41c2f4e6f6659d3ac2d14eed2a669de2f..3f8025f44b21b217b74240ebb2419bf22f3c3a65 100644
--- a/wizards/acc_operation_wizard_views.xml
+++ b/wizards/acc_operation_wizard_views.xml
@@ -14,15 +14,14 @@
                         name="prm_cons_ids"
                         widget="many2many_tags"
                         options="{'no_create_edit': True, 'no_create': True}"
+                         domain="[('type', 'in', ('del', 'del_inj')), ('acc_operation_id', '=', operation_id)]"
                     />
-                        <!-- TODO rework domain="[('prm_type', '=', 'delivery'), ('acc_operation_id', '=', operation_id)]" -->
-
                     <field
                         name="prm_prod_ids"
                         widget="many2many_tags"
                         options="{'no_create_edit': True, 'no_create': True}"
+                        domain="[('type', 'in', ('del_inj', 'inj')), ('acc_operation_id', '=', operation_id)]"
                     />
-                        <!-- TODO rework domain="[('is_injection', '=', True), ('acc_operation_id', '=', operation_id)]" -->
                 </group>
                 <group name="period" string="Période" col="2">
                     <field name="start_date" />