diff --git a/travail_individuel/Meyer/jeu_de_la_vie/main b/travail_individuel/Meyer/jeu_de_la_vie/main
index 9d788b83eea634343d2d54fa14f7313603cc8abe..9cfbdb5e1601c6b75daaeb72539ddff9740b113e 100755
Binary files a/travail_individuel/Meyer/jeu_de_la_vie/main and b/travail_individuel/Meyer/jeu_de_la_vie/main differ
diff --git a/travail_individuel/Meyer/jeu_de_la_vie/main.c b/travail_individuel/Meyer/jeu_de_la_vie/main.c
index 570395e90df03fd181e7e8cc8e91cccf7cfa221e..38f945ca6aced6cba98b611a2ccbfe02167dac72 100644
--- a/travail_individuel/Meyer/jeu_de_la_vie/main.c
+++ b/travail_individuel/Meyer/jeu_de_la_vie/main.c
@@ -8,13 +8,12 @@ int survie[TAILLE_TABLEAU_REGLES] = {0, 0, 1, 1, 0, 0, 0, 0, 0};
 int naissance[TAILLE_TABLEAU_REGLES] = {0, 0, 0, 1, 0, 0, 0, 0, 0};
 
 SDL_Window *window;                   
-int width = 700;
+int width = 600;
 int height = 700;
 SDL_Renderer *renderer;
 SDL_Rect rect;
 SDL_Event event;
 int running = 1;
-int tailleAffichage = 30;
 
 int taille_monde_delimitee = 20;
 
@@ -55,7 +54,13 @@ void destroySDL2(){
     SDL_Quit();
 }
 
