diff --git a/Motus/CMakeLists.txt b/Motus/CMakeLists.txt
index f5a3c96b4a3dbdda6eabf5212be71c013aca1a7a..d1b3570cc1b678114759a0fb9b6e082998d454d9 100644
--- a/Motus/CMakeLists.txt
+++ b/Motus/CMakeLists.txt
@@ -46,6 +46,7 @@ qt_add_qml_module(appMotus
         QML_FILES LangageButton.qml
         QML_FILES
         QML_FILES MotusTimer.qml
+        QML_FILES NumberLetterButton.qml
 )
 
 # Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
diff --git a/Motus/Main.qml b/Motus/Main.qml
index a913fc8bd841e0d66e4182c3d47e1fe1b14755a0..47b5b22ba6c46fcb6fb7f200ec3c6d677642df45 100644
--- a/Motus/Main.qml
+++ b/Motus/Main.qml
@@ -478,5 +478,12 @@ Window {
             x: 502
             y: 73
         }
+
+        NumberLetterButton {
+            id: numberLetterButton
+            x: 704
+            y: 122
+
+        }
     }
 }
diff --git a/Motus/NumberLetterButton.qml b/Motus/NumberLetterButton.qml
new file mode 100644
index 0000000000000000000000000000000000000000..4f40ac7beaff36f54007466f4023cc5a37180b9e
--- /dev/null
+++ b/Motus/NumberLetterButton.qml
@@ -0,0 +1,41 @@
+import QtQuick
+import QtQuick.Controls 2.15
+
+Item {
+    width: 100
+    height: 50
+    property alias comboBoxDisplayText: comboBox.displayText
+
+    Rectangle {
+        id: rectangle
+        x: 0
+        y: 0
+        width: 100
+        height: 50
+        color: "#fe8cf6"
+
+        ComboBox {
+            id: comboBox
+            x: 0
+            y: 0
+            width: 100
+            height: 50
+            flat: true
+            editable: true
+            model: ["aléatoire","5","6","7","8","9","10"]
+            displayText: "Number of letters"
+
+            onCurrentTextChanged: {
+                   if (typeof motusGame !== "undefined") {
+                       if (currentText === "aléatoire") {
+                           motusGame.randomizeLetterNumber = true;
+                       } else {
+                           motusGame.randomizeLetterNumber = false;
+                           motusGame.letterNumber = parseInt(currentText);
+                       }
+                   }
+               }
+    }
+
+}
+}
diff --git a/Motus/motusgame.cpp b/Motus/motusgame.cpp
index babb849064a76ed21dc15f7bdb88da7356ff08a0..469d4a781cdda0b45c915cfd5f52ff6c09ee0825 100644
--- a/Motus/motusgame.cpp
+++ b/Motus/motusgame.cpp
@@ -7,6 +7,8 @@
 #include <QDebug>
 
 
