diff --git a/psychorientation/psychorientation/InterfaceClasse.cs b/psychorientation/psychorientation/InterfaceClasse.cs
index 9d5b100bc48f7668d98532a8dc770f76680e55c7..970b29a3b92ed637c66337673645f0ac3da37055 100644
--- a/psychorientation/psychorientation/InterfaceClasse.cs
+++ b/psychorientation/psychorientation/InterfaceClasse.cs
@@ -15,7 +15,7 @@ namespace psychorientation
 
         double effortInitial = 0.0;
         double competenceInitial = 0.0;
-        double moyenenInitial = 0.0;
+        double moyenneInitiale = 0.0;
 
 
         private Random r = new Random();
@@ -62,10 +62,10 @@ namespace psychorientation
             lblClasse.Text = libelle.Niveau(anneeActuelle);
             effortInitial = Math.Round(gestEleve.GetEffortClasse(), 1);
             competenceInitial = Math.Round(gestEleve.GetCompetenceClasse(), 1);
-            moyenenInitial = Math.Round(gestEleve.GetMoyenneClasse(), 1);
+            moyenneInitiale = Math.Round(gestEleve.GetMoyenneClasse(), 1);
             lblEffort.Text = "Effort de la classe : " + effortInitial.ToString();
             lblCompetence.Text = "Competence de la classe : " + competenceInitial.ToString();
-            lblMoyenne.Text = "Moyenne de la classe : " + moyenenInitial.ToString();
+            lblMoyenne.Text = "Moyenne de la classe : " + moyenneInitiale.ToString();
 
             Libelle lib = new Libelle();
             int y = 40;
@@ -184,9 +184,9 @@ namespace psychorientation
             }
             gestEleve.FaireControle("Controle " + lblClasse.Text + " " + lblDate.Text, valNotation / 10.0);
 
-            lblEffort.Text = "Effort de la classe : " + Math.Round(gestEleve.GetEffortClasse(), 1).ToString();
-            lblCompetence.Text = "Competence de la classe : " + Math.Round(gestEleve.GetCompetenceClasse(), 1).ToString();
-            lblMoyenne.Text = "Moyenne de la classe : " + Math.Round(gestEleve.GetMoyenneClasse(), 1).ToString();
+            lblEffort.Text = "Effort de la classe : " + Math.Round(gestEleve.GetEffortClasse(), 2).ToString();
+            lblCompetence.Text = "Competence de la classe : " + Math.Round(gestEleve.GetCompetenceClasse(), 2).ToString();
+            lblMoyenne.Text = "Moyenne de la classe : " + Math.Round(gestEleve.GetMoyenneClasse(), 2).ToString();
             ActualiserEleveCoter();
 
             // Passe au mois suivant.
@@ -203,12 +203,9 @@ namespace psychorientation
                     break;
                 case 42: // Fin de la 3ème année : Debut Juillet.
                     // Fin de la partie.
-                    double moyenneFinal = Math.Round(gestEleve.GetMoyenneClasse(), 1);
-                    double effortFinal = Math.Round(gestEleve.GetEffortClasse(), 1);
-                    double competenceFinal = Math.Round(gestEleve.GetCompetenceClasse(), 1);
-                    double diffEffort = effortFinal - effortInitial;
-                    double diffCompetence = competenceFinal - competenceInitial;
-                    double diffMoyenne= moyenneFinal-moyenenInitial;
+                    double moyenneFinale = gestEleve.GetMoyenneClasse();
+                    double effortFinal = gestEleve.GetEffortClasse();
+                    double competenceFinal = gestEleve.GetCompetenceClasse();
 
                     Message m_fin = new Message(
                         "Vous avez fini la phase bêta de ce jeu !\n" +
@@ -217,7 +214,14 @@ namespace psychorientation
                         "Félicitations",
                         TypeMessage.RESULTAT
                     );