-void initMonde(int monde[taille_monde_delimitee][taille_monde_delimitee]){
+int quelleTaillePourLesCases(int divise, int diviseur){
+    int r;
+    r = divise/diviseur;
+    return r;
+}
+
+void initMonde(int ** monde){
     int i = 0;
     int j = 0;
     
@@ -66,10 +71,9 @@ void initMonde(int monde[taille_monde_delimitee][taille_monde_delimitee]){
     } 
 }
 
-void afficheMonde(int monde[taille_monde_delimitee][taille_monde_delimitee]){
+void afficheMonde(int ** monde){
     int i = 0;
     int j = 0;
-
     for(i=0; i<taille_monde_delimitee; i++){
         for(j=0; j<taille_monde_delimitee; j++){
             switch(monde[i][j]){
@@ -80,19 +84,19 @@ void afficheMonde(int monde[taille_monde_delimitee][taille_monde_delimitee]){
                     SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
                     break;
                 default:
-                    printf("Problème valeur tableau monde.\n");
+                    printf("Problème valeur tableau monde. %d; %d\n", i, j);
                     break;
             }
-            rect.x = tailleAffichage*i;
-            rect.y = tailleAffichage*j;
-            rect.w = tailleAffichage-2;
-            rect.h = tailleAffichage-2;
+            rect.x = quelleTaillePourLesCases(width, taille_monde_delimitee)*i;
+            rect.y = quelleTaillePourLesCases(height, taille_monde_delimitee)*j;
+            rect.w = quelleTaillePourLesCases(width, taille_monde_delimitee)-2;
+            rect.h = quelleTaillePourLesCases(height, taille_monde_delimitee)-2;
             SDL_RenderFillRect(renderer, &rect);
         }
     }
 }
 
-void afficherEcran(int monde[taille_monde_delimitee][taille_monde_delimitee]){
+void afficherEcran(int ** monde){
     
     SDL_SetRenderDrawColor(renderer, 0, 16, 158, 0);
     SDL_RenderClear(renderer);
@@ -102,9 +106,9 @@ void afficherEcran(int monde[taille_monde_delimitee][taille_monde_delimitee]){
     SDL_RenderPresent(renderer);
 }
 
-void changeCellule(int monde[taille_monde_delimitee][taille_monde_delimitee], int clic_x, int clic_y){
-    int ligne = clic_y/tailleAffichage;
-    int colonne = clic_x/tailleAffichage;
+void changeCellule(int ** monde, int clic_x, int clic_y){
+    int ligne = clic_y/quelleTaillePourLesCases(height, taille_monde_delimitee);
+    int colonne = clic_x/quelleTaillePourLesCases(width, taille_monde_delimitee);
     if(0 == monde[colonne][ligne]){
         monde[colonne][ligne] = 1;
     }else{
@@ -112,7 +116,7 @@ void changeCellule(int monde[taille_monde_delimitee][taille_monde_delimitee], in
     }
 }
 
-int nombreVoisinsVivants(int monde[taille_monde_delimitee][taille_monde_delimitee], int cel_x, int cel_y){
+int nombreVoisinsVivants(int ** monde, int cel_x, int cel_y){
     int nbrVoisinsVivants = 0;
     if(cel_x==0 && cel_y==0){
         nbrVoisinsVivants = monde[cel_x+1][cel_y] + monde[cel_x][cel_y+1] + monde[cel_x+1][cel_y+1];
@@ -137,7 +141,7 @@ int nombreVoisinsVivants(int monde[taille_monde_delimitee][taille_monde_delimite
     return nbrVoisinsVivants;
 }
 
-void reglesEvolutions(int monde[taille_monde_delimitee][taille_monde_delimitee]){
+void reglesEvolutions(int ** monde){
     int i = 0;
     int j = 0;
     
@@ -170,16 +174,21 @@ void reglesEvolutions(int monde[taille_monde_delimitee][taille_monde_delimitee])
     }
 }
 
-void chargeNiveauFichier(char *nom_fichier, int monde[taille_monde_delimitee][taille_monde_delimitee]){
+void chargeNiveauFichier(char *nom_fichier, int ** monde, int nbrLigne){
     FILE *fichier = NULL;
     int valeur;
     int ligne = -1;
     int colonne = 0;
+
     fichier = fopen(nom_fichier, "r");
     if(fichier != NULL){
         while(fscanf(fichier, "%d", &valeur) != EOF){
             if(ligne == -1){
                 taille_monde_delimitee = valeur;
+                if(taille_monde_delimitee != nbrLigne){
+                    printf("PROBLEME DE DIMENSION\n");
+                    return;
+                }
                 ligne = 0;
             }else{
                 monde[colonne][ligne] = valeur;
@@ -204,11 +213,22 @@ int main(int argc, char** argv) {
         taille_monde_delimitee = atoi(argv[1]);
     }
 
-    int monde[taille_monde_delimitee][taille_monde_delimitee];
+    int ** monde;
+
+    monde = malloc(taille_monde_delimitee*sizeof(int*));
+    for(int i = 0; i < taille_monde_delimitee; ++i)
+    {
+        monde[i] = malloc(taille_monde_delimitee*sizeof(int));
+    }
 
     initSDL2();
 
-    initMonde(monde);
+    if(argc < 3){
+        initMonde(monde);
+    }else if(argc == 3){
+        chargeNiveauFichier(argv[2], monde, atoi(argv[1]));
+    }
+    
 
     while (running) {
         while (SDL_PollEvent(&event)){
@@ -224,6 +244,9 @@ int main(int argc, char** argv) {
                             height = event.window.data2;
                             printf("Size : %d%d\n", width, height);
                             break;
+                        default:
+                            afficherEcran(monde);
+                            break;
                     }   
                     break;
                 case SDL_MOUSEBUTTONDOWN:
@@ -238,7 +261,7 @@ int main(int argc, char** argv) {
                             break;
                         case SDLK_c:
                             printf("charge niveau.txt...\n");
-                            chargeNiveauFichier("niveau.txt", monde);
+                            initMonde(monde);
                             break;
                         default:
                             printf("une touche est tapee\n");
diff --git a/travail_individuel/Meyer/jeu_de_la_vie/makefile b/travail_individuel/Meyer/jeu_de_la_vie/makefile
index 32231ce37f404a358e71809b3a0e17d18b58628b..c7c55220faa4e36a46c3bb6f6dcfe98d785035a4 100644
--- a/travail_individuel/Meyer/jeu_de_la_vie/makefile
+++ b/travail_individuel/Meyer/jeu_de_la_vie/makefile
@@ -2,7 +2,12 @@ CC=gcc
 
 main:main.o
 	$(CC) -o main main.o -lm -lSDL2
-	@echo "=> Lancer le programme avec  ./main" 
+	@echo "=> Lancer le programme avec :  ./main --taille --fichier" 
+	@echo "=> Flèche de droite : avance la simulation" 
+	@echo "=> Touche c : vide la grille" 
+	@echo "exemple : ./main (grille de 20x20)" 
+	@echo "exemple : ./main 30 (grille de 30x30)" 
+	@echo "exemple : ./main 20 niveau.txt (grille de 20x20 chargé depuis niveau.txt)" 
 
 main.o:main.c
 	$(CC) -c main.c -g -Wall -Wextra