diff --git a/__manifest__.py b/__manifest__.py
index 481c4d371f3f2caf68575ed2a5013377efc09536..32178714f0e05e282725a2e9764581d68998bff9 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -22,6 +22,7 @@
         "security/security_rules.xml",
         "security/ir.model.access.csv",
         "views/assets.xml",
+        "wizard/scop_address_wizard.xml",
         "wizard/scop_period_wizard.xml",
         "wizard/scop_deces_wizard.xml",
         "wizard/scop_membership_out_wizard.xml",
diff --git a/views/res_partner.xml b/views/res_partner.xml
index 83c2dc367ca177df6043271e48528c9981bd042d..6900d29e045ccc389057d9c2e915b969ec43ba9b 100644
--- a/views/res_partner.xml
+++ b/views/res_partner.xml
@@ -238,6 +238,7 @@
                 <xpath expr='//form/sheet' position="before">
                     <header  attrs="{'invisible': [('is_cooperative', '=', False)]}">
                         <button string="Nouvelle période" type="action" name="%(cgscop_partner.scop_period_wizard_create_action)d" class="oe_highlight" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '6_suivi')]}" groups="cgscop_partner.group_add_period"/>
+                        <button string="Changement d'adresse" type="action" name="%(cgscop_partner.scop_address_wizard_action)d" class="oe_highlight" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '6_suivi')]}" />
                         <button string="Nouvelle période d'adhésion" type="action" name="%(cgscop_partner.scop_membership_period_wizard_create_action)d" class="oe_highlight" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '6_suivi')]}" groups="cgscop_partner.group_add_period"/>
                         <button string="Décès/Mise en sommeil" type="action" name="%(cgscop_partner.scop_deces_wizard_create_action)d" attrs="{'invisible': ['|', ('dissolution_reason_id', '!=', False), '|', ('write_date', '=', False), ('project_status', '!=', '6_suivi')]}" groups="cgscop_partner.group_add_period"/>
                         <button string="Radiation" type="action" name="%(cgscop_partner.scop_membership_out_wizard_create_action)d" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '6_suivi')]}" groups="cgscop_partner.group_add_period"/>
diff --git a/wizard/__init__.py b/wizard/__init__.py
index 96fa0b62de6941ff782dc1ea14e019533c874e97..14ef5e48de39ecbfd07497e8222d950179aaf0f9 100644
--- a/wizard/__init__.py
+++ b/wizard/__init__.py
@@ -1,6 +1,7 @@
 # © 2019 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
+from . import scop_address_wizard
 from . import scop_period_wizard
 from . import scop_deces_wizard
 from . import scop_membership_period_wizard
