diff --git a/.idea/misc.xml b/.idea/misc.xml
index 031ac64182e2fa8ea4cd95172e841e7af18340b3..598e1ad960188a39a12ff68f5e7f65f1096f4298 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,6 +4,7 @@
     <option name="filePathToZoomLevelMap">
       <map>
         <entry key="app/src/main/res/layout/activity_main.xml" value="0.15104166666666666" />
+        <entry key="app/src/main/res/layout/activity_mode_conception.xml" value="0.32864583333333336" />
         <entry key="app/src/main/res/layout/activity_mode_immersion.xml" value="0.3333333333333333" />
         <entry key="app/src/main/res/layout/activity_pieces.xml" value="0.19464720194647203" />
         <entry key="app/src/main/res/layout/content_scrolling.xml" value="0.246875" />
diff --git a/app/src/main/java/com/example/myhabitat/MainActivity.java b/app/src/main/java/com/example/myhabitat/MainActivity.java
index 89d92a3af8580d345fc32e19d011387dc44f06fa..bf619975c7dfcb83db1b99d6cda39699992d989f 100644
--- a/app/src/main/java/com/example/myhabitat/MainActivity.java
+++ b/app/src/main/java/com/example/myhabitat/MainActivity.java
@@ -30,6 +30,7 @@ public class MainActivity extends AppCompatActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
 
+        /*
         launcher = registerForActivityResult(
                 // Contrat qui détermine le type de l'interaction
                 new ActivityResultContracts.StartActivityForResult(),
@@ -43,7 +44,8 @@ public class MainActivity extends AppCompatActivity {
                             Bundle extras = intent.getExtras();
                             habitat = (Habitat) extras.get("Habitat");
                             habitat.setCorrectly();
-                            textView.setText(habitat.toString());
+                            ouvrirJSON();
+                            textView.setText(habitat.toJSON().toString());
 
                         }
 
@@ -51,81 +53,43 @@ public class MainActivity extends AppCompatActivity {
                 }
         );
 
-        habitat = new Habitat();
+         */
 
         textView = findViewById(R.id.textTest);
