diff --git a/Motus/Main.qml b/Motus/Main.qml
index a620209985f90c6ad12c5500b4c85e88db964e93..3bba851e9da57f2106f1667ebe33370062e8021f 100644
--- a/Motus/Main.qml
+++ b/Motus/Main.qml
@@ -18,6 +18,7 @@ Window {
     property var case_focus: null
     property int current_essai: 0
     property int indice_case: 0
+    property bool statsUpdated: false
 
     property string mot: ""
     property var mot_split: []
@@ -44,7 +45,11 @@ Window {
     function refreshStatsDisplay() {
         var globalStats = motusGame.getGlobalStats("Combined");
         partiesJouees.text = "Parties jouées : " + globalStats.totalGames;
-        victoires.text = "Victoires : " + globalStats.totalWins;
+        var globalWinPercentage = 0;
+        if (globalStats.totalGames > 0) {
+            globalWinPercentage = Math.round((globalStats.totalWins / globalStats.totalGames) * 100);
+        }
+        victoires.text = "Taux de réussite : " + globalWinPercentage + "%";
         winStreakActuel.text = "Win Streak Actuel : " + globalStats.currentWinStreak;
         meilleurStreak.text = "Meilleur Streak : " + globalStats.bestWinStreak;
 
@@ -52,7 +57,11 @@ Window {
         tempsMoyen.text = "Temps moyen : " + localStats.averageTime + " sec";
         meilleurTemps.text = "Meilleur temps : " + localStats.bestTime + " sec";
         partiesJoueesLocal.text = "Parties jouées : " + localStats.gamesPlayed;
-        partiesGagnees.text = "Parties gagnées : " + localStats.gamesWon;
+        var localWinPercentage = 0;
+        if (localStats.gamesPlayed > 0) {
+            localWinPercentage = Math.round((localStats.gamesWon / localStats.gamesPlayed) * 100);
+        }
+        partiesGagnees.text = "Taux de réussite : " + localWinPercentage + "%";
         winStreakActuelLocal.text = "Win Streak Actuel : " + localStats.currentWinStreak;
         meilleurStreakLocal.text = "Meilleur Streak : " + localStats.bestWinStreak;
         // Mise à jour de l'histogramme via la nouvelle propriété "histData"
@@ -61,6 +70,10 @@ Window {
 
     // Fonction de mise à jour des statistiques à la fin d'une partie
     function updateGameStats() {
+        if (statsUpdated)
+            return;
+
+        statsUpdated = true;  // On indique qu'on a déjà mis à jour les stats.
         var lang = (motusGame.dictionnaryChoosed.indexOf("francais") >= 0) ? "French" : "English";
         var letterCount = nb_lettres;
         var won = motusGame.win;
@@ -207,7 +220,6 @@ Window {
                                 Rectangle {
                                     width: 20
                                     height: histogramRow.maxValue > 0 ? Math.max(10, Math.round((histogramRow.histData[index] / histogramRow.maxValue) * 200)) : 10
-                                    // Vous pouvez personnaliser la couleur en fonction de l'index si besoin
                                     color: "#4a4a4a"
                                     border.width: 1
                                     border.color: "white"
@@ -358,6 +370,7 @@ Window {
                         cursorShape: Qt.PointingHandCursor
                         enabled: motusGame && (motusGame.win || motusGame.loosetry || motusGame.looseabandon || motusGame.loosetime || !motusGame.debut)
                         onClicked: {
+                            statsUpdated = false;
                             current_essai = 0;
                             indice_case = 0;
                             // Réinitialisation de la grille et des touches
@@ -376,6 +389,12 @@ Window {
                             motusGame.setLoosetimebool(false);
                             motusGame.setLooseabandonbool(false);
                             motusGame.setWinbool(false);
+
+                            // Système d'adaptation du chrono :
+                            // Ici, on définit par exemple 10 secondes de temps par lettre.
+                            var baseTimePerLetter = 10;
+                            motusGame.duree_timer = nb_lettres * baseTimePerLetter;
+
                             motusGame.startTimer();
                             mot_split = mot.split("");
                         }
@@ -426,8 +445,8 @@ Window {
                                     choosebutton._textText = "Générer un mot";
                                     text_langue.text = "Langage";
                                     text_choix_nb_lettres.text = "Nombre de lettres";
-                                    text_stats.text = "Statistiques"
-                                    text_abandon.text = "Abandonner"
+                                    text_stats.text = "Statistiques";
+                                    text_abandon.text = "Abandonner";
                                     numberLetterBtn.firstItemText = "5";
                                 }
                             }
@@ -449,8 +468,8 @@ Window {
                                     choosebutton._textText = "Generate a word";
                                     text_langue.text = "Language";
                                     text_choix_nb_lettres.text = "Number of letters";
-                                    text_stats.text = "Statistics"
-                                    text_abandon.text = "Abandon"
+                                    text_stats.text = "Statistics";
+                                    text_abandon.text = "Abandon";
                                     numberLetterBtn.firstItemText = "5";
                                 }
                             }
@@ -548,7 +567,6 @@ Window {
 
                             onCurrentIndexChanged: {
                                 nb_lettres = parseInt(model[currentIndex]);
-                                //console.log("nb_lettres =", nb_lettres);
                                 // Mettre à jour nb_essais en fonction de nb_lettres
                                 if (nb_lettres == 4)
                                     nb_essais = 5;
@@ -559,7 +577,6 @@ Window {
                                 else
                                     nb_essais = 8;
                                 caseRepeater.model = nb_lettres * nb_essais;
-                                //console.log("Grille de", caseRepeater.model, "cases");
                                 caseArray = [];
                                 for (var i = 0; i < caseRepeater.count; i++) {
                                     caseArray.push(caseRepeater.itemAt(i));