diff --git a/wizard/scop_address_wizard.py b/wizard/scop_address_wizard.py
new file mode 100644
index 0000000000000000000000000000000000000000..d8af6e7e9dc21b04fc1dc77225490087d21291d8
--- /dev/null
+++ b/wizard/scop_address_wizard.py
@@ -0,0 +1,239 @@
+# © 2019 Le Filament (<http://www.le-filament.com>)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import api, fields, models
+from odoo.exceptions import ValidationError
+
+
+class ScopPeriodWizard(models.TransientModel):
+    _name = 'scop.address.wizard'
+    _description = "Wizard changement d'adresse"
+
+    # Default functions
+    @api.model
+    def _default_partner_id(self):
+        return self.env.context.get('active_id')
+
+    @api.model
+    def _default_previous_period_id(self):
+        return self.env['scop.period'].search(
+            [('partner_id', '=', self.env.context.get('active_id')),
+             ('end', '=', False)],
+            limit=1).id
+
+    @api.model
+    def _default_name(self):
+        return self.env['res.partner'].browse(
+            self.env.context.get('active_id')).name
+
+    @api.model
+    def _default_cooperative_form_id(self):
+        return self.env['res.partner'].browse(
+            self.env.context.get('active_id')).cooperative_form_id
+
+    @api.model
+    def _default_partner_company_type_id(self):
+        return self.env['res.partner'].browse(
+            self.env.context.get('active_id')).partner_company_type_id
+
+    @api.model
+    def _default_siret(self):
+        return self.env['res.partner'].browse(
+            self.env.context.get('active_id')).siret
+
+    @api.model
+    def _default_street(self):
+        return self.env['res.partner'].browse(
+            self.env.context.get('active_id')).street
+
+    @api.model
+    def _default_street2(self):
+        return self.env['res.partner'].browse(
+            self.env.context.get('active_id')).street2
+
+    @api.model
+    def _default_street3(self):
+        return self.env['res.partner'].browse(
+            self.env.context.get('active_id')).street3
+
+    @api.model
+    def _default_zip(self):
+        return self.env['res.partner'].browse(
+            self.env.context.get('active_id')).zip
+
+    @api.model
+    def _default_zip_id(self):
+        return self.env['res.partner'].browse(
+            self.env.context.get('active_id')).zip_id
+
+    @api.model
+    def _default_city(self):
+        return self.env['res.partner'].browse(
+            self.env.context.get('active_id')).city
+
+    @api.model
+    def _default_cedex(self):
+        return self.env['res.partner'].browse(
+            self.env.context.get('active_id')).cedex
+
+    @api.model
+    def _default_state_id(self):
+        return self.env['res.partner'].browse(
+            self.env.context.get('active_id')).state_id
+
+    @api.model
+    def _default_country_id(self):
+        return self.env['res.partner'].browse(
+            self.env.context.get('active_id')).country_id
+
+    @api.model
+    def _default_naf_id(self):
+        return self.env['res.partner'].browse(
+            self.env.context.get('active_id')).naf_id
+
+    @api.model
+    def _default_cae(self):
+        return self.env['res.partner'].browse(
+            self.env.context.get('active_id')).cae
+
+    # Fields common
+    partner_id = fields.Integer('Partner', default=_default_partner_id)
+
+    # Fields previous period
+    previous_period_id = fields.Integer(default=_default_previous_period_id)
+    end_reason = fields.Selection(
+        [('juri', "Modification de la forme juridique"),
+         ('form', "Changement de forme coopérative"),
+         ('acti', "Changement d'activité (NAF)"),
+         ('adr', "Changement d'adresse"),
+         ('nom', "Changement de dénomination sociale"),
+         ('autr', "Autres")],
+        string='Motif',
+        default='adr')
+    comments = fields.Text('Commentaires')
+
+    # Fields new period
+    start = fields.Date('Début de validité', required=True,
+                        default=fields.Date.today())
+    name = fields.Char('Raison Sociale', required=True, default=_default_name)
+    cooperative_form_id = fields.Many2one(
+        'res.partner.cooperative.form',
+        string="Cooperative form",
+        on_delete='restrict', required=True,
+        default=_default_cooperative_form_id)
+    partner_company_type_id = fields.Many2one(
+        comodel_name='res.partner.company.type',
+        string='Legal Form',
+        track_visibility='onchange',
+        on_delete='restrict', required=True,
+        default=_default_partner_company_type_id)
+    siret = fields.Char(string='SIRET', size=14, required=True,
+                        default=_default_siret)
+    street = fields.Char(default=_default_street)
+    street2 = fields.Char(default=_default_street2)
+    street3 = fields.Char(default=_default_street3)
+    zip = fields.Char(default=_default_zip)
+    zip_id = fields.Many2one('res.city.zip', 'ZIP Location',
+                             default=_default_zip_id)
+    city = fields.Char(default=_default_city)
+    cedex = fields.Char(default=_default_cedex)
+    state_id = fields.Many2one(
+        "res.country.state",
+        string='State',
+        ondelete='restrict',
+        domain="[('country_id', '=?', country_id)]",
+        default=_default_state_id)
+    country_id = fields.Many2one(
+        'res.country', string='Country', ondelete='restrict',
+        default=_default_country_id)
+    naf_id = fields.Many2one(
+        'res.partner.naf',
+        string='Code NAF',
+        on_delete='restrict', default=_default_naf_id)
+    cae = fields.Boolean("CAE", default=_default_cae)
+
+
+    # Action
+    @api.onchange('zip_id')
+    def _onchange_zip_id(self):
+        if self.zip_id:
+            self.zip = self.zip_id.name
+            self.city = self.zip_id.city_id.name
+            self.country_id = self.zip_id.city_id.country_id
+            self.state_id = self.zip_id.city_id.state_id
+
+    @api.multi
+    def create_period(self):
+        for period in self:
+            partner_values = {}
+            partner = self.env['res.partner'].browse(period.partner_id)
+
+            # Check changement de région
+            zip_id = self.env['res.city.zip'].search([
+                ('name', '=', period.zip)])
+            region = zip_id[0].city_id[0].state_id
+            if partner.region and region != partner.region:
+                raise ValidationError(
+                    "Vous ne pouvez pas modifier l'adresse "
+                    "dans une autre région.\n"
+                    " - ancienne région : %s\n"
+                    " - nouvelle région : %s" % (partner.region.name, region.name))
+
+            # Close previous period
+            previous_period = self.env['scop.period'].browse(
+                period.previous_period_id)
+            print(previous_period)
+            if previous_period:
+                if previous_period.end:
+                    if period.start >= previous_period.end:
+                        partner_values = {
+                            'dissolution_date': False,
+                        }
+                    else:
+                        raise ValidationError(
+                            "La nouvelle période ne peut commencer avant la "
+                            + "fin de la période précédente : "
+                            + str(previous_period.end))
+                if period.start >= previous_period.start:
+                    if not previous_period.end:
+                        previous_period.sudo().write({
+                            'end': period.start,
+                            'end_reason': period.end_reason,
+                            'comments': period.comments,
+                        })
+                else:
+                    raise ValidationError(
+                        "La nouvelle période ne peut commencer avant la "
+                        + "période précédente : "
+                        + str(previous_period.start))
+
+            # Create new period
+            period_values = {
+                'start': period.start,
+                'partner_id': period.partner_id
+            }
+
+            values = {
+                'name': period.name,
+                'dissolution_reason_id': False,
+                'cooperative_form_id': period.cooperative_form_id.id,
+                'partner_company_type_id': period.partner_company_type_id.id,
+                'siret': period.siret,
+                'street': period.street,
+                'street2': period.street2,
+                'street3': period.street3,
+                'zip': period.zip,
+                'zip_id': period.zip_id.id,
+                'city': period.city,
+                'cedex': period.cedex,
+                'state_id': period.state_id.id,
+                'country_id': period.country_id.id,
+                'naf_id': period.naf_id.id,
+                'cae': period.cae
+            }
+            period_values.update(values)
+            self.env['scop.period'].sudo().create(period_values)
+
+            # Update partner
+            partner_values.update(values)
+            partner.write(partner_values)
diff --git a/wizard/scop_address_wizard.xml b/wizard/scop_address_wizard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a27f4d67b881ecf20dc2b5fdb81aa55c7a8a3b02
--- /dev/null
+++ b/wizard/scop_address_wizard.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<odoo>
+    <!-- WIZARD FORM -->
+    <record id="scop_address_wizard_view_form" model="ir.ui.view">
+        <field name="name">scop.address.wizard.form</field>
+        <field name="model">scop.address.wizard</field>
+        <field name="arch" type="xml">
+            <form string="Nouvelle Période">
+                <group name="period" string="Période" col="2">
+                        <field name="start" required="1"/>
+                        <field name="previous_period_id" invisible="1"/>
+                        <field name="end_reason" attrs="{'required': [('previous_period_id', '!=', 0)], 'invisible': [('previous_period_id', '=', 0)]}" readonly="1"/>
+                        <field name="comments" attrs="{'invisible': [('previous_period_id', '=', 0)]}"/>
+                </group>
+                <group col="2">
+                    <group>
+                        <field name="name" readonly="1"/>
+                        <field name="siret" required="1"/>
+                    </group>
+                    <group>
+                        <label for='street' string="Adresse du siège social"/>
+                        <div class="o_address_format" modifiers="{}">
+                            <field name="street" placeholder="Rue..." class="o_address_street" required="1"/>
+                            <field name="street2" placeholder="Rue 2..." class="o_address_street"/>
+                            <field name="street3" placeholder="Rue 3..." class="o_address_street"/>
+                            <field name="zip_id" options="{'create_name_field': 'city', 'no_open': True, 'no_create': True}" placeholder="Location completion"
+                                on_change="1" can_create="true" can_write="true"/>
+                            <field name="zip" placeholder="Code postal" class="o_address_city" on_change="1" required="1"/>
+                            <field name="city" placeholder="Ville" class="o_address_city" required="1"/>
+                            <field name="cedex" placeholder="Cedex" class="o_address_city"/>
+                            <field name="state_id" placeholder="État" invisible="1"/>
+                            <field name="country_id" placeholder="Pays" invisible="1"/>
+                        </div>
+                    </group>
+                </group>
+                <footer>
+                    <button class="btn btn-sm btn-primary" name="create_period" string="Créer" type="object" confirm="Êtes-vous sûr de vouloir créer une nouvelle période ?"/>
+                    <button class="btn btn-sm btn-default" special="cancel" string="Close"/>
+                </footer>
+            </form>
+        </field>
+    </record>
+
+    <record id="scop_address_wizard_action" model="ir.actions.act_window">
+        <field name="name">Changement d'adresse</field>
+        <field name="type">ir.actions.act_window</field>
+        <field name="res_model">scop.address.wizard</field>
+        <field name="view_mode">form</field>
+        <field name="view_id" ref="scop_address_wizard_view_form"/>
+        <field name="target">new</field>
+    </record>
+
+</odoo>