-                    m_fin.setParamRes(Math.Round(100*diffEffort/effortInitial,1), Math.Round(100 *diffCompetence/competenceInitial,1), Math.Round(100 *diffMoyenne/moyenenInitial,1),moyenneFinal>moyenenInitial,effortFinal>effortInitial+(10-effortInitial)/2,competenceFinal>competenceInitial+(10-competenceInitial)/2);
+                    m_fin.setParamRes(
+                        effortInitial,
+                        competenceInitial,
+                        moyenneInitiale,
+                        effortFinal,
+                        competenceFinal,
+                        moyenneFinale
+                    );
                     m_fin.ShowDialog();
                     UntransmitKeyDown();
                     pb_action_suivante.Click -= new System.EventHandler(Pb_action_suivante_Click);
diff --git a/psychorientation/psychorientation/Message.cs b/psychorientation/psychorientation/Message.cs
index 665320813e3f1a2c9a1112cfb621374e5099ee43..d0bac58b04523011e5ba00a1489ba4902e1c9cc8 100644
--- a/psychorientation/psychorientation/Message.cs
+++ b/psychorientation/psychorientation/Message.cs
@@ -32,9 +32,11 @@ namespace psychorientation
         bool competenceScoreRouge = false;
 
         double effortScore;
-        double moyenneScore;
         double competenceScore;
-
+        double moyenneScore;
+        double effortLimite;
+        double competenceLimite;
+        double moyenneLimite;
 
         public Message(string messageAffiche,string titreAffiche,TypeMessage typeMessage)
         {
@@ -44,14 +46,17 @@ namespace psychorientation
             titre = titreAffiche;
         }
 
-        public void setParamRes(double resEffort, double resCompetence, double resMoyenne,bool effortRouge, bool competenceRouge, bool moyenneRouge)
+        public void setParamRes(double effortInitial, double competenceInitial, double moyenneInitiale, double effortFinal, double competenceFinal, double moyenneFinale)
         {
-            effortScore = resEffort;
-            moyenneScore = resMoyenne;
-            competenceScore = resCompetence; 
-             effortScoreRouge = effortRouge;
-            competenceScoreRouge = competenceRouge;
-            moyenneScoreRouge = moyenneRouge;
+            effortScore = Math.Round(100 * (effortFinal - effortInitial) / effortInitial, 1);
+            competenceScore = Math.Round(100 * (competenceFinal - competenceInitial) / competenceInitial, 1); 
+            moyenneScore = Math.Round(100 * (moyenneFinale - moyenneInitiale) / moyenneInitiale, 1);
+            effortLimite = Math.Round(100 * ((10 - effortInitial) / 3) / effortInitial, 1);
+            competenceLimite = Math.Round(100 * ((10 - competenceInitial) / 3) / competenceInitial, 1);
+            moyenneLimite = 0;
+            effortScoreRouge = effortFinal > ((10 - effortInitial) / 3) + effortInitial;
+            competenceScoreRouge = competenceFinal > ((10 - competenceInitial) / 3) + competenceInitial;
+            moyenneScoreRouge = moyenneFinale > moyenneInitiale;
         }
 
         public bool getReponseBool
@@ -100,9 +105,9 @@ namespace psychorientation
                     lblEffort.Visible = true;
                     lblMoyenen.Visible = true;
                     lblScore.Visible = true;
-                    lblCompetence.Text = "L'évolution des compétences de vos élèves est de : " + competenceScore+" %";
-                    lblEffort.Text = "L'évolution des efforts de vos élèves est de : " + effortScore + " %";
-                    lblMoyenen.Text = "L'évolution des moyennes de vos élèves est de : " + moyenneScore + " %";
+                    lblCompetence.Text = "L'évolution des compétences de vos élèves est de : " + competenceScore + " % pour " + competenceLimite + " % nécessaires.";
+                    lblEffort.Text = "L'évolution des efforts de vos élèves est de : " + effortScore + " % pour " + effortLimite + " % nécessaires.";
+                    lblMoyenen.Text = "L'évolution des moyennes de vos élèves est de : " + moyenneScore + " % pour " + moyenneLimite + " % nécessaires.";
                     if (!effortScoreRouge)
                     {
                         lblEffort.ForeColor = Color.Red;