diff --git a/Motus/Main.qml b/Motus/Main.qml
index fae6a888e0f20d2f6ab3a8c4c18001ac4733e729..58f9e3ae46e6270949927c71130ad1664be93039 100644
--- a/Motus/Main.qml
+++ b/Motus/Main.qml
@@ -25,6 +25,16 @@ Window {
     property string mot: ""
     property var mot_split: []
 
+    property var keysArray: []
+
+    function changeKeyColor(letter, newColor) {
+        for (var i = 0; i < keysArray.length; i++) {
+            if (keysArray[i].keyLetter === letter) {
+                keysArray[i].keyColor = newColor;
+            }
+        }
+    }
+
     // Rectangle principal qui couvre la fenêtre
     Rectangle {
         id: mainRect
@@ -57,21 +67,45 @@ Window {
                 else if (event.key === Qt.Key_Return) {
                     // On ne passe à la ligne suivante que si la ligne est complètement remplie
                     if (indice_case === nb_lettres) {
-                        var mot_entre = "";
+                        // Construire le mot entré en majuscules
+                        var candidate = [];
                         for (var i = 0; i < nb_lettres; i++){
-                            mot_entre += caseArray[current_essai * nb_lettres + i]._textText;
+                            candidate[i] = caseArray[current_essai * nb_lettres + i]._textText.toUpperCase();
                         }
+<<<<<<< Updated upstream
                         console.log("Mot entré :", mot_entre.toUpperCase());
                         if (motusGame.existWord(mot_entre.toUpperCase())){
 
                             // Vérification de la proposition sur la ligne actuelle
+=======
+                        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 = {};
+>>>>>>> Stashed changes
                             for (var i = 0; i < nb_lettres; i++) {
-                                var case_verif = caseArray[current_essai * nb_lettres + i];
-                                var lettre_verif = case_verif._textText;
-                                if (lettre_verif === mot_split[i].toUpperCase()) {
-                                    case_verif.rectangleColor = "#42cc3d";
-                                    case_verif.rectangleBordercolor = "#42cc3d";
+                                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 (chaine 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 {
+<<<<<<< Updated upstream
                                     for (var j = 0; j < nb_lettres; j++) {
 
                                         if (lettre_verif === mot_split[j].toUpperCase()) {
@@ -101,17 +135,48 @@ Window {
                             }
 
                             // Passage à la ligne suivante si possible
+=======
+                                    resultColors[i] = ""; // ne pas modifier le style
+                                }
+                            }
+
+                            // 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] === "") { // lettre non marquée en vert
+                                    var letter = candidate[i];
+                                    if (targetCounts[letter] && targetCounts[letter] > 0) {
+                                        resultColors[i] = "#f0d437"; // jaune
+                                        targetCounts[letter]--;
+                                    }
+                                    // Sinon, resultColors[i] reste vide pour conserver le style de base
+                                }
+                            }
+
+                            // Appliquer les couleurs aux cases et aux touches uniquement si une couleur est 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
+>>>>>>> Stashed changes
                             if (current_essai < nb_essais - 1) {
                                 current_essai++;
                                 indice_case = 0;
+                                case_focus = caseArray[current_essai * nb_lettres];
                             } else {
-                                // Fin de partie : vous pouvez désactiver l'interface ou afficher un message
+                                // Fin de partie : désactiver l'interface ou afficher un message
                                 mot = "";
                             }
                         } else {
-                            // Le mot n'existe pas dans le dictionnaire : coloration en rouge puis réinitialisation
-                            for (i = 0; i < nb_lettres; i++) {
-                                case_verif = caseArray[current_essai * nb_lettres + i];
+                            // 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";
                             }
@@ -120,6 +185,7 @@ Window {
                         event.accepted = true;
                     }
                 }
+
             }
         }
         // Disposition globale en colonne
@@ -153,7 +219,6 @@ Window {
                 anchors.verticalCenter: parent.verticalCenter
                 anchors.left: parent.left
                 anchors.leftMargin: 0.05*Window.width
-                anchors.verticalCenterOffset: 20
 
                 Column {
                     id: column_buttons
@@ -383,9 +448,10 @@ Window {
                                         delegate: Rectangle {
                                             width: (modelData === "Entrée" || modelData === "<") ? 80 : 50
                                             height: 60
-                                            color: "#808080"
+                                            color: keyColor                      // Lier la couleur affichée à keyColor
                                             radius: 5
-                                            border.color: "#808080"
+                                            border.color: keyColor                // Pareil pour la bordure
+
                                             Text {
                                                 anchors.centerIn: parent
                                                 text: modelData
@@ -415,14 +481,16 @@ Window {
                                                     }
                                                 }
                                             }
+                                            Component.onCompleted: {
+                                                // Enregistrer chaque touche dans keysArray pour y accéder plus tard
+                                                mainWindow.keysArray.push(keyRect)
+                                            }
                                         }
                                     }
                                 }
                             }
                         }
                     }
-
-
                 }
             }