diff --git a/models/acc_enedis_cdc.py b/models/acc_enedis_cdc.py
index 0cc19c6d7ff8ffb99a2b7db8498949296dd6af0b..69892181edd19a44948103176c4a70b8db45a31b 100644
--- a/models/acc_enedis_cdc.py
+++ b/models/acc_enedis_cdc.py
@@ -3,7 +3,7 @@
 from datetime import datetime
 
 from dateutil.relativedelta import relativedelta
-
+from ..tools.export_cdc import get_divider_from_row
 from odoo import _, api, models
 from odoo.exceptions import ValidationError
 from odoo.osv import expression
@@ -36,10 +36,10 @@ class AccEnedisCdc(models.Model):
         step_display_curve = "hour"
         # Calculate delta between 2 dates
         delta = (end_date - start_date).days
-        if delta > 1 and delta <= 31:
+        if 1 < delta <= 31:
             step_display_curve = "day"
             display_hourly_curves = True
-        elif delta > 31 and delta <= 366:
+        elif 31 < delta <= 366:
             step = "month"
             step_display_curve = "month"
         elif delta > 366:
@@ -193,7 +193,7 @@ class AccEnedisCdc(models.Model):
             if curve_type in ("cons", "autocons", "prod", "surplus"):
                 result += f"""
                     , (SUM(CASE WHEN cdc.comp_data_type = '{curve_type}'
-                    THEN cdc.power ELSE 0 END)) /2 / 1000 as {curve_type}
+                    THEN cdc.power ELSE 0 END)) as {curve_type}
                     """
             elif curve_type == "allocons":
                 result += """
@@ -202,7 +202,7 @@ class AccEnedisCdc(models.Model):
                         THEN cdc.power ELSE 0 END)
                      - SUM(CASE
                         WHEN cdc.comp_data_type = 'autocons'
-                        THEN cdc.power ELSE 0 END)) / 2 / 1000 as allocons
+                        THEN cdc.power ELSE 0 END)) as allocons
                     """
             elif curve_type == "autoprod":
                 result += """
@@ -211,8 +211,12 @@ class AccEnedisCdc(models.Model):
                         THEN cdc.power ELSE 0 END)
                      - SUM(CASE
                         WHEN cdc.comp_data_type = 'surplus'
-                        THEN cdc.power ELSE 0 END)) / 2 / 1000 as autoprod
+                        THEN cdc.power ELSE 0 END)) as autoprod
                     """
+        result += """
+                , cdc.timestep as timestep
+        """
+
         return result
 
     @api.model
@@ -293,7 +297,8 @@ class AccEnedisCdc(models.Model):
             raise ValidationError(_("Incorrect date_slot in GROUP BY section"))
         return f"""
             GROUP BY date_trunc('{date_slot}',
-                cdc.date_slot AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/Paris')
+                cdc.date_slot AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/Paris'),
+                cdc.timestep
             """
 
     @api.model
@@ -381,11 +386,17 @@ class AccEnedisCdc(models.Model):
         )
 
         for row in raw_data:
+            # use KW here, divider depend of the timestep
+            # only use 30 or 15 minutes, by default its 30 minutes
+
+            divider = get_divider_from_row(row)
             label.append(row[0])
