diff --git a/models/acc_operation.py b/models/acc_operation.py
index 1fc24aac4acca453e14d3fd0c3cc2567bcf6caa5..1e356b38a7c124ef155d6e5ee2db362fe84ee54a 100644
--- a/models/acc_operation.py
+++ b/models/acc_operation.py
@@ -430,6 +430,89 @@ class AccOperation(models.Model):
                 )
         return power_total
 
+    def process_create_account_surplus(
+        self, injection_id, date_start, date_end, power_surplus
+    ):
+        account_list = []
+        Account = self.env["acc.account"]
+
+        acc_account = Account.create(
+            {
+                "acc_operation_id": self.id,
+                "buyer_id": injection_id.buyer_id.id,
+                "acc_injection_id": injection_id.id,
+                "power_cons": power_surplus[1]["power"] / 1000 / 2,
+                "start_date": date_start,
+                "end_date": date_end,
+                # 'price_kwh': price_kwh,
+                "is_account_buyer": True,
+            }
+        )
+
+        interval_ids = self.env["acc.sale.price.buyer"].search(
+            [
+                ("acc_operation_id", "=", self.id),
+                ("acc_injection_id", "=", injection_id.id),
+                ("acc_buyer_id", "=", injection_id.buyer_id.id),
+                ("start_date", "<=", date_start),
+                ("end_date", "=", False),
+            ]
+        )
+        if not interval_ids:
+            price_ids = self.env["acc.sale.price.buyer"].search(
+                [
+                    ("acc_operation_id", "=", self.id),
+                    ("acc_injection_id", "=", injection_id.id),
+                    ("acc_buyer_id", "=", injection_id.buyer_id.id),
+                    ("end_date", ">=", date_start),
+                ]
+            )
+            price2_ids = self.env["acc.sale.price.buyer"].search(
+                [
+                    ("acc_operation_id", "=", self.id),
+                    ("acc_injection_id", "=", injection_id.id),
+                    ("acc_buyer_id", "=", injection_id.buyer_id.id),
+                    ("start_date", "<=", date_end),
+                ]
+            )
+            interval_ids = price_ids & price2_ids
+
+        for interval in interval_ids:
+            if date_start > interval.start_date:
+                date_interval_start = date_start
+            else:
+                date_interval_start = interval.start_date
+
+            if interval.end_date:
+                if date_end < interval.end_date:
+                    date_interval_end = date_end
+                else:
+                    date_interval_end = interval.end_date
+            else:
+                date_interval_end = date_end
+
+            power_surplus = self.get_power_by_prod(
+                injection_id, date_interval_start, date_interval_end
+            )
+            AccountLine = self.env["acc.account.line"]
+
+            # Création de la ligne du mois
+            AccountLine.create(
+                {
+                    "quantity": power_surplus[1]["power"] / 1000 / 2,
+                    "price_unit": interval.price,
+                    "acc_account_id": acc_account.id,
+                    "start_date": date_interval_start,
+                    "end_date": date_interval_end,
+                    "description": "Surplus kWh en ACC du "
+                    + str(date_interval_start)
+                    + " au "
+                    + str(date_interval_end),
+                }
+            )
+            account_list.append(acc_account)
+        return True
+
     def create_account_surplus(self, date_month, account_periodicity):
         """
         Fonction permettant de générer les factures se surplus à une date donnée.
@@ -439,7 +522,6 @@ class AccOperation(models.Model):
                 6 pour semestre, 12 pour année)
         :return:
         """
-        account_list = []
 
         date_end = date_utils.end_of(date_month, "month")
         date_start = date_end - relativedelta(months=int(account_periodicity) - 1)
@@ -452,88 +534,32 @@ class AccOperation(models.Model):
                     injection_id, date_start, date_end
                 )
 
-                Account = self.env["acc.account"]
-
-                acc_account = Account.create(
-                    {
-                        "acc_operation_id": self.id,
-                        "buyer_id": injection_id.buyer_id.id,
-                        "acc_injection_id": injection_id.id,
-                        "power_cons": power_surplus[1]["power"] / 1000 / 2,
-                        "start_date": date_start,
-                        "end_date": date_end,
-                        # 'price_kwh': price_kwh,
-                        "is_account_buyer": True,
-                    }
+                # Création du lot
+                batch_name = (
+                    "Facture surplus du "
+                    + str(date_start)
+                    + " au "
+                    + str(date_end)
+                    + " - Opération :"
+                    + str(self.name)
+                    + " - Prod :"
+                    + str(injection_id.name)
+                    + " - Acheteur :"
+                    + str(injection_id.buyer_id.name)
                 )
-
-                interval_ids = self.env["acc.sale.price.buyer"].search(
-                    [
-                        ("acc_operation_id", "=", self.id),
-                        ("acc_injection_id", "=", injection_id.id),
-                        ("acc_buyer_id", "=", injection_id.buyer_id.id),
-                        ("start_date", "<=", date_start),
-                        ("end_date", "=", False),
-                    ]
+                batch = self.env["queue.job.batch"].get_new_batch(batch_name)
+                self.with_context(
+                    job_batch=batch
+                ).with_delay().process_create_account_surplus(
+                    injection_id, date_start, date_end, power_surplus
                 )
-                if not interval_ids:
-                    price_ids = self.env["acc.sale.price.buyer"].search(
-                        [
-                            ("acc_operation_id", "=", self.id),
-                            ("acc_injection_id", "=", injection_id.id),
-                            ("acc_buyer_id", "=", injection_id.buyer_id.id),
-                            ("end_date", ">=", date_start),
-                        ]
-                    )
-                    price2_ids = self.env["acc.sale.price.buyer"].search(
-                        [
-                            ("acc_operation_id", "=", self.id),
-                            ("acc_injection_id", "=", injection_id.id),
-                            ("acc_buyer_id", "=", injection_id.buyer_id.id),
-                            ("start_date", "<=", date_end),
-                        ]
-                    )
-                    interval_ids = price_ids & price2_ids
-
-                for interval in interval_ids:
-                    if date_start > interval.start_date:
-                        date_interval_start = date_start
-                    else:
-                        date_interval_start = interval.start_date
-
-                    if interval.end_date:
-                        if date_end < interval.end_date:
-                            date_interval_end = date_end
-                        else:
-                            date_interval_end = interval.end_date
-                    else:
-                        date_interval_end = date_end
-
-                    power_surplus = self.get_power_by_prod(
-                        injection_id, date_interval_start, date_interval_end
-                    )
-                    AccountLine = self.env["acc.account.line"]
-
-                    # Création de la ligne du mois
-                    AccountLine.create(
-                        {
-                            "quantity": power_surplus[1]["power"] / 1000 / 2,
-                            "price_unit": interval.price,
-                            "acc_account_id": acc_account.id,
-                            "start_date": date_interval_start,
-                            "end_date": date_interval_end,
-                            "description": "Surplus kWh en ACC du "
-                            + str(date_interval_start)
-                            + " au "
-                            + str(date_interval_end),
-                        }
-                    )
-                    account_list.append(acc_account)
+                # lancement de la file d'attente
+                batch.enqueue()
 
         action = self.env["ir.actions.actions"]._for_xml_id(
             "acc_account.action_acc_account"
         )
-        action["domain"] = [("id", "in", account_list)]
+        action["domain"] = [("acc_operation_id", "=", self.id)]
         return action
 
     def _open_x2m_matrix(self, view_xmlid):