diff --git a/models/__init__.py b/models/__init__.py
index a07dd7e6871332d819cc1f6dff33d1365c4fb4d4..183168978d7da2e5bc4b899455e45738c23fa71c 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -1,3 +1,2 @@
 from . import acc_operation
 from . import acc_repartition_keys
-from . import api_enedis_acc
diff --git a/models/acc_repartition_keys.py b/models/acc_repartition_keys.py
index c71adcb01b9019c664f529ed4b20cd75c6a9bff5..52471e399d3d2fda2375c0745377c5593c093bdb 100644
--- a/models/acc_repartition_keys.py
+++ b/models/acc_repartition_keys.py
@@ -8,9 +8,9 @@ class AccRepartitionKeys(models.Model):
 
     # ------------------------------------------------------
     # Fields declaration
-    csv_file = fields.Binary("Contenu du fichier CSV")
-    date_send = fields.Date("Date de l'envoi des clefs", default=None)
-    operation_id = fields.Many2one("acc.operation", "Opération")
+    csv_file = fields.Binary("Contenu du fichier CSV", required=True)
+    date_send = fields.Date("Date de l'envoi des clefs", required=True, default=None)
+    operation_id = fields.Many2one("acc.operation", "Opération", required=True)
 
     # ------------------------------------------------------
     # SQL Constraints
diff --git a/models/api_enedis_acc.py b/models/api_enedis_acc.py
deleted file mode 100644
index aadd61bf611f239ac2cdf46e9945d6cc82a3194b..0000000000000000000000000000000000000000
--- a/models/api_enedis_acc.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2021- Le Filament (https://le-filament.com)
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
-from odoo import api, models
-
-
-class ApiEnedisAcc(models.AbstractModel):
-    _inherit = "api.enedis.acc"
-
-    # ------------------------------------------------------
-    # Actions
-    # ------------------------------------------------------
-
-    # ------------------------------------------------------
-    # Business methods
-    # ------------------------------------------------------
-    @api.model
-    def send_repartition_key(self, key):
-        """send keys for one date"""
-
-        uri = f"{self.name}{key.get('route')}"
-
-        return self._get_enedis(uri=uri, params=key.get("body"))
-
-    # ------------------------------------------------------
-    # Functions to manage route
-    # ------------------------------------------------------
diff --git a/tools/key_file.py b/tools/key_file.py
index 70d324149a61addbaa48c8dbf3f8b1ca30f2fb3d..d3e141ee41b3f1c62a93a12566db6f1881bff7b8 100644
--- a/tools/key_file.py
+++ b/tools/key_file.py
@@ -6,9 +6,9 @@ from datetime import datetime
 
 
 class RepartitionKeyEntryFile:
-    def __init__(self, data, operation_counter_list, file_type="csv"):
+    def __init__(self, data, file_type="csv"):
         self.data = data
-        self.operation_counter_list = operation_counter_list
+        self.operation_counter_list = None
         self.file_type = file_type
         self.json = self._to_json()
 
@@ -66,6 +66,20 @@ class RepartitionKeyEntryFile:
                 )
         return json
 
+    def get_min_date(self):
+        """
+        get minimal date from file
+        """
+
+        return min(self.json)
+
+    def get_max_date(self):
+        """
+        get minimal date from file
+        """
+
+        return max(self.json)
+
     def data_to_send(self, send_empty_key=True):
         """
         build route and body for api sending
@@ -74,7 +88,7 @@ class RepartitionKeyEntryFile:
         call_list = []
         for horo in self.json:
             date = datetime.strptime(horo, "%d-%m-%Y %H:%M")
-            route = f"/repartition_keys/{date.strftime('%Y%m%dT%H%M%SZ')}"
+            timestamp = date.strftime('%Y%m%dT%H%M%SZ')
             body = []
             for key in self.json.get(horo):
                 if send_empty_key:
@@ -82,10 +96,10 @@ class RepartitionKeyEntryFile:
                 else:
                     if float(key.get("key")) > 0:
                         body.append(key)
-            
+
             if send_empty_key or body:
-                call_list.append({"route": route, "body": body})
-                
+                call_list.append({"timestamp": timestamp, "body": body})
+
         return call_list
 
     def _check_counter(self):
diff --git a/wizard/acc_repartition_keys_wizard.py b/wizard/acc_repartition_keys_wizard.py
index 4758365af03bbd51e95f98ccfe7b1dbe40d8e097..f3901242d0c392b0b2492b77d3a89b702e291bff 100644
--- a/wizard/acc_repartition_keys_wizard.py
+++ b/wizard/acc_repartition_keys_wizard.py
@@ -1,7 +1,7 @@
 # Copyright 2021- Le Filament (https://le-filament.com)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
 import base64
-import datetime
+from datetime import datetime
 
 from odoo import fields, models
 from odoo.exceptions import UserError, ValidationError
@@ -23,7 +23,7 @@ class AccRepartitionKeysWizard(models.TransientModel):
     # Fields declaration
     # ------------------------------------------------------
     csv_file = fields.Binary("Contenu du fichier CSV")
-    date_send = fields.Date("Date de l'envoi des clefs", default=None)
+    date_send = fields.Date(default=None)
     operation_id = fields.Many2one(
         "acc.operation", "Opération", default=_default_operation_id
     )
@@ -66,16 +66,27 @@ class AccRepartitionKeysWizard(models.TransientModel):
             except UnicodeDecodeError as exc:
                 raise UserError("Fichier de répartitions au mauvais format") from exc
 
-            counter_list_from_operation = [
-                counter.name
-                for counter in self.env["acc.counter"].search(
-                    [("acc_operation_id.id", "=", self.operation_id.id)]
-                )
-            ]
             try:
-                entry_file_handler = RepartitionKeyEntryFile(
-                    data=file, operation_counter_list=counter_list_from_operation
+                entry_file_handler = RepartitionKeyEntryFile(data=file)
+            except (ValueError, IndexError) as exc:
+                raise UserError("Fichier de répartitions au mauvais format") from exc
+
+            counter_list_from_operation = (
+                self.env["acc.counter.period"]
+                ._get_periods_from_interval(
+                    [("acc_operation_id", "=", self.operation_id.id)],
+                    datetime.strptime(
+                        entry_file_handler.get_min_date(), "%d-%m-%Y %H:%M"
+                    ).date(),
+                    datetime.strptime(
+                        entry_file_handler.get_max_date(), "%d-%m-%Y %H:%M"
+                    ).date(),
                 )
+                .mapped("acc_counter_id.name")
+            )
+
+            entry_file_handler.operation_counter_list = counter_list_from_operation
+            try:
                 file_check_result = entry_file_handler.check()
             except (ValueError, IndexError) as exc:
                 raise UserError("Fichier de répartitions au mauvais format") from exc
@@ -86,16 +97,18 @@ class AccRepartitionKeysWizard(models.TransientModel):
             data_to_send = entry_file_handler.data_to_send(send_empty_key=False)
 
             for key in data_to_send:
-                job_description = f"Send repartition key at {key.get('route')}"
+                job_description = f"Send repartition key at {key.get('timestamp')}"
                 try:
-                    self.operation_id.with_delay(description=job_description).send_repartition_key(key=key)
+                    self.operation_id.with_delay(
+                        description=job_description
+                    ).send_repartition_key(key=key)
                 except ValidationError as exc:
                     raise UserError(str(exc))
 
             self.env["acc.repartition.keys"].create(
                 {
                     "csv_file": self.csv_file,
-                    "date_send": datetime.datetime.today(),
+                    "date_send": fields.Date.context_today(),
                     "operation_id": self.operation_id.id,
                 }
             )