diff --git a/ElderInternalIgnition/ElderInternalIgnition.cbp b/ElderInternalIgnition/ElderInternalIgnition.cbp
index da3a256248287cf0a4e5dda5674d34b43d62ff40..aade84276db97d4f3dcd299d5e71a8331e897e6a 100644
--- a/ElderInternalIgnition/ElderInternalIgnition.cbp
+++ b/ElderInternalIgnition/ElderInternalIgnition.cbp
@@ -33,6 +33,7 @@
 			</Target>
 		</Build>
 		<Compiler>
+			<Add option="-Wall" />
 			<Add directory="./../Libs/libroxml-2.3.0/src" />
 			<Add directory="./../src" />
 			<Add directory="./../Libs/SDL-1.2.15/include" />
diff --git a/src/SDL_bis.c b/src/SDL_bis.c
index bcbe5cd1b126d58b3ceb48f340f8c7a2f0cee541..6448f5b2dbbc200a13d0ec3708db707bfa00a261 100644
--- a/src/SDL_bis.c
+++ b/src/SDL_bis.c
@@ -6,6 +6,38 @@
 #include "structures.h"
 #include "controleur.h"
 
+char* castIntToChar(int n)
+{
+    switch(n)
+    {
+        case 0:
+            return "0";
+            break;
+        case 1:
+            return "1";
+            break;
+        case 2:
+            return "2";
+            break;
+        case 3:
+            return "3";
+            break;
+        case 4:
+            return "4";
+            break;
+        case 5:
+            return "5";
+            break;
+        case 6:
+            return "6";
+            break;
+        default:
+            return "-1";
+            break;
+    }
+}
+
+
 char* afficherListe(char** nomsClasses, char** skinsClasses, int nbChoix, TTF_Font* police,SDL_Color couleurTexte)
 {
     int i, quitter;
@@ -217,30 +249,38 @@ int SDL_bis()
     SDL_BlitSurface(texte3,NULL,ecran,&pos_texte3_bis);
     SDL_Flip(ecran);
 
-    SDL_Surface* textes[6];
+    SDL_Surface textes[6];
     SDL_Rect posTextes[6];
     police=TTF_OpenFont("../resources/fonts/arial.ttf",26);
-/*
+
+    char src[50], dest[50];
+
     for(i=0;i<6;i++)
     {
-        textes[i]= TTF_RenderText_Shaded(police, test, couleurBlanche,couleurNoire);
+        strcpy(dest,  "personnage ");
+        strcpy(src, castIntToChar(i+1));
+        textes[i]= *TTF_RenderText_Shaded(police, strcat(dest, src), couleurBlanche,couleurNoire);
     }
 
     for(i=0;i<3;i++)
     {
-        posTextes[i].x=ecran->w/4-textes[i]->w/2;
-        posTextes[i].y=(i+1)*ecran->h;
-        SDL_BlitSurface(textes[i],NULL,ecran,&(posTextes[i]));
+        posTextes[i].x=ecran->w/4-textes[i].w/2;
+        posTextes[i].y=(i+1)*ecran->h/5;
+        SDL_BlitSurface(&textes[i],NULL,ecran,&(posTextes[i]));
     }
 
     for(i=3;i<6;i++)
     {
-        posTextes[i].x=(3*ecran->w)/4-textes[i]->w/2;
+        posTextes[i].x=(3*ecran->w)/4-textes[i].w/2;
         posTextes[i].y=posTextes[i-3].y;
-        SDL_BlitSurface(textes[i],NULL,ecran,&posTextes[i]);
+        SDL_BlitSurface(&textes[i],NULL,ecran,&posTextes[i]);
     }
     SDL_Flip(ecran);
-    printf("%d",etat);*/
+
+    int j,p;
+    j=0;
+    p=0;
+    char *classeChoisie;
     while(etat==CONFIGURATION)
     {
         SDL_WaitEvent(&event);
@@ -250,14 +290,32 @@ int SDL_bis()
                 etat=FERMER;
                 break;
             case SDL_MOUSEBUTTONDOWN:
-                afficherListe(obtenirNomsClasses(), obtenirSkinsClasses(),nbClasses(), TTF_OpenFont("../resources/fonts/arial.ttf",26),couleurBlanche);
+                if(event.button.x>posTextes[0].x&&event.button.x<posTextes[0].x+textes[0].w)
+                    j=1;
+                if(event.button.x>posTextes[3].x&&event.button.x<posTextes[3].x+textes[3].w)
+                    j=2;
+                for(i=0;i<3;i++){
+                    if(event.button.y>posTextes[i].y&&event.button.y<posTextes[i].y+textes[i].h)
+                        p=i+1;
+                }
+                if(j!=0&&p!=0){
+                    classeChoisie=afficherListe(obtenirNomsClasses(), obtenirSkinsClasses(), nbClasses(), police, couleurBlanche);
+                    ajouterPersonnage(classeChoisie, p, j);
+                    ecran = SDL_SetVideoMode(LARGEUR_CARTE*(LARGEUR_CASE+1), HAUTEUR_CARTE*(HAUTEUR_CASE+2), 32, SDL_HWSURFACE|SDL_DOUBLEBUF);
+                }
+                j=0;
+                p=0;
                 break;
             default:
                 break;
         }
-        /*for(i=0;i<6;i++){
-            SDL_BlitSurface(textes[i],NULL,ecran,&(posTextes[i]));
-        }*/
+        for(i=0;i<6;i++){
+            SDL_BlitSurface(&textes[i],NULL,ecran,&(posTextes[i]));
+        }
+        SDL_BlitSurface(texte,NULL,ecran,&pos_texte);
+        SDL_BlitSurface(texte2,NULL,ecran,&pos_texte2);
+        SDL_BlitSurface(texte3,NULL,ecran,&pos_texte3);
+        SDL_BlitSurface(texte3,NULL,ecran,&pos_texte3_bis);
         SDL_Flip(ecran);
     }
 
