diff --git a/models/sale_intervention.py b/models/sale_intervention.py
index 83438b00884f9ee2ed5b8ffbf67be748fb26d18a..f67e1d661ff7558b4b398691533cb5abb9178c34 100644
--- a/models/sale_intervention.py
+++ b/models/sale_intervention.py
@@ -133,6 +133,7 @@ class SaleIntervention(models.Model):
         readonly=True,
         states={"draft": [("readonly", False)], "sent": [("readonly", False)]},
     )
+
     mulch2_id = fields.Many2one(
         comodel_name="product.template",
         string="Paillage 2",
@@ -143,7 +144,6 @@ class SaleIntervention(models.Model):
         readonly=True,
         states={"draft": [("readonly", False)], "sent": [("readonly", False)]},
     )
-
     mulch2_qty = fields.Float(
         string="Qté paillage 2",
         readonly=True,
@@ -294,7 +294,7 @@ class SaleIntervention(models.Model):
     )
 
     plants_qty = fields.Integer(
-        "Nombre total de plants",
+        "Nombre total de plants (calculé)",
         compute="_compute_quantities",
         default=0,
         group_operator="sum",
@@ -498,6 +498,7 @@ class SaleIntervention(models.Model):
     # ------------------------------------------------------
     @api.onchange("plant_qty", "intervention_length", "mulch_id")
     def _onchange_mulch_id(self):
+        self.mulch_has_staples = False
         if self.mulch_unit == self.env.ref("uom.product_uom_meter"):
             self.mulch_qty = self.intervention_length
         elif self.mulch_unit == self.env.ref("uom.product_uom_unit"):
@@ -507,6 +508,7 @@ class SaleIntervention(models.Model):
 
     @api.onchange("plant_qty", "intervention_length", "mulch2_id")
     def _onchange_mulch2_id(self):
+        self.mulch2_has_staples = False
         if self.mulch2_unit == self.env.ref("uom.product_uom_meter"):
             self.mulch2_qty = self.intervention_length
         elif self.mulch2_unit == self.env.ref("uom.product_uom_unit"):
@@ -514,26 +516,20 @@ class SaleIntervention(models.Model):
         else:
             self.mulch2_qty = 0.0
 
-    @api.onchange("plant_qty")
+    @api.onchange("plant_qty", "intervention_length", "plant_interval")
     def _onchange_plant_qty(self):
-        self.collarette_qty = self.plant_qty
-
-    @api.onchange("high_protection_id")
-    def _onchange_high_protection_id(self):
-        if not self.high_protection_id:
-            self.high_protection_qty = 0.0
-
-    @api.onchange("high_protection_qty", "stake_id")
-    def _onchange_high_protection_qty(self):
-        if self.stake_id:
-            self.stake_qty = self.high_protection_qty
+        if self.intervention_uom_name == "m" and self.plant_interval > 0:
+            self.collarette_qty = (
+                math.ceil(self.intervention_length / self.plant_interval) + 1
+            )
+        elif self.intervention_uom_name == "Unité":
+            self.collarette_qty = self.plant_qty
         else:
-            self.stake_qty = 0.0
+            self.collarette_qty = 0
 
-    @api.onchange("low_protection_id")
-    def _onchange_low_protection_id(self):
-        if not self.low_protection_id:
-            self.low_protection_qty = 0.0
+    @api.onchange("high_protection_qty")
+    def _onchange_high_protection_qty(self):
+        self.stake_qty = self.high_protection_qty
 
     @api.onchange("low_protection_qty")
     def _onchange_low_protection_qty(self):
@@ -930,7 +926,6 @@ class SaleIntervention(models.Model):
         return res
 
     def write(self, values):
-        # TODO: find a better way to update stock lines ?
         res = super().write(values)
         if self.sale_intervention_stock_ids:
             self.sale_intervention_stock_ids.unlink()
diff --git a/views/sale_intervention_view.xml b/views/sale_intervention_view.xml
index 036a7a8bd26ddd267d3ecbbf4986528db242679f..b13deb6d4fcf92cc544aace4819487eb6605d919 100644
--- a/views/sale_intervention_view.xml
+++ b/views/sale_intervention_view.xml
@@ -237,7 +237,10 @@
                             readonly="True"
                         >
                              <group>
-                                 <field name="plants_qty" />
+                                 <field
+                                    name="plants_qty"
+                                    string="Nombre total de plants"
+                                />
                                  <field name="plants_type_qty" />
                                  <field name="plants_local_qty" />
                              </group>
diff --git a/views/sale_project_view.xml b/views/sale_project_view.xml
index 324fac948507b9ac84671e936cefc64b661a5ce4..22bd41b016dd76fe4fc3e08084932ddeec97ce47 100644
--- a/views/sale_project_view.xml
+++ b/views/sale_project_view.xml
@@ -66,7 +66,6 @@
                                 style="pointer-events: none;"
                                 context="{'search_default_group_by_intervention_type': True}"
                             >
-                                <!-- TODO : group  by intervention_type_id -->
                                 <tree default_order="intervention_type_id,name">
                                     <field name="name" optional="show" />
                                     <field name="state" invisible="1" />