diff --git a/motus/CMakeLists.txt b/motus/CMakeLists.txt
index a166b2f1b3f9a1ffd8a0672b734250b735018d59..0a2d9ef52bc906bcef8e55986d0e51c3be8a9a9c 100644
--- a/motus/CMakeLists.txt
+++ b/motus/CMakeLists.txt
@@ -36,6 +36,7 @@ qt_add_qml_module(appmotus
         QML_FILES GameWindow.qml
         SOURCES jeu.h jeu.cpp
         SOURCES grillemanager.h grillemanager.cpp
+        QML_FILES Case.qml
 )
 
 # Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
diff --git a/motus/Case.qml b/motus/Case.qml
new file mode 100644
index 0000000000000000000000000000000000000000..0fb3e0011586ea2cd719f0049546eae2d4bee6b8
--- /dev/null
+++ b/motus/Case.qml
@@ -0,0 +1,21 @@
+import QtQuick
+
+Rectangle {
+    width: 50
+    height: 50
+    radius: 5
+    color: etat === 0 ? "#ffffff" : etat === 1 ? "#fdd835" : "#66bb6a"
+    border.color: "#000000"
+    border.width: 1
+
+    property string letter: ""
+    property int etat: 0
+
+    Text {
+        anchors.centerIn: parent
+        text: letter
+        font.pixelSize: 24
+        font.bold: true
+        color: "#000"
+    }
+}
diff --git a/motus/GameWindow.qml b/motus/GameWindow.qml
index 65ce47a22d6177aed576d3fa59bf91efb07d9c5d..252fa0d20ac464aedf99ff525d239574f033518f 100644
--- a/motus/GameWindow.qml
+++ b/motus/GameWindow.qml
@@ -3,6 +3,9 @@
 
 import QtQuick
 
+
+
+
 Item {
     width: 900
     height: 800
@@ -11,31 +14,25 @@ Item {
         id: rectangle
         color: "#ffffff"
         anchors.fill: parent
-
         Grid {
-                id: gridView
-                anchors.top: parent.top
-                anchors.left: parent.left
-                columns: 5
-                spacing: 5
-
-                Repeater {
-                    model: grilleManager.cases
-                    Rectangle {
-                        width: 50
-                        height: 50
-                        color: modelData.etat === 0 ? "lightgray" :
-                               modelData.etat === 1 ? "yellow" : "green"
-                        border.color: "black"
-
-                        Text {
-                            anchors.centerIn: parent
-                            text: modelData.letter
-                            font.bold: true
-                        }
-                    }
+            id: grille
+            anchors.top: parent.top
+            anchors.topMargin: 50
+            anchors.horizontalCenter: parent.horizontalCenter
+            rows: 6
+            columns: 5
+            spacing: 5
+
+            Repeater {
+                model: jeu.grilleManager.cases
+
+                delegate: Case {
+                    letter: modelData.letter
+                    etat: modelData.etat
                 }
             }
+        }
+
 
         Clavier {
             id: clavier
@@ -44,3 +41,4 @@ Item {
         }
     }
 }
+
diff --git a/motus/Main.qml b/motus/Main.qml
index 967f86e253296349de04ea613e3cc297b54db94d..21723aba930ba8ee1f01b750f402186c0f924994 100644
--- a/motus/Main.qml
+++ b/motus/Main.qml
@@ -39,7 +39,7 @@ Window {
         y: 624
         mouseArea.onClicked:{
             pageLoader.source = "GameWindow.qml";
-            jeu.initGame();
+            jeu.startGame();
         }
     }
     
diff --git a/motus/Resources.qrc b/motus/Resources.qrc
index 90f00a4f4f44de866ea813758f297cf9733984d0..00e9bc39fd009e4ecce81536b0c23265754476c8 100644
--- a/motus/Resources.qrc
+++ b/motus/Resources.qrc
@@ -7,5 +7,6 @@
         <file>bouton.qml</file>
         <file>Bouton.qml</file>
         <file>GameWindow.qml</file>
+        <file>Case.qml</file>
     </qresource>
 </RCC>
diff --git a/motus/jeu.cpp b/motus/jeu.cpp
index e077dc3f39f099fa8a9769ed34d43073a23c6c19..1f788ce662c5ec42727cba6a75f155295ff3dda9 100644
--- a/motus/jeu.cpp
+++ b/motus/jeu.cpp
@@ -2,10 +2,7 @@
 #include <iostream>
 
 Jeu::Jeu(QObject *parent) : QObject(parent), brain("./") {
-    brain.setFichierDico("words_alpha.txt");
-    brain.setNombreEssais(5);
-    brain.setTailleMots(5);
-    brain.initGame();
+
 
     mot = QString::fromStdString(brain.getMot()); // ✅ Conversion std::string → QString
 
@@ -30,3 +27,15 @@ void Jeu::onClavierClick(QString lettre) {
 void Jeu::initGame() {
     brain.initGame();
 }
+
+
+void Jeu::startGame() {
+    brain.setFichierDico("words_alpha.txt");
+
+    brain.setNombreEssais(6); // ou ce que tu veux
+    brain.setTailleMots(5);   // idem
+
+    brain.initGame();
+
+    grilleManager.createGrid(6, 5); // à synchroniser avec les paramètres du brain
+}
diff --git a/motus/jeu.h b/motus/jeu.h
index bf308bf4618bc6aa95a182e0738f0192180f84d0..c654e817be3193ab9b0c901e558827f4f3698414 100644
--- a/motus/jeu.h
+++ b/motus/jeu.h
@@ -3,16 +3,21 @@
 
 #include <QObject>
 #include "brain.h"
+#include "grillemanager.h"
 
 class Jeu : public QObject {
     Q_OBJECT
     Q_PROPERTY(QString motAffiche READ getMotAffiche NOTIFY motChanged)
+    Q_PROPERTY(GrilleManager* grilleManager READ getGrilleManager CONSTANT)
 
 public:
     explicit Jeu(QObject *parent = nullptr);
     QString getMotAffiche();
     Q_INVOKABLE void onClavierClick(QString lettre);
     Q_INVOKABLE void initGame();
+    Q_INVOKABLE void startGame(); // pour init depuis QML
+    GrilleManager* getGrilleManager() { return &grilleManager; }
+
 
 signals:
     void motChanged();
@@ -20,6 +25,7 @@ signals:
 private:
     Brain brain;
     QString mot;
+    GrilleManager grilleManager; // <- On le garde en vie ici
 };
 
 #endif // JEU_H
diff --git a/motus/main.cpp b/motus/main.cpp
index bc6161ea35d4fefbb962ae21b11e812f59695384..6fef187ccce7f913c9453b9b29bc3132a2ce8aee 100644
--- a/motus/main.cpp
+++ b/motus/main.cpp
@@ -13,9 +13,6 @@ int main(int argc, char *argv[]) {
     qmlRegisterType<VraieCase>("motus", 1, 0, "VraieCase");
     qmlRegisterType<GrilleManager>("motus", 1, 0, "GrilleManager");
 
-    GrilleManager grilleManager;
-    engine.rootContext()->setContextProperty("grilleManager", &grilleManager);
-
     Jeu jeu;
     engine.rootContext()->setContextProperty("jeu", &jeu);