diff --git a/models/res_partner.py b/models/res_partner.py
index 53f8e46ec96fcd54d80df9e8d2962104f88f8cd2..72671d0fc6e963a7847f375664c1058655da7755 100644
--- a/models/res_partner.py
+++ b/models/res_partner.py
@@ -437,16 +437,27 @@ class ResPartner(models.Model):
             inpi_address = self._get_inpi_address(siege.adresse)
 
             adress_values = ["street", "cedex", "street2", "zip", "city"]
-            changing_values = []
+            changing_period_values = []
+            changing_object_values = []
 
             period = self._get_current_period()
             period_values = self._get_values_from_period(period)
 
             for v in adress_values:
                 if v in period._fields and inpi_address.get(v) != getattr(period, v):
-                    changing_values.append(v)
-
-            if changing_values:
+                    changing_period_values.append(v)
+                if v in self._fields and inpi_address.get(v) != getattr(self, v):
+                    changing_object_values.append(v)
+            # le changement d adresse de la periode, ou la creation d une nouvelle
+            # ne met pas a jours l adresse, on gère donc les deux (bug ?).
+            if changing_object_values:
+                to_write = {}
+                for value in changing_object_values:
+                    to_write[value] = inpi_address.get(value)
+                self.write(to_write)
+
+
+            if changing_period_values:
                 if new_period:
                     period.write(
                         {"end": datetime.datetime.now().date(), "end_reason": "adr"}
@@ -454,13 +465,13 @@ class ResPartner(models.Model):
                     period_values["start"] = fields.Date.today()
                     period_values["partner_id"] = self.id
 
-                for value in changing_values:
+                for value in changing_period_values:
                     period_values[value] = inpi_address.get(value)
-
                 if new_period:
                     return self.env["scop.period"].with_context().create(period_values)
                 else:
                     period.write(period_values)
+
             return period
         else:
             logger.info(_(f"No siege found for {self.name}: {self.siren}"))