diff --git a/Motus/Main.qml b/Motus/Main.qml
index 0388313b62c19c183b0da087ba88f3ad1cb5c699..fce82e3dd147f779e46a2df1cd014034053618c3 100644
--- a/Motus/Main.qml
+++ b/Motus/Main.qml
@@ -477,21 +477,117 @@ Window {
                                             MouseArea {
                                                 anchors.fill: parent
                                                 cursorShape: Qt.PointingHandCursor
-                                                onClicked: {
-                                                    if (modelData === "<") {
-                                                        if (indice_case > 0) {
-                                                            indice_case--;
-                                                            caseArray[indice_case]._textText = "";
-                                                            case_focus = caseArray[indice_case];
+                                                onClicked: {                                                    
+                                                    if (mot !== "" && !motusGame.loosetry && !motusGame.win && !motusGame.loosetime) {
+
+                                                        // Gestion de la touche Backspace
+                                                        if (modelData === "<") {
+                                                            if (indice_case > 0) {
+                                                                indice_case--;
+                                                                var cellIndex = current_essai * nb_lettres + indice_case;
+                                                                caseArray[cellIndex]._textText = "";
+                                                                event.accepted = true;
+                                                            }
                                                         }
-                                                    } else if (modelData === "↑") {
-                                                        // Action pour la touche "↑" si nécessaire
-                                                    } else {
-                                                        if (indice_case < caseArray.length) {
-                                                            caseArray[indice_case]._textText = modelData.toUpperCase();
-                                                            indice_case++;
-                                                            if (indice_case < caseArray.length)
-                                                                case_focus = caseArray[indice_case];
+                                                        // Passage à la ligne suivante avec la touche Entrée
+                                                        else if (modelData === "↑") {
+                                                            if (indice_case === nb_lettres) {
+                                                                // Construire le mot entré en majuscules
+                                                                var candidate = [];
+                                                                for (var i = 0; i < nb_lettres; i++){
+                                                                    candidate[i] = caseArray[current_essai * nb_lettres + i]._textText.toUpperCase();
+                                                                }
+                                                                var mot_entre = candidate.join("");
+                                                                console.log("Mot entré :", mot_entre);
+
+                                                                if (motusGame.existWord(mot_entre)) {
+                                                                    // Le mot existe, on procède à l'évaluation avec gestion des doublons
+                                                                    var target = mot_split.map(function(letter) {
+                                                                        return letter.toUpperCase();
+                                                                    });
+
+                                                                    // Construire un tableau de fréquence des lettres du mot cible
+                                                                    var targetCounts = {};
+                                                                    for (var i = 0; i < nb_lettres; i++) {
+                                                                        var letter = target[i];
+                                                                        targetCounts[letter] = (targetCounts[letter] || 0) + 1;
+                                                                    }
+
+                                                                    // Tableau pour stocker la couleur à appliquer pour chaque case.
+                                                                    // Par défaut, on ne change pas le style (chaîne vide)
+                                                                    var resultColors = new Array(nb_lettres);
+
+                                                                    // Première passe : marquer en vert les lettres bien placées
+                                                                    for (var i = 0; i < nb_lettres; i++) {
+                                                                        if (candidate[i] === target[i]) {
+                                                                            resultColors[i] = "#42cc3d"; // vert
+                                                                            targetCounts[candidate[i]]--;
+                                                                        } else {
+                                                                            resultColors[i] = "";
+                                                                        }
+                                                                    }
+
+                                                                    // Vérifier si le mot entré correspond exactement au mot à deviner
+                                                                    if (mot_entre.toUpperCase() === mot.toUpperCase()) {
+                                                                        motusGame.setWinbool(true);
+                                                                        console.log("✅ Victoire !");
+                                                                    }
+
+                                                                    // Deuxième passe : marquer en jaune les lettres présentes mais mal placées
+                                                                    for (var i = 0; i < nb_lettres; i++) {
+                                                                        if (resultColors[i] === "") {
+                                                                            var letter = candidate[i];
+                                                                            if (targetCounts[letter] && targetCounts[letter] > 0) {
+                                                                                resultColors[i] = "#f0d437"; // jaune
+                                                                                targetCounts[letter]--;
+                                                                            }
+                                                                        }
+                                                                    }
+
+                                                                    // Appliquer les couleurs aux cases et aux touches si une couleur a été définie
+                                                                    for (var i = 0; i < nb_lettres; i++) {
+                                                                        var case_verif = caseArray[current_essai * nb_lettres + i];
+                                                                        if (resultColors[i] !== "") {
+                                                                            case_verif.rectangleColor = resultColors[i];
+                                                                            case_verif.rectangleBorderColor = resultColors[i];
+                                                                            changeKeyColor(candidate[i], resultColors[i]);
+                                                                        }
+                                                                    }
+
+                                                                    // Passage à la ligne suivante et mise à jour du focus
+                                                                    if (current_essai < nb_essais - 1) {
+                                                                        current_essai++;
+                                                                        indice_case = 0;
+                                                                        case_focus = caseArray[current_essai * nb_lettres];
+                                                                    } else {
+                                                                        // Fin de partie : désactiver l'interface ou afficher un message
+                                                                        if (mot_entre.toUpperCase() !== mot.toUpperCase()) {
+                                                                            motusGame.setLoosetrybool(true);
+                                                                            console.log("loosetry=true");
+                                                                        }
+
+                                                                    }
+                                                                }
+
+
+                                                                else {
+                                                                    // Le mot n'existe pas dans le dictionnaire : colorer toute la ligne en rouge
+                                                                    for (var i = 0; i < nb_lettres; i++) {
+                                                                        var case_verif = caseArray[current_essai * nb_lettres + i];
+                                                                        case_verif.rectangleColor = "#cf1b2a";
+                                                                        case_verif.rectangleBorderColor = "#cf1b2a";
+                                                                    }
+                                                                    revertTimer.start();
+                                                                }
+                                                            }
+                                                        }
+                                                        // Saisie d'une lettre (de A à Z)
+                                                        else{
+                                                            if (indice_case < nb_lettres) {
+                                                                var cellIndex = current_essai * nb_lettres + indice_case;
+                                                                caseArray[cellIndex]._textText = modelData.toUpperCase();
+                                                                indice_case++;
+                                                            }
                                                         }
                                                     }
                                                 }