diff --git a/android/gradle.properties b/android/gradle.properties
index e6443382b31fab5fc027b99dc079154f78f27d0b..d965699510bdf71e00b8f08fe1031cef79d05911 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,5 +1,5 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
-app.versionName=0.0.28
-app.versionCode=28
+app.versionName=0.0.29
+app.versionCode=29
diff --git a/fastlane/metadata/android/en-US/changelogs/29.txt b/fastlane/metadata/android/en-US/changelogs/29.txt
new file mode 100644
index 0000000000000000000000000000000000000000..55511cbae8c5f245c9b0c2d80f95a8fb2b56b5e4
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/29.txt
@@ -0,0 +1 @@
+Allow pick color from cell in board
diff --git a/fastlane/metadata/android/fr-FR/changelogs/29.txt b/fastlane/metadata/android/fr-FR/changelogs/29.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b212620624125d37f63e37082236e91be9d13d1e
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/29.txt
@@ -0,0 +1 @@
+Sélection d'une couleur à partir d'une case du tableau
diff --git a/lib/layout/board.dart b/lib/layout/board.dart
index 8d0b03cf34e3e6cf7e33b0ec89c3d397fcfade5d..0224d6d685c3ff7df936b8c16456f255ebc6daa4 100644
--- a/lib/layout/board.dart
+++ b/lib/layout/board.dart
@@ -1,5 +1,6 @@
 import 'package:colors/layout/board_painter.dart';
 import 'package:colors/provider/data.dart';
+import 'package:colors/utils/board_utils.dart';
 import 'package:flutter/material.dart';
 
 class Board {
@@ -9,12 +10,29 @@ class Board {
       padding: EdgeInsets.all(4),
       child: Column(
         children: [
-          CustomPaint(
-            size: Size(boardWidth, boardWidth),
-            willChange: false,
-            painter: BoardPainter(myProvider),
-            isComplex: true,
-          ),
+          Container(
+            child: Center(
+              child: GestureDetector(
+                onTapUp: (details) {
+                  double xTap = details.localPosition.dx;
+                  double yTap = details.localPosition.dy;
+                  int boardSize = myProvider.boardSize;
+                  int col = xTap ~/ (boardWidth / boardSize);
+                  int row = yTap ~/ (boardWidth / boardSize);
+                  int cellValue = myProvider.getCellValue(col, row);
+                  BoardUtils.fillBoardFromFirstCell(myProvider, cellValue);
+                },
+                child: Container(
+                  child: CustomPaint(
+                    size: Size(boardWidth, boardWidth),
+                    willChange: false,
+                    painter: BoardPainter(myProvider),
+                    isComplex: true,
+                  ),
+                ),
+              ),
+            ),
+          )
         ],
       ),
     );