diff --git a/puissance4_GRB/puissance4.c b/puissance4_GRB/puissance4.c
index b40b60543f563de7516520e7fae0017d7af69453..47fe5bb82caa71eb29107b41d07a2f8348b466c1 100644
--- a/puissance4_GRB/puissance4.c
+++ b/puissance4_GRB/puissance4.c
@@ -73,14 +73,28 @@ int kill_game(){
 }*/
 
 
-int put_free_cell(int j_p, int i, symbol_t symbol){
-	if(game.cells[j_p][i].symbol == EMPTY){
-		//put the player's symbol
+int put_free_cell(int j_p, symbol_t symbol){
+	int i=0;
+	if((i = is_cell_free(j_p, 0, game.players[game.curr_player].symbol)) != -1){
 		game.cells[j_p][i].symbol = symbol;
+	}
+	return i;
+}
+
+/*
+retourne la ligne d'une cellule de libre dans une 
+colonne donnée 
+(si il y en a une, retourn -1 si il n'y en a aucune)
+*/
+int is_cell_free(int j_p, int i, symbol_t symbol){
+	if(game.cells[j_p][i].symbol == EMPTY){
+		//retourne la ligne disponible
+		return i;
 	}else{
-		if(i<=game.height){
-			return put_free_cell(j_p, i+1, symbol);
+		if(i<(game.width-1)){
+			return is_cell_free(j_p, i+1, symbol);
 		}else{
+			printf("il n'y a plus de case de disponible sur cette colonne\n");
 			return -1;
 		}
 	}
diff --git a/puissance4_GRB/puissance4.h b/puissance4_GRB/puissance4.h
index 2f5bef69ef40e25e1d9de42c755b53ccc1549f4d..4b0341956e81933ee0bde5fd90e566aa80c98801 100644
--- a/puissance4_GRB/puissance4.h
+++ b/puissance4_GRB/puissance4.h
@@ -45,7 +45,8 @@ void init_puissance4(int height, int width);
 void cell_destroy(struct cell **cells, int height);
 int kill_game();
 
-int put_free_cell(int j_p, int i, symbol_t symbol);
+int put_free_cell(int j_p, symbol_t symbol);
+int is_cell_free(int j_p, int i, symbol_t symbol);
 int Launch_puissance4();
 bool Is_Grid_full();