diff --git a/src/controleur.c b/src/controleur.c
index 399de853898c79e3917b52ec57297af112c888f8..836c81320979820d9632673bc1be7089668b94d0 100644
--- a/src/controleur.c
+++ b/src/controleur.c
@@ -15,6 +15,7 @@
 #include "classe.h"
 #include "gamePackage.h"
 #include "roxml.h"
+#include "SDL.h"
 
 Partie * partieGlobale;
 Game_Package packGlobal;
@@ -188,6 +189,26 @@ char ** obtenirDescriptionCarte(){
     free(tab);
 }
 
+/*!
+ * \fn Case * trouverCase(Carte c, int x, int y)
+ * \brief La fonction retourne un pointeur vers la case de coordonnées x,y
+ *
+ * \param les coordonnées x et y d'une case (pas en pixels mais bien en colonne et ligne), ainsi que la carte utilisée
+ * \return un pointeur vers cette case
+ */
+Case * trouverCase(Carte c, int x, int y)
+{
+    if((x<0)||(x>=LARGEUR_CARTE)){
+        return NULL;
+    }
+    else if((y<0)||(y>=HAUTEUR_CARTE)){
+        return NULL;
+    }
+    else{
+        return &c[(y*LARGEUR_CARTE)+x];
+    }
+}
+
   /*!
  * \fn int ajouterPersonnage(char * nomClasse, int numTab, int numJoueur)
  * \brief La fonction ajoute un personnage au tableau de personnages d'un Joueur à l'indice numTab(compris entre 0 et TAILLE_MAX_GROUPE).
@@ -201,14 +222,15 @@ int ajouterPersonnage(char * nomClasse, int numTab, int numJoueur){
     int i;
     i=0;
     //Recherche de la classe dans le Package
-    while((strcmp(nomClasse,(packGlobal.Classes_Package[i].nom))!=0)&&(i<=nbClasses())){
+    while(strcmp(nomClasse,getNomClasse(&packGlobal.Classes_Package[i]))!=0&&i<nbClasses()){
         i++;
     }
     if(i>nbClasses()){
         return 0;
     }
+
     //Création du personnage
-    Personnage * p = default_personnage(i,packGlobal);
+    Personnage * p = default_personnage(i,packGlobal,trouverCase(packGlobal.Cartes_Package[0],0,0));
 
     //Ajout du Personnage à l'équipe du Joueur
     switch (numJoueur){
diff --git a/src/controleur.h b/src/controleur.h
index 3410c3e69ae929f0e6fe2d6e0f4492bbe3845d23..8f29efe726a97bfbb99a519a062fad481cea7ecd 100644
--- a/src/controleur.h
+++ b/src/controleur.h
@@ -22,6 +22,8 @@ char ** obtenirNomsCartes();
 char ** obtenirDescriptionCarte();
 void freeCartes(char **);
 
+Case * trouverCase(Carte c, int x, int y);
+
 void ajouterPersonnage(char * nomClasse, int numTab, int numJoueur);
 
 
diff --git a/src/controleurSDL.c b/src/controleurSDL.c
index cf23861400745752079e555834447b43d186b416..1a9a452ecd0d91c70d8a7a68297249098802142d 100644
--- a/src/controleurSDL.c
+++ b/src/controleurSDL.c
@@ -69,25 +69,7 @@ int y_case_cliquee(int x_pixel, int y_pixel)
     }
     return y_case;
 }
-/*!
- * \fn Case * trouverCase(Carte c, int x, int y)
- * \brief La fonction retourne un pointeur vers la case de coordonnées x,y
- *
- * \param les coordonnées x et y d'une case (pas en pixels mais bien en colonne et ligne), ainsi que la carte utilisée
- * \return un pointeur vers cette case
- */
-Case * trouverCase(Carte c, int x, int y)
-{
-    if((x<0)||(x>=LARGEUR_CARTE)){
-        return NULL;
-    }
-    else if((y<0)||(y>=HAUTEUR_CARTE)){
-        return NULL;
-    }
-    else{
-        return &c[(y*LARGEUR_CARTE)+x];
-    }
-}
+
 /*!
  * \fn void persosuivant()
  * \brief La fonction permet de selectionner le personnage suivant
diff --git a/src/controleurSDL.h b/src/controleurSDL.h
index 438860487afbb5375488c4c9abde33f2cdcfc0fb..9762664bf855115e7765095795d85f8509d092ac 100644
--- a/src/controleurSDL.h
+++ b/src/controleurSDL.h
@@ -12,7 +12,7 @@ int y_case_cliquee(int x_pixel, int y_pixel);
 
 int x_case_cliquee(int x_pixel, int y_pixel);
 
-Case * trouverCase(Carte c, int x, int y);
+
 
 void deplacement_personnage(int x, int y);
 
diff --git a/src/personnage.c b/src/personnage.c
index 2eb67af6ee04c54cdefe1c6a8397c26d5ea976dc..914b4b6ed5fce24a26c518e733090de0d5ddbcb2 100644
--- a/src/personnage.c
+++ b/src/personnage.c
@@ -56,10 +56,10 @@ Personnage* set_personnage(Personnage *perso, Classe *c, Case *casedepart)
  * \param Le numéro de la défination du personnage dans le fichier XML, un game_package.
  * \return Un personnage pret a l'action.
  */
-Personnage* default_personnage(int numero, Game_Package Pack)
+Personnage* default_personnage(int numero, Game_Package Pack,Case *casedepart)
 {
     Personnage* Perso = init_personnage();
-    set_personnage(Perso, &Pack.Classes_Package[numero], NULL);
+    set_personnage(Perso, &Pack.Classes_Package[numero], casedepart);
     return Perso;
 }
 
diff --git a/src/personnage.h b/src/personnage.h
index e8c92e9fea01cc87cecd01addb661799cbd580e5..cbb2402f8e2d988635d92f830f23d781cf4da97b 100644
--- a/src/personnage.h
+++ b/src/personnage.h
@@ -10,7 +10,7 @@ Personnage* set_personnage(Personnage *perso, Classe *c, Case *casedepart);
 
 Personnage* init_personnage();
 
-Personnage* default_personnage(int numero, Game_Package Pack);
+Personnage* default_personnage(int numero, Game_Package Pack, Case *casedepart);
 
 void freePersonnage(Personnage * p);