diff --git a/motus/CMakeLists.txt b/motus/CMakeLists.txt
index 7a913d9622fde97304528820dfe73bfb4327ed09..bd2571fbcdc12fb73f708f2c4fe8716376274d78 100644
--- a/motus/CMakeLists.txt
+++ b/motus/CMakeLists.txt
@@ -35,7 +35,7 @@ qt_add_qml_module(appmotus
         RESOURCES
         QML_FILES GameWindow.qml
         SOURCES jeu.h jeu.cpp
-        SOURCES grillemanager.h grillemanager.cpp
+        SOURCES
         QML_FILES Case.qml
         QML_FILES Grille.qml
         SOURCES lettermodel.h lettermodel.cpp
diff --git a/motus/GameWindow.qml b/motus/GameWindow.qml
index 79a13687f694a526559a623c1ed3c5aeb092f0a7..c12e87f21e57f08ece434a781501dbcfc8961fcc 100644
--- a/motus/GameWindow.qml
+++ b/motus/GameWindow.qml
@@ -11,28 +11,20 @@ Item {
         anchors.fill: parent
 
         Grid {
-            id: letterGrid
-            columns: 8
+            id: grid
+            columns: 5
             rows: 5
-            spacing: 4
-            anchors.centerIn: parent
-            width: 600
-            height: 400
+            spacing: 5
 
             Repeater {
-                model: letterModel  // <-- C++ ListModel exposé ici
-                delegate: Rectangle {
-                    width: 60
-                    height: 60
-                    color: "#dddddd"
-                    border.color: "#888"
-                    radius: 5
-
-                    Text {
-                        anchors.centerIn: parent
-                        text: model.letter
-                        font.pixelSize: 24
-                    }
+                model: grid.columns * grid.rows
+                Rectangle {
+                    id: cell
+                    width: 50
+                    height: 50
+                    color: "lightgray"
+                    border.color: "black"
+                    objectName: "cell_" + index % grid.columns + "_" + Math.floor(index / grid.columns)
                 }
             }
         }
diff --git a/motus/Main.qml b/motus/Main.qml
index 8d38be1289ebd863a0b8a5da2c3fb2df40a077a0..94633b495a9ba6822e2f04261b725e58f6970bff 100644
--- a/motus/Main.qml
+++ b/motus/Main.qml
@@ -46,12 +46,5 @@ Window {
         id: pageLoader
         anchors.centerIn: parent
 
-        // Once the page is loaded, notify C++
-        onItemChanged: {
-            if (item) {
-                // Call a function in C++ and pass the root item of GameWindow
-                jeu.setGameWindowItem(item);
-            }
-        }
     }
 }
diff --git a/motus/brain.cpp b/motus/brain.cpp
index 985ad217bbe958e9d4c9b582da0dbcf8926a2360..539cc2075c879dc868cd3fb67b61c8fffd3bc9a3 100644
--- a/motus/brain.cpp
+++ b/motus/brain.cpp
@@ -3,7 +3,6 @@
 #include <random>
 #include <iostream>
 #include <filesystem>
-#include "grillemanager.h"
 #include "fullligneexception.h"
 #include <QString>
 
@@ -13,12 +12,20 @@ namespace fs = std::filesystem;
 #include "nowordexception.h"
 #include "brain.h"
 
-Brain::Brain(QQmlComponent *grilleComponent, string dicodir, QQuickItem * parentItem) : dicodir(dicodir), parentItem(parentItem), grilleComponent(grilleComponent) {
+Brain::Brain(string dicodir) : dicodir(dicodir) {
     vector<string> files = getTxtFiles();
     // TODO
     // Initialise le menu déroulant avec files
 }
 
+string Brain::getGrid() {
+    string res = "";
+    for (int i=0;i<mNbEssaisMax;i++) {
+        res += lignes[i]->getMot();
+    }
+    return res;
+}
+
 vector<string> Brain::getTxtFiles() {
     vector<string> txtFiles;
 
@@ -103,8 +110,6 @@ void Brain::initGame() {
 
         // Convertir std::string (getMot()) en QString
         QString motQString = QString::fromStdString(getMot());  // Conversion de std::string en QString
-        GrilleManager grille(motQString);  // Passer le QString à GrilleManager
-        grille.createGrid(grilleComponent, parentItem,this, mNbEssaisMax, mTailleMot);  // Créer la grille
     } catch (NoWordException e) {
         cout << e.what() << endl;
     }
diff --git a/motus/brain.h b/motus/brain.h
index 1db79ebe0d365a80bcbf634384cc51c70a2b21ba..9f0ffe35dad84bdbdbb03be9c754713258f33937 100644
--- a/motus/brain.h
+++ b/motus/brain.h
@@ -13,7 +13,7 @@ using namespace std;
 class Brain
 {
 public:
-    Brain(QQmlComponent *grilleComponent, string dicodir, QQuickItem * parentItem);
+    Brain(string dicodir);
     void trouveMot();
     void setFichierDico(string fichierDico);
     void setNombreEssais(int nbEssais);
@@ -25,6 +25,7 @@ public:
     vector<string> getTxtFiles();
     void entreLettre(char lettre);
     void supprLettre();
+    string getGrid();
     vector<Ligne*> lignes;
 
 private:
@@ -35,8 +36,6 @@ private:
     int nbEssais;
     int mTailleMot;
     map<char, int> lettres;
-    QQuickItem * parentItem;
-    QQmlComponent *grilleComponent;
 };
 
 #endif // BRAIN_H
diff --git a/motus/grillemanager.cpp b/motus/grillemanager.cpp
deleted file mode 100644
index 5f99dfb817a839a25add69dbc9135f19769a4492..0000000000000000000000000000000000000000
--- a/motus/grillemanager.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "grillemanager.h"
-
-GrilleManager::GrilleManager(const QString &mot, QObject *parent)
-    : QObject(parent), m_mot(mot) {}
-
-void GrilleManager::createGrid(QQmlComponent *grilleComponent, QQuickItem * parentItem,Brain* brain, int rows, int columns) {
-    m_cases.clear();  // Vide la grille avant de la remplir
-
-    // Remplir la grille avec des cases
-    for (int i = 0; i < rows * columns; ++i) {
-        VraieCase* lacase = brain->lignes[i / columns]->contenu[i % columns];
-
-        // Si on est à la première case, on met la première lettre du mot, sinon on met '_'
-        if (i < m_mot.length()) {
-            lacase->setLetter(m_mot[i]);  // Conversion automatique depuis QString
-        } else {
-            lacase->setLetter(QString("_"));  // Conversion du char '_' en QString
-        }
-
-        m_cases.append(lacase);
-    }
-
-
-    // context->setContextProperty("jeu", jeu);
-
-    if (grilleComponent->status() == QQmlComponent::Ready) {
-        QObject *object = grilleComponent->create();
-        QQuickItem *item = qobject_cast<QQuickItem *>(object);
-        if (item) {
-            // Add it to the parent item
-            item->setParentItem(parentItem);
-        }
-    } else {
-        qWarning() << "Failed to load QML component:" << grilleComponent->errorString();
-    }
-
-    emit casesChanged();  // Émettre le signal pour indiquer que la grille a changé
-}
-
-QQmlListProperty<VraieCase> GrilleManager::getCases() {
-    return QQmlListProperty<VraieCase>(this, &m_cases);  // Passer un pointeur à la liste
-}
diff --git a/motus/grillemanager.h b/motus/grillemanager.h
deleted file mode 100644
index 00f1d1a9e67f6baf0184069c0c33a2ae775354c6..0000000000000000000000000000000000000000
--- a/motus/grillemanager.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef GRILLEMANAGER_H
-#define GRILLEMANAGER_H
-
-#include <QObject>
-#include <QQmlListProperty>
-#include "vraiecase.h"
-#include "brain.h"
-
-class GrilleManager : public QObject {
-    Q_OBJECT
-    Q_PROPERTY(QQmlListProperty<VraieCase> cases READ getCases NOTIFY casesChanged)
-
-public:
-    explicit GrilleManager(const QString &mot, QObject *parent = nullptr);  // Le mot en argument
-    void createGrid(QQmlComponent *grilleComponent, QQuickItem * parentItem, Brain* brain, int rows, int columns);  // Créer la grille
-    QQmlListProperty<VraieCase> getCases();  // Obtenir les cases
-
-signals:
-    void casesChanged();
-
-private:
-    QString m_mot;
-    QList<VraieCase *> m_cases;  // Liste des cases de la grille
-};
-
-#endif // GRILLEMANAGER_H
diff --git a/motus/jeu.cpp b/motus/jeu.cpp
index 0ab0812eb166d19c586e71b14cbacd210b450cc8..9e14b8347861cad2d90180f754f2cb17778d7873 100644
--- a/motus/jeu.cpp
+++ b/motus/jeu.cpp
@@ -1,9 +1,10 @@
 #include "jeu.h"
 #include <iostream>
+#include <QString>
 
 
+Jeu::Jeu(QObject *parent) : QObject(parent) {
 
-Jeu::Jeu(QObject *parent) : QObject(parent), grilleManager("", this) {
 }
 
 // void Jeu::setMot(const QString& mot) {
@@ -17,24 +18,23 @@ QString Jeu::getMotAffiche() {
     return mot;
 }
 
-void Jeu::setContext(QQmlComponent *grilleComponent, QQuickItem* parentItem) {
-    grilleComponent = grilleComponent;
-    parentItem = parentItem;
-    brain = new Brain(grilleComponent,"./",parentItem);
-}
-
 void Jeu::onClavierClick(QString lettre) {
 
+
+
     if (!m_letterModel)
         return;
 
-    if (currentIndex < 40) {  // on évite de dépasser la grille
-        m_letterModel->setLetter(currentIndex, lettre);
-        currentIndex++;
-    }
+    // if (currentIndex < 40) {  // on évite de dépasser la grille
+    //     m_letterModel->setLetter(currentIndex, lettre);
+    //     currentIndex++;
+    // }
 
 
     brain->entreLettre(lettre.toStdString()[0]);
+    for (int index = 0; index < 40; index ++) {
+        m_letterModel->setLetter(index, QString::fromLatin1(&brain->getGrid()[index], 1));
+    }
 }
 
 
diff --git a/motus/jeu.h b/motus/jeu.h
index b5fb35780d111bd674e2ab86f62ce464ac8a3990..a0e24ccbb072cf50e6908d7ea41f1e0950144860 100644
--- a/motus/jeu.h
+++ b/motus/jeu.h
@@ -5,13 +5,11 @@
 #include <QQuickItem>
 #include <QQmlComponent>
 #include "brain.h"
-#include "grillemanager.h"
 #include "lettermodel.h"
 
 class Jeu : public QObject {
     Q_OBJECT
     Q_PROPERTY(QString motAffiche READ getMotAffiche NOTIFY motChanged)
-    Q_PROPERTY(GrilleManager* grilleManager READ getGrilleManager CONSTANT)
     Q_PROPERTY(QQuickItem* gameWindow READ getGameWindow NOTIFY gameWindowChanged)
 
 public:
@@ -20,9 +18,7 @@ public:
     Q_INVOKABLE void onClavierClick(QString lettre);
     Q_INVOKABLE void initGame();
     Q_INVOKABLE void startGame(); // pour init depuis QML
-    GrilleManager* getGrilleManager() { return &grilleManager; }
     QQuickItem* getGameWindow() const { return gameWindow; } // Getter for gameWindow
-    void setContext(QQmlComponent *grilleComponent, QQuickItem* parentItem);
     void setLetterModel(LetterModel* model); // Setter pour le modèle
 
 
@@ -33,8 +29,6 @@ signals:
 private:
     Brain* brain;
     QString mot;
-    GrilleManager grilleManager;
-    QQmlComponent* grilleComponent;
     QQuickItem* gameWindow; // Pointer to the QQuickItem of the GameWindow
     LetterModel* m_letterModel = nullptr;  // Modèle QML
     int currentIndex = 0; // Pour suivre où on écrit
diff --git a/motus/ligne.cpp b/motus/ligne.cpp
index 78a424521f81501c1310390cd74475d4f59ddd6c..69a9a0ca353e01df9121179f5c5de88dae349dbb 100644
--- a/motus/ligne.cpp
+++ b/motus/ligne.cpp
@@ -20,24 +20,33 @@ bool Ligne::isGameCleared() {
     show();
     for (int i = 0; i < bonmot.length(); i++) {
         char bonnelettre = toupper(bonmot[i]);  // Convert to uppercase
-        QChar lettreacomparer = contenu[i]->getLetter().at(0);  // Get the QChar from contenu
-        int etat1 = (bonnelettre == lettreacomparer.toUpper().toLatin1()) ? 1 : 0;
+        char lettreacomparer = contenu[i]->getLetter();  // Get the QChar from contenu
+        int etat1 = (bonnelettre == lettreacomparer) ? 1 : 0;
         int etat2 = Ligne::dansMot(lettreacomparer, bonmot);
         int etat = etat1+etat2;
         cout << etat1 << etat2 << endl;
         contenu[i]->setEtat(etat);
     }
-    cout << "TEST" << endl;
+
+
     show();
     return (nbjustes == 2*bonmot.length());
 }
 
+string Ligne::getMot() {
+    string res = "";
+    for (int i=0;i<bonmot.length();i++) {
+        res = res + contenu[i]->getLetter();
+    }
+    return res;
+}
+
 void Ligne::show() {
     cout << "La ligne : |";
     for (int i=0;i<bonmot.length();i++) {
         if (contenu[i]->getEtat() == 1) {cout << "\033[33m";}
         if (contenu[i]->getEtat() == 2) {cout << "\033[31m";}
-        cout << contenu[i]->getLetter().toStdString();
+        cout << contenu[i]->getLetter();
         if (contenu[i]->getEtat() >= 1) cout << "\033[30m";
     }
     cout << "|" << endl;
@@ -45,7 +54,7 @@ void Ligne::show() {
 
 bool Ligne::dansMot(QChar lettre, string mot) {
     for (int i=0;i<mot.length();i++) {
-        if (toupper(mot[i]) == lettre.toLatin1()) {
+        if (mot[i] == lettre) {
             return true;
         }
     }
@@ -56,7 +65,7 @@ void Ligne::entreLettre(char lettre) {
     if (positionCurseur == bonmot.length()) {
         throw FullLigneException();
     }
-    contenu[positionCurseur]->setLetter(QChar(lettre));  // Conversion ici
+    contenu[positionCurseur]->setLetter(lettre);  // Conversion ici
     positionCurseur++;
 }
 
@@ -65,6 +74,6 @@ void Ligne::supprLettre() {
         throw EmptyLigneException();
     }
     cout << "Suppression d'une lettre" << endl;
-    contenu[positionCurseur - 1]->setLetter(QChar(' '));
+    contenu[positionCurseur - 1]->setLetter(' ');
     positionCurseur--;
 }
diff --git a/motus/ligne.h b/motus/ligne.h
index 8cef7c958de02fe775f1da7ac66e90d63b4399ad..0cc9498cd23d0fbccdd1d2f1407932bfaad64b54 100644
--- a/motus/ligne.h
+++ b/motus/ligne.h
@@ -23,6 +23,7 @@ public:
     void supprLettre();
     void show();
     vector<VraieCase*> contenu;
+    string getMot();
 
 private:
     string bonmot;
diff --git a/motus/main.cpp b/motus/main.cpp
index b8a19260a1316d579d54c657ea33fcb401b31812..f65c4ed875e02e2424058f540597b82095aed9ea 100644
--- a/motus/main.cpp
+++ b/motus/main.cpp
@@ -5,7 +5,6 @@
 #include <QQmlApplicationEngine>
 #include "jeu.h"
 #include "vraiecase.h"
-#include "grillemanager.h"
 #include "lettermodel.h"
 
 int main(int argc, char *argv[]) {
@@ -13,7 +12,6 @@ int main(int argc, char *argv[]) {
     QQmlApplicationEngine engine;
 
     qmlRegisterType<VraieCase>("motus", 1, 0, "VraieCase");
-    qmlRegisterType<GrilleManager>("motus", 1, 0, "GrilleManager");
 
 
 
@@ -25,16 +23,12 @@ int main(int argc, char *argv[]) {
     QObject *rootObject = engine.rootObjects().first(); // Gets the first root object
     QQuickItem *rootItem = qobject_cast<QQuickItem *>(rootObject);
 
-    QQmlComponent grilleComponent(&engine, QUrl::fromLocalFile("../../Grille.qml"));
-
     QQuickItem *parentItem = rootItem;
     // Créer l'objet Jeu sans mot
-    Jeu jeu;
+    Jeu jeu(rootObject);
     jeu.setLetterModel(&letterModel);
     engine.rootContext()->setContextProperty("jeu", &jeu);
 
-    jeu.setContext(&grilleComponent,parentItem);
-
 
     return app.exec();
 }
diff --git a/motus/vraiecase.cpp b/motus/vraiecase.cpp
index 39e89d78d8680e2606a5ac940e0385fa4966d4d9..387d590dacce20250daf1ef94a5431d1f670f181 100644
--- a/motus/vraiecase.cpp
+++ b/motus/vraiecase.cpp
@@ -1,15 +1,14 @@
 #include "vraiecase.h"
 
-VraieCase::VraieCase(QObject *parent) : QObject(parent), lettre(""), etat(0) {}
+VraieCase::VraieCase() : lettre(' '), etat(0) {}
 
-QString VraieCase::getLetter() const {
+char VraieCase::getLetter() const {
     return lettre;
 }
 
-void VraieCase::setLetter(const QString &letter) {
+void VraieCase::setLetter(const char &letter) {
     if (lettre != letter) {
         lettre = letter;
-        emit letterChanged();
     }
 }
 
@@ -20,6 +19,5 @@ int VraieCase::getEtat() const {
 void VraieCase::setEtat(int e) {
     if (etat != e) {
         etat = e;
-        emit etatChanged();
     }
 }
diff --git a/motus/vraiecase.h b/motus/vraiecase.h
index b8346da7ec9c022f155d45fe7c455a34f0d55a29..a00dd2d0ddaef6d7514eac557d3528bc45463340 100644
--- a/motus/vraiecase.h
+++ b/motus/vraiecase.h
@@ -2,28 +2,18 @@
 #define VRAIECASE_H
 
 #include <QObject>
-#include <QString>
-
-class VraieCase : public QObject {
-    Q_OBJECT
-    Q_PROPERTY(QString letter READ getLetter WRITE setLetter NOTIFY letterChanged)
-    Q_PROPERTY(int etat READ getEtat WRITE setEtat NOTIFY etatChanged)
-
+class VraieCase {
 public:
-    explicit VraieCase(QObject *parent = nullptr);
+    VraieCase();
 
-    QString getLetter() const;
-    void setLetter(const QString &letter);  // Mise à jour du type
+    char getLetter() const;
+    void setLetter(const char &letter);  // Mise à jour du type
 
     int getEtat() const;
     void setEtat(int etat);
 
-signals:
-    void letterChanged();
-    void etatChanged();
-
 private:
-    QString lettre;
+    char lettre;
     int etat;
 };