+// Constructeur //////////////////////////////////////////////////////////////////////////////////////////
+
 MotusGame::MotusGame(QObject *parent) : QObject(parent) {
     loadWords();
     qDebug() << "🔧 Connexion timer établie";
@@ -37,6 +39,7 @@ MotusGame::MotusGame(QObject *parent) : QObject(parent) {
 }
 
 
+// Générer un mot //////////////////////////////////////////////////////////////////////////////////////////
 
 void MotusGame::loadWords() {
     words.clear();
@@ -67,10 +70,15 @@ QString MotusGame::getRandomWord() {
 }
 
 
+// Changement de langue //////////////////////////////////////////////////////////////////////////////////////////
+
+
 QString MotusGame::getDictionnaryChoosed() const {
     return dictionnaryChoosed;
 }
 
+
+
 void MotusGame::setDictionnaryChoosed(const QString &value) {
     if (dictionnaryChoosed != value) {
         dictionnaryChoosed = value;
@@ -80,6 +88,7 @@ void MotusGame::setDictionnaryChoosed(const QString &value) {
     }
 }
 
+// Démarrer le timer //////////////////////////////////////////////////////////////////////////////////////////
 void MotusGame::startTimer() {
     qDebug() << "🔁 startTimer() appelé";
 
@@ -100,3 +109,43 @@ void MotusGame::startTimer() {
 int MotusGame::getRemainingTime() const {
     return remainingTime;
 }
+
+
+// Donner le nombre de lettres pour les mots à générer //////////////////////////////////////////////////////////////////////////////////////////
+
+int MotusGame::getLetterNumber() const {
+    return letterNumber;
+}
+
+void MotusGame::setLetterNumber(int value) {
+    if (letterNumber != value) {
+        letterNumber = value;
+        emit letterNumberChanged();
+        qDebug() << "🔤 Nouvelle valeur de letterNumber :" << letterNumber;
+    }
+}
+
+
+bool MotusGame::getRandomizeLetterNumber() const {
+    return randomizeletterNumber;
+}
+
+void MotusGame::setRandomizeLetterNumber(bool value) {
+    if (randomizeletterNumber != value) {
+        randomizeletterNumber = value;
+        emit randomizeLetterNumberChanged();
+        qDebug() << "🎲 randomizeLetterNumber =" << randomizeletterNumber;
+    }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Motus/motusgame.h b/Motus/motusgame.h
index 890e81109924a8c7680e1ba7e19cb3aa77362a3f..af6081091a8a55f340be74f41652a84522361af8 100644
--- a/Motus/motusgame.h
+++ b/Motus/motusgame.h
@@ -17,27 +17,40 @@ class MotusGame : public QObject {
 
     Q_PROPERTY(int remainingTime READ getRemainingTime NOTIFY timerUpdated)
 
+    Q_PROPERTY(int letterNumber READ getLetterNumber WRITE setLetterNumber NOTIFY letterNumberChanged)
+
+    Q_PROPERTY(bool randomizeLetterNumber READ getRandomizeLetterNumber WRITE setRandomizeLetterNumber NOTIFY randomizeLetterNumberChanged)
+
+
 public:
     explicit MotusGame(QObject *parent = nullptr);
     Q_INVOKABLE QString getRandomWord();
 
-    QString getDictionnaryChoosed() const;
+    QString getDictionnaryChoosed() const;                          //Pour le changement de mot à deviner
     void setDictionnaryChoosed(const QString &value);
 
 
-    Q_INVOKABLE void startTimer();
+    Q_INVOKABLE void startTimer();                                  //Pour le début du timer
     int getRemainingTime() const;
 
+    int getLetterNumber() const;                                    //Pour le nombre de lettres du mot qu'on veut générer
+    void setLetterNumber(int value);
+    bool getRandomizeLetterNumber() const;
+    void setRandomizeLetterNumber(bool value);
+
+
 
 private:
     QStringList words;
 
     QString motChoisi; // Mot choisi aléatoirement dans la liste, selon le nombre de lettres choisi par l'utilisateur
-    int letterNumber=7; // Nombre de lettres dans le mot, choisi par l'utilisateur
-    int tryNumber=0; // Nombre d'essais effectués, si tryNumber = nombre max, c'est perdu
-    QString dictionnaryChoosed="Motus\\words_alpha.txt"; // "Motus\\words_alpha.txt" ou "Motus\\mots_francais.txt"
 
+    int letterNumber; // Nombre de lettres dans le mot, choisi par l'utilisateur
+    bool randomizeletterNumber = true;
 
+    int tryNumber=0; // Nombre d'essais effectués, si tryNumber = nombre max, c'est perdu
+
+    QString dictionnaryChoosed="Motus\\words_alpha.txt"; // "Motus\\words_alpha.txt" ou "Motus\\mots_francais.txt"
 
     QTimer *countdownTimer;
 
@@ -48,7 +61,8 @@ private:
 signals:
     void dictionnaryChoosedChanged();
     void timerUpdated();
-
+    void letterNumberChanged();
+    void randomizeLetterNumberChanged();
 
 
 };