diff --git a/Assets/ChargementJSONStructure.cs b/Assets/ChargementJSONStructure.cs
index 04a06bccd7bf13a1d550c38798661fee9b928275..eee6c3e4aa095897371d54cfae482099cb978d85 100644
--- a/Assets/ChargementJSONStructure.cs
+++ b/Assets/ChargementJSONStructure.cs
@@ -62,6 +62,8 @@ public class ChargementJSONStructure : MonoBehaviour
         public string desc;
         public string modalite;
         public string consigne;
+        public bool randomiser;
+        public int nbItemsMax;
         public List<EpreuveItem> items;
     }
 
diff --git a/Assets/Resources/C.Ph_rimes.json b/Assets/Resources/C.Ph_rimes.json
index 2d843fc0c363ebbb24080ef3d53591d47888a400..0b1e2ac32f9c34cd5cb66810f7c54adcf2848a53 100644
--- a/Assets/Resources/C.Ph_rimes.json
+++ b/Assets/Resources/C.Ph_rimes.json
@@ -1311,7 +1311,8 @@
 					"desc": "Le sujet entend un mot et choisit celui qui rime avec parmi les propositions",
 					"fond": "M.K.BlKtchn",
 					"consigne": "consRime",
-					"randomiser": false,
+					"randomiser": true,
+					"nbItemsMax":2,
 					"items": [
 						{
 							"id": "tuto_rime",
diff --git a/Assets/mainManager.cs b/Assets/mainManager.cs
index 16c56d921e9fd8dff43e8db9574e410ece6d0962..c705d9e09567c5501a0fa026a6adcc3619a988ac 100644
--- a/Assets/mainManager.cs
+++ b/Assets/mainManager.cs
@@ -213,6 +213,8 @@ public class mainManager : MonoBehaviour
         }
        
     }
+    private bool epreuveitemscurrentSet = false;
+    private List<EpreuveItem> epreuvesitemsCurrent;
     public void playSteps()
     {
         // boutonnext cheat 
@@ -227,7 +229,24 @@ public class mainManager : MonoBehaviour
 
         s = jsonStructureScript.data.sessions[currentSession];
         e = s.epreuves[currentEpreuve];
-        i = e.items[currentItem];
+
+        if (!epreuveitemscurrentSet)
+        {
+            Debug.Log("A");
+            epreuvesitemsCurrent = e.items;
+            //int rand = UnityEngine.Random.Range(-1, 2);
+            epreuvesitemsCurrent.Sort((a, b) => UnityEngine.Random.Range(-1, 2));
+            epreuveitemscurrentSet = true;
+            if(e.nbItemsMax == 0)
+            {
+                e.nbItemsMax = e.items.Count;
+                Debug.Log("B");
+
+            }
+            Debug.Log("C" + e.nbItemsMax);
+
+        }
+        i = epreuvesitemsCurrent[currentItem];
 
         if (e.modalite == "GD")
         {
@@ -244,8 +263,10 @@ public class mainManager : MonoBehaviour
         {
             Destroy(posScript.currentlyInstanciatedImageEpreuveCentered.gameObject);
         }
-        if (currentItem >= e.items.Count - 1)
+        Debug.Log("currentItem=" + currentItem + " e.nbItemsMax=" + e.nbItemsMax);
+        if ((currentItem >= epreuvesitemsCurrent.Count - 1) ||(currentItem>=e.nbItemsMax-1) )
         {
+            Debug.Log("end");
             // pas d'autre liste d'items dans cette epreuve
             // on regarde s'il y a une autre epreuve dans la même session à lancer
             if (currentEpreuve >= s.epreuves.Count - 1)
@@ -257,12 +278,11 @@ public class mainManager : MonoBehaviour
             {
                 currentItem = 0;
                 currentEpreuve++;
+                epreuveitemscurrentSet = false;
                 epreuveConsignebeenPlayed = false;
                 current_step = -1;
-                e = s.epreuves[currentEpreuve];
-                i = e.items[currentItem];
-                Debug.LogError("reinit with new epreuve");
-                Debug.Log("i=" + i + " currentItem=" + currentItem + " current_step=" + current_step);
+ 
+               
                 resetItem();
                 playSteps();
             }
@@ -273,7 +293,7 @@ public class mainManager : MonoBehaviour
             // il y a une autre liste d'items dans cette epreuve, on la charge
             Debug.LogError("reinit with new item");
             currentItem++;
-            i = e.items[currentItem];
+            i = epreuvesitemsCurrent[currentItem];
             Debug.Log("i=" + i+ " currentItem="+ currentItem+ " current_step="+ current_step);
             current_step = -1;
             resetItem();
@@ -575,9 +595,7 @@ public class mainManager : MonoBehaviour
         currentSession++;
         epreuveConsignebeenPlayed = false;
         current_step = -1;
-        s = jsonStructureScript.data.sessions[currentSession];
-        e = s.epreuves[currentEpreuve];
-        i = e.items[currentItem];
+        
         playSteps();
         gameObjFin.SetActive(false);