-            data_cons.append({"x": row[0], "y": round(row[1], 2)})
-            data_autocons.append({"x": row[0], "y": round(row[2], 2)})
-            data_allocons.append({"x": row[0], "y": round(row[1] - row[2], 2)})
-            data_prod.append({"x": row[0], "y": round(row[3], 2)})
+            data_cons.append({"x": row[0], "y": round(row[1] / divider, 2)})
+            data_autocons.append({"x": row[0], "y": round(row[2] / divider, 2)})
+            data_allocons.append(
+                {"x": row[0], "y": round((row[1] - row[2]) / divider, 2)}
+            )
+            data_prod.append({"x": row[0], "y": round(row[3] / divider, 2)})
 
         cdc_cons = {
             "label": label,
@@ -437,8 +448,9 @@ class AccEnedisCdc(models.Model):
         self.env.cr.execute(query)
         raw_data = self.env.cr.fetchall()
         for row in raw_data:
-            data_autocons_histo.append(round(row[1], 2))
-            data_allocons_histo.append(round(row[2], 2))
+            divider = get_divider_from_row(row)
+            data_autocons_histo.append(round(row[1]/divider, 2))
+            data_allocons_histo.append(round(row[2]/divider, 2))
             label_histo.append(row[0])
 
         cdc_cons = {
@@ -524,9 +536,10 @@ class AccEnedisCdc(models.Model):
         )
 
         for row in raw_data:
+            divider = get_divider_from_row(row)
             label.append(row[0])
-            data_autocons.append({"x": row[0], "y": round(row[1], 2)})
-            data_surplus.append({"x": row[0], "y": round(row[2], 2)})
+            data_autocons.append({"x": row[0], "y": round(row[1]/divider, 2)})
+            data_surplus.append({"x": row[0], "y": round(row[2]/divider, 2)})
 
         cdc_prod = {
             "label": label,
@@ -570,9 +583,10 @@ class AccEnedisCdc(models.Model):
         self.env.cr.execute(query)
         raw_data = self.env.cr.fetchall()
         for row in raw_data:
+            divider = get_divider_from_row(row)
             label_histo.append(row[0])
-            data_autocons_prod_histo.append(round(row[1], 2))
-            data_surplus_histo.append(round(row[2], 2))
+            data_autocons_prod_histo.append(round(row[1]/divider, 2))
+            data_surplus_histo.append(round(row[2]/divider, 2))
 
         cdc_jour = {
             "label_histo": label_histo,
diff --git a/tools/export_cdc.py b/tools/export_cdc.py
index d34807e6c42c2fa70faf6d157d41b0e232af9c54..b250261974d42971df0294298fb182476f11e313 100644
--- a/tools/export_cdc.py
+++ b/tools/export_cdc.py
@@ -94,26 +94,27 @@ def make_cons_data(raw_data):
     data_file_lines = []
     rounding = 3
     for row in raw_data:
+        divider = get_divider_from_row(row)
         data_file_lines.append(
             ";".join(
                 [
                     # horodatage
                     row[0].strftime("%d/%m/%Y %H:%M"),
                     # consommation en watt
-                    str(round(row[1] * 2000, rounding)),
+                    str(round((row[1] * 2000)/divider, rounding)),
                     # consommation en kwh
-                    str(round(row[1], rounding)),
+                    str(round(row[1]/divider, rounding)),
                     # allocons
-                    str(round(row[3], rounding)),
+                    str(round(row[3]/divider, rounding)),
                     # autocons
-                    str(round(row[2], rounding)),
+                    str(round(row[2]/divider, rounding)),
                 ]
             )
         )
 
-        sum_value["cons"] += round(row[1], rounding)
-        sum_value["allo_cons"] += round(row[3], rounding)
-        sum_value["auto_cons"] += round(row[2], rounding)
+        sum_value["cons"] += round(row[1]/divider, rounding)
+        sum_value["allo_cons"] += round(row[3]/divider, rounding)
+        sum_value["auto_cons"] += round(row[2]/divider, rounding)
 
     tot = ";".join(
         [
@@ -139,25 +140,26 @@ def make_prod_data(raw_data):
     rounding = 3
     sum_value = {"prod": 0, "surplus": 0, "auto_cons": 0}
     for row in raw_data:
+        divider = get_divider_from_row(row)
         data_file_lines.append(
             ";".join(
                 [
                     # horodatage
                     row[0].strftime("%d/%m/%Y %H:%M"),
                     # production en watt
-                    str(round(row[3] * 2000, rounding)),
+                    str(round((row[3] * 2000)/divider, rounding)),
                     # production en kwh
-                    str(round(row[3], rounding)),
+                    str(round(row[3]/divider, rounding)),
                     # surplus
-                    str(round(row[2], rounding)),
+                    str(round(row[2]/divider, rounding)),
                     # autocons
-                    str(round(row[1], rounding)),
+                    str(round(row[1]/divider, rounding)),
                 ]
             )
         )
-        sum_value["prod"] += round(row[3], rounding)
-        sum_value["surplus"] += round(row[2], rounding)
-        sum_value["auto_cons"] += round(row[1], rounding)
+        sum_value["prod"] += round(row[3]/divider, rounding)
+        sum_value["surplus"] += round(row[2]/divider, rounding)
+        sum_value["auto_cons"] += round(row[1]/divider, rounding)
 
     tot = ";".join(
         [
@@ -211,3 +213,15 @@ def get_partner_name_from_id(operation, partner_id):
     """
 
     return operation.env["res.partner"].browse(int(partner_id)).name
+
+
+def get_divider_from_row(row):
+    """
+    Get divider from a data row
+    divider depends of the timestep
+    by default return 2000 (timestep of 30 min)
+    """
+
+    if row[-1] == 15:
+        return 4000
+    return 2000