diff --git a/Succes/code_sample.html b/Succes/code_sample.html
new file mode 100644
index 0000000000000000000000000000000000000000..99da11656ee1de2f8fd309b8bbda73d3649f3687
--- /dev/null
+++ b/Succes/code_sample.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>SVG Test</title>
+        <meta charset="utf-8" />
+    </head>
+    <body>
+        <h2>Test 1</h2>
+        <table>
+            <tr>
+                <td><object data="succes-01.svg" type="image/svg+xml"
+         id="s01" width="256px"></object></td>
+                <td><object data="succes-02.svg" type="image/svg+xml"
+         id="s02" width="256px"></object></td>
+                <td><object data="succes-03.svg" type="image/svg+xml"
+         id="s03" width="256px"></object></td>
+                <!-- ICITE l'élément qu'on modifie -->
+                <td><object type="image/svg+xml" id="bigS" width="512px"></td>
+            </tr>
+            <tr>
+                <td><button id="b1">Doubler</button></td>
+                <td><button id="b2">Doubler</button></td>
+                <td><button id="b3">Doubler</button></td>
+                <td><label for="success">Succès</label><select id="success" name="success"></select>
+                <label for="niveau">Niveau</label><select id="niveau" name="niveau"></select>
+                <label for="nbpoints">Points</label><input name="nbpoints" id="nbpoints" value="25" /></td>
+            </tr>
+        </table>
+        <script>
+            var s1 = document.getElementById("s01");
+            var s2 = document.getElementById("s02");
+            var s3 = document.getElementById("s03");
+
+            document.getElementById("b1").onclick=function(){
+                var text = s1.contentDocument.getElementById("level");
+                text.innerHTML=parseInt(text.innerHTML)*2;
+            };
+            document.getElementById("b2").onclick=function(){
+                var text = s2.contentDocument.getElementById("level");
+                text.innerHTML=parseInt(text.innerHTML)*2;
+            };
+            document.getElementById("b3").onclick=function(){
+                var text = s3.contentDocument.getElementById("level");
+                text.innerHTML=parseInt(text.innerHTML)*2;
+            };
+        //blabla
+        var successTag = document.getElementById('success');
+        var levelTag = document.getElementById('niveau');
+        var pointsTag = document.getElementById('nbpoints');
+        //ICITE l'élément qu'on modifie
+        var badge = document.getElementById('bigS');
+        //ICITE chargement des succès json
+        var successes;
+        fetch("success_list.json")
+        .then(response => response.json())
+        .then(json => init(json));
+
+        //blabla
+        function init(json){
+            successes = json;
+            create_content();
+
+            for (const [succes, content] of Object.entries(successes)) {
+                let opt = document.createElement("option");
+                opt.value = succes; // the index
+                opt.innerHTML = succes;
+                successTag.append(opt);
+            }
+            successTag.onchange = list_levels;
+            levelTag.onchange = create_content;
+            pointsTag.onchange = create_content;
+            badge.onload = update_values;
+        }
+
+        //blabla
+        function list_levels(){
+            levelTag.innerHTML = "";
+            if (successTag.value != "Zero"){
+                for (let i = 0; i <= successes[successTag.value].levels.length +1;i++){
+                    let opt = document.createElement("option");
+                    opt.value = i; // the index
+                    opt.innerHTML = i;
+                    levelTag.append(opt);
+                }
+            }
+            create_content();
+        }
+
+        //Change le texte de l'item
+        function update_values(){
+            let content = parseInt(pointsTag.value);//La nouvelle valeur du contenu (devrait être un paramètre de la fonction plutôt que récupéré)
+            let famille_succes = successTag.value;//La valeur de la famille de succès (devrait être un paramètre de la fonction)
+            let num_succes = parseInt(levelTag.value); //Le numéro du succès dans sa famille (devrait être un paramètre de la fonction)
+            if ((famille_succes != "Zero") &&(num_succes > 0)){
+                //On calcule le ratio des dimension entre les coordonnées dans le svg et l'affichage
+                var svg_spec_width = badge.contentDocument.getElementsByTagName('svg')[0].viewBox.baseVal.width ;
+                var svg_actual_width = badge.getBoundingClientRect().width ;
+                var ratio = svg_spec_width/svg_actual_width ;
+                //On récupère l'élément qui contient le texte
+                var txt = badge.contentDocument.getElementById("level");
+                //On le mesure
+                var w = txt.getBoundingClientRect().width;
+                //On le modifie
+                txt.innerHTML = content;
+                //On le remesure et on modifie la matrice en conséquence pour centrer le texte
+                txt.transform.baseVal[0].matrix.e = txt.transform.baseVal[0].matrix.e - ratio/2 * (txt.getBoundingClientRect().width - w);
+            }
+        }
+
+        //Charge le bon item d'après le json
+        function create_content(){
+            let famille_succes = successTag.value;//La valeur de la famille de succès (devrait être un paramètre de la fonction)
+            let num_succes = parseInt(levelTag.value); //Le numéro du succès dans sa famille (devrait être un paramètre de la fonction)
+            if((famille_succes == "Zero") || (isNaN(num_succes))){
+                badge.data=successes["Zero"];
+            }
+            else if (num_succes > 0) {
+                badge.data = successes[famille_succes].directory+"/"+successes[famille_succes].levels[num_succes - 1];
+            }
+            else{
+                badge.data=successes["Zero"];
+            }
+
+        }
+        </script>
+    </body>
+</html>
diff --git a/Succes/success_list.json b/Succes/success_list.json
index 2cc0b8eef3153049b78bf68b1fb16c24c933d688..584fef6f8b9bdd8c6584f7a1e00fc301c86f4e2d 100644
--- a/Succes/success_list.json
+++ b/Succes/success_list.json
@@ -2,11 +2,6 @@
 	"Zero":"niveau zero/niveau zero__0.svg",
 	"Acolyte":{
 		"directory":"Acolyte anonyme",
-		"transforms":{
-			"1-digit":{"a":1,"b":0,"c":0,"d":1,"e":59.3434,"f":141.8864},
-			"2-digits":{"a":1,"b":0,"c":0,"d":1,"e":52.8488,"f":141.8864},
-			"3-digits":{"a":1,"b":0,"c":0,"d":1,"e":46.3541,"f":141.8864}
-		},
 		"levels":[
 			"Acolyte anonyme__2.svg",
 			"Acolyte anonyme__5.svg",
@@ -18,11 +13,6 @@
 	},
 	"Altruiste":{
 		"directory":"Altruiste",
-		"transforms":{
-			"1-digit":{"a":1,"b":0,"c":0,"d":1,"e":59.3434,"f":141.8862},
-			"2-digits":{"a":1,"b":0,"c":0,"d":1,"e":51.3959,"f":141.8862},
-			"3-digits":{"a":1,"b":0,"c":0,"d":1,"e":44.9013,"f":141.8862}
-		},
 		"levels":[
 			"Altruiste__1.svg",
 			"Altruiste__5.svg",
@@ -34,11 +24,6 @@
 	},
 	"Commentateur":{
 		"directory":"Commentateur sportif",
-		"transforms":{
-			"1-digit":{"a":1,"b":0,"c":0,"d":1,"e":59.3434,"f":141.8863},
-			"2-digits":{"a":1,"b":0,"c":0,"d":1,"e":52.614,"f":141.8863},
-			"3-digits":{"a":1,"b":0,"c":0,"d":1,"e":46.3542,"f":141.8863}
-		},
 		"levels":[
 			"Commentateur sportif__2.svg",
 			"Commentateur sportif__5.svg",
@@ -50,11 +35,6 @@
 	},
 	"Gardien":{
 		"directory":"Gardien du savoir",
-		"transforms":{
-			"1-digit":{"a":1,"b":0,"c":0,"d":1,"e":59.3434,"f":141.8865},
-			"2-digits":{"a":1,"b":0,"c":0,"d":1,"e":51.6065,"f":141.8863},
-			"3-digits":{"a":1,"b":0,"c":0,"d":1,"e":46.3541,"f":141.8865}
-		},
 		"levels":[
 			"Gardien du savoir__1.svg",
 			"Gardien du savoir__10.svg",
@@ -65,11 +45,6 @@
 	},
 	"Labelliciste":{
 		"directory":"Labelliciste",
-		"transforms":{
-			"1-digit":{"a":1,"b":0,"c":0,"d":1,"e":58.2184,"f":141.8865},
-			"2-digits":{"a":1,"b":0,"c":0,"d":1,"e":45.324,"f":141.8865},
-			"3-digits":{"a":1,"b":0,"c":0,"d":1,"e":40.0716,"f":141.8865}
-		},
 		"levels":[
 			"Labelliciste__1.svg",
 			"Labelliciste__5.svg",
@@ -81,11 +56,6 @@
 	},
 	"TimeMaster":{
 		"directory":"Maitre du temps",
-		"transforms":{
-			"1-digit":{"a":1,"b":0,"c":0,"d":1,"e":56.8422,"f":138.8785},
-			"2-digits":{"a":1,"b":0,"c":0,"d":1,"e":51.5605,"f":138.8785},
-			"3-digits":{"a":1,"b":0,"c":0,"d":1,"e":46.5605,"f":138.8785}
-		},
 		"levels":[
 			"Maitre du temps__2.svg",
 			"Maitre du temps__5.svg",
@@ -96,11 +66,6 @@
 	},
 	"Messager":{
 		"directory":"Messager",
-		"transforms":{
-			"1-digit":{"a":1,"b":0,"c":0,"d":1,"e":58.2183,"f":141.8865},
-			"2-digits":{"a":1,"b":0,"c":0,"d":1,"e":51.6065,"f":141.8865},
-			"3-digits":{"a":1,"b":0,"c":0,"d":1,"e":46.3736,"f":141.8865}
-		},
 		"levels":[
 			"Messager__1.svg",
 			"Messager__5.svg",
@@ -112,11 +77,6 @@
 	},
 	"Vocabulord":{
 		"directory":"Vocabulord",
-		"transforms":{
-			"1-digit":{"a":1,"b":0,"c":0,"d":1,"e":59.3433,"f":141.8865},
-			"2-digits":{"a":1,"b":0,"c":0,"d":1,"e":52.8194,"f":141.8865},
-			"3-digits":{"a":1,"b":0,"c":0,"d":1,"e":46.3541,"f":141.8865}
-		},
 		"levels":[
 			"Vocabulord__1.svg",
 			"Vocabulord__10.svg",