-        textView.setText(habitat.toString());
+
+        ouvrirJSON();
+
+        textView.setText(habitat.toJSON().toString());
 
     }
 
     public void conception(View view) {
         Intent intent = new Intent(this, ModeConceptionActivity.class);
         intent.putExtra("Habitat", habitat);
+        startActivity(intent);
+        /*
         if (intent.resolveActivity(getPackageManager()) != null){
             launcher.launch(intent);
         }
+
+         */
     }
 
     public void immersion(View view) {
         Intent intent = new Intent(this, ModeImmersionActivity.class);
         intent.putExtra("Habitat", habitat);
+        startActivity(intent);
+        /*
         if (intent.resolveActivity(getPackageManager()) != null){
             launcher.launch(intent);
         }
-    }
 
-    public void enregistrement(){
-        JSONObject enregistrement = new JSONObject();
-        JSONArray pieces = new JSONArray();
-        JSONArray murs = new JSONArray();
-
-        for(Piece piece : habitat.getPieces()){
-            for(Mur mur : piece.getMurs()){
-                JSONObject Jmur = new JSONObject();
-                try {
-                    Jmur.put("Orientation", mur.getOrientation());
-                    Jmur.put("Id", mur.getId());
-                } catch (JSONException e) {
-                    throw new RuntimeException(e);
-                }
-                murs.put(Jmur);
-            }
-            pieces.put(piece.getNom());
-            try {
-                pieces.put(0, murs);
-            } catch (JSONException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        try {
-            enregistrement.put("Pieces", pieces);
-        } catch (JSONException e) {
-            throw new RuntimeException(e);
-        }
-
-        if(enregistrement != null){
-            FileOutputStream fos = null;
-            try {
-                fos = openFileOutput("enregistrement.json", MODE_PRIVATE);
-                PrintStream ps = new PrintStream(fos);
-                ps.print(enregistrement);
-                ps.close();
-                fos.flush();
-                Log.i("testEnregistrement", "enregistrement.json a bien été enregistré");
-                ouvrirJSON();
-            } catch (FileNotFoundException e) {
-                throw new RuntimeException(e);
-            } catch (IOException e) {
-                throw new RuntimeException(e);
-            }
-            Log.i("testJSON", enregistrement.toString());
-
-        }else{
-            Log.i("testJSON", "pbm");
-        }
+         */
     }
 
     public void ouvrirJSON(){
+        //habitat.reset();
+        habitat = new Habitat();
         FileInputStream fis = null;
         try {
             fis = openFileInput("enregistrement.json");
@@ -138,8 +102,12 @@ public class MainActivity extends AppCompatActivity {
             try {
                 JSONObject enregistrement = new JSONObject(json);
                 JSONArray pieces = enregistrement.getJSONArray("Pieces");
-                JSONArray murs = pieces.getJSONArray(0);
-                Log.i("testJSONmurs", murs.toString());
+                for(int i=0; i<pieces.length(); i++){
+                    JSONObject Jpiece = (JSONObject) pieces.get(i);
+                    Piece piece = new Piece(Jpiece);
+                    habitat.addPiece(piece);
+                }
+                Log.i("testJSONouverture", habitat.toString());
 
             } catch (JSONException e) {
                 throw new RuntimeException(e);
@@ -149,6 +117,7 @@ public class MainActivity extends AppCompatActivity {
         }else{
             Log.i("testJSON", "pbm ouverture");
         }
+        textView.setText(habitat.toJSON().toString());
     }
 
     public String getFileContent(FileInputStream fis) {
@@ -170,8 +139,8 @@ public class MainActivity extends AppCompatActivity {
     }
 
     @Override
-    protected void onPause() {
-        enregistrement();
-        super.onPause();
+    protected void onPostResume() {
+        ouvrirJSON();
+        super.onPostResume();
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/myhabitat/ModeConceptionActivity.java b/app/src/main/java/com/example/myhabitat/ModeConceptionActivity.java
index 2224fbdfb0222d351cb1d21772ec15dd0924fb70..2a86150fd130d3480efc8d15a80b2ba2b9642dce 100644
--- a/app/src/main/java/com/example/myhabitat/ModeConceptionActivity.java
+++ b/app/src/main/java/com/example/myhabitat/ModeConceptionActivity.java
@@ -17,12 +17,10 @@ import androidx.activity.result.contract.ActivityResultContracts;
 import androidx.appcompat.app.AppCompatActivity;
 import android.os.Bundle;
 import habitat.*;
+import org.json.JSONObject;
 import outils.GestionnaireEditHabitat;
 
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
+import java.io.*;
 
 public class ModeConceptionActivity extends AppCompatActivity {
     private Habitat habitat;
@@ -168,7 +166,7 @@ public class ModeConceptionActivity extends AppCompatActivity {
         Mur murS = new Mur(piece1, Orientation.SUD, habitat);
         Mur murO = new Mur(piece1, Orientation.OUEST, habitat);
         piece1.setMurs(murS, murO, murN, murE);
-        habitat.getPieces().add(piece1);
+        habitat.addPiece(piece1);
         affichePieces();
         majHabitat();
     }
@@ -176,5 +174,33 @@ public class ModeConceptionActivity extends AppCompatActivity {
     public void majHabitat(){
         Intent intent = new Intent().putExtra("Habitat", habitat);
         setResult(RESULT_OK, intent);
+        enregistrement();
+    }
+
+    public void enregistrement(){
+        JSONObject enregistrement = new JSONObject();
+        enregistrement = habitat.toJSON();
+
+        if(enregistrement != null){
+            FileOutputStream fos = null;
+            try {
+                fos = openFileOutput("enregistrement.json", MODE_PRIVATE);
+                PrintStream ps = new PrintStream(fos);
+                ps.print(enregistrement);
+                ps.close();
+                fos.flush();
+                Log.i("testEnregistrement", "enregistrement.json a bien été enregistré");
+                Log.i("testEnregistrement", "json = " + enregistrement.toString());
+                //ouvrirJSON();
+            } catch (FileNotFoundException e) {
+                throw new RuntimeException(e);
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+            Log.i("testJSON", enregistrement.toString());
+
+        }else{
+            Log.i("testJSON", "pbm");
+        }
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/habitat/Habitat.java b/app/src/main/java/habitat/Habitat.java
index 9512983c96534f97a18fd53bb2125517653a2eb1..847f28d340be099be86ed4229c5c9dbe41d377ca 100644
--- a/app/src/main/java/habitat/Habitat.java
+++ b/app/src/main/java/habitat/Habitat.java
@@ -2,6 +2,10 @@ package habitat;
 
 import android.os.Parcel;
 import android.os.Parcelable;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import outils.FabriqueId;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -12,7 +16,7 @@ public class Habitat implements Parcelable {
 
     public Habitat() {
         this.pieces = new ArrayList<Piece>();
-        createHabitat();
+        //createHabitat();
     }
 
     protected Habitat(Parcel in) {
@@ -78,4 +82,27 @@ public class Habitat implements Parcelable {
             piece.setCorrectly();
         }
     }
+
+    public void addPiece(Piece piece) {
+        pieces.add(piece);
+        piece.setHabitat(this);
+    }
+
+    public JSONObject toJSON(){
+        JSONObject jsonObject = new JSONObject();
+        JSONArray jsonArray = new JSONArray();
+        for(Piece piece : pieces){
+            jsonArray.put(piece.toJSON());
+        }
+        try {
+            jsonObject.put("Pieces", jsonArray);
+        } catch (JSONException e) {
+            throw new RuntimeException(e);
+        }
+        return jsonObject;
+    }
+
+    public void reset(){
+        pieces.clear();
+    }
 }
diff --git a/app/src/main/java/habitat/Mur.java b/app/src/main/java/habitat/Mur.java
index 2adca7bba79669ef2339814472c4a78027c91877..7997db5bffa4e4bf959c0c7e7db5af3861e00adf 100644
--- a/app/src/main/java/habitat/Mur.java
+++ b/app/src/main/java/habitat/Mur.java
@@ -3,6 +3,8 @@ package habitat;
 import android.graphics.Bitmap;
 import android.os.Parcel;
 import android.os.Parcelable;
+import org.json.JSONException;
+import org.json.JSONObject;
 import outils.FabriqueId;
 
 public class Mur implements Parcelable {
@@ -26,6 +28,27 @@ public class Mur implements Parcelable {
         id = FabriqueId.getInstance().getId();
     }
 
+    public Mur(JSONObject jsonObjectMur){
+        try {
+            String Jorientation = (String) jsonObjectMur.get("Orientation");
+            switch (Jorientation){
+                case "NORD" :
+                    orientation = Orientation.NORD;
+                case "SUD" :
+                    orientation = Orientation.SUD;
+                case "EST" :
+                    orientation = Orientation.EST;
+                case "OUEST" :
+                    orientation = Orientation.OUEST;
+                default:
+                    orientation = Orientation.SUD; //Par défaut
+            }
+            id = (int) jsonObjectMur.get("Id");
+        } catch (JSONException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
     protected Mur(Parcel in) {
         orientation = (Orientation) in.readSerializable();
         id = in.readInt();
@@ -78,7 +101,7 @@ public class Mur implements Parcelable {
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
-        sb.append("Mur{");
+        sb.append("Mur{id=").append(id).append(";");
         sb.append("orientation=");
         sb.append(orientation);
         sb.append("}");
@@ -104,4 +127,15 @@ public class Mur implements Parcelable {
         dest.writeSerializable(orientation);
         dest.writeInt(id);
     }
+
+    public JSONObject toJSON() {
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.put("Orientation", orientation);
+            jsonObject.put("Id", id);
+        } catch (JSONException e) {
+            throw new RuntimeException(e);
+        }
+        return jsonObject;
+    }
 }
diff --git a/app/src/main/java/habitat/Piece.java b/app/src/main/java/habitat/Piece.java
index 9bd1d4a9065f39a25ff7a69c8562e6ae9dfc40cb..e3c9f2166ebc8eeeec5fb8cf946a9c1fcf44591b 100644
--- a/app/src/main/java/habitat/Piece.java
+++ b/app/src/main/java/habitat/Piece.java
@@ -2,6 +2,10 @@ package habitat;
 
 import android.os.Parcel;
 import android.os.Parcelable;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
 import java.util.ArrayList;
 
 public class Piece implements Parcelable {
@@ -15,8 +19,24 @@ public class Piece implements Parcelable {
         murs = new ArrayList<>(4);
     }
 
+    public Piece(JSONObject jsonObjectPiece){
+        murs = new ArrayList<Mur>();
+        try {
+            nom = (String) jsonObjectPiece.get("Nom");
+            JSONArray Jmurs = jsonObjectPiece.getJSONArray("Murs");
+            for(int j=0; j<4; j++){
+                JSONObject Jmur = Jmurs.getJSONObject(j);
+                Mur mur = new Mur(Jmur);
+                addMur(mur);
+                mur.setHabitat(habitat);
+            }
+        } catch (JSONException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
     protected Piece(Parcel in) {
-        habitat = new Habitat();
+        //habitat = new Habitat();
         nom = new String();
         nom = in.readString();
         murs = new ArrayList<Mur>(4);
@@ -85,4 +105,24 @@ public class Piece implements Parcelable {
             mur.setHabitat(habitat);
         }
     }
+
+    public void addMur(Mur e){
+        murs.add(e);
+        e.setPiece(this);
+    }
+
+    public JSONObject toJSON() {
+        JSONObject jsonObject = new JSONObject();
+        JSONArray jsonArray = new JSONArray();
+        for(Mur mur : murs){
+            jsonArray.put(mur.toJSON());
+        }
+        try {
+            jsonObject.put("Nom", getNom());
+            jsonObject.put("Murs", jsonArray);
+        } catch (JSONException e) {
+            throw new RuntimeException(e);
+        }
+        return jsonObject;
+    }
 }
diff --git a/app/src/main/res/layout/activity_mode_conception.xml b/app/src/main/res/layout/activity_mode_conception.xml
index 6ce396ea6db21ab270516393f14ea8b631597b7b..6c5fad93988d1f7d20af81b7c579be45d619db3a 100644
--- a/app/src/main/res/layout/activity_mode_conception.xml
+++ b/app/src/main/res/layout/activity_mode_conception.xml
@@ -18,16 +18,21 @@
             app:layout_constraintBottom_toBottomOf="parent"
             />
 
-    <LinearLayout
-            android:id="@+id/linearLayout"
-            android:orientation="vertical"
-            android:layout_width="314dp"
-            android:layout_height="596dp"
+    <ScrollView
+            android:id="@+id/scroll"
+            android:layout_width="360dp"
+            android:layout_height="640dp"
             app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintVertical_bias="1.0"
-            android:layout_marginTop="200dp"
+            app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintBottom_toTopOf="@+id/addPiece"
-            app:layout_constraintEnd_toEndOf="parent">
-    </LinearLayout>
+            app:layout_constraintStart_toStartOf="parent">
+
+        <LinearLayout
+                android:id="@+id/linearLayout"
+                android:orientation="vertical"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                >
+        </LinearLayout>
+    </ScrollView>
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file