diff --git a/web/components/visualization/results-general.js b/web/components/visualization/results-general.js
index 84348c71c6e5dbd02e1a0a699e9cdb27b9a799cd..3a99b68da13203e781e0bc15b50e758af98362ce 100644
--- a/web/components/visualization/results-general.js
+++ b/web/components/visualization/results-general.js
@@ -3,6 +3,7 @@ import * as Auth from "/services/auth/auth.js";
 import * as PartyModel from "/services/model/party-model.js";
 import * as CandidateListModel from "/services/model/candidateList-model.js";
 import * as AreaModel from "/services/model/area-model.js";
+import * as Common from "/services/common/common.js";
 
 export async function mount(where, parent) {
   const resultGeneralComponent = new ResultGeneralComponent(parent);
@@ -73,28 +74,32 @@ class ResultGeneralComponent {
           electeds
         );
       }
+      this.displayRoundDetailedResults();
     } else {
       if (this.parent.results.status == "no_results") {
         document.getElementById(
           "round-results"
-        ).innerHTML = this.parent.showWarningResults(
+        ).innerHTML = Common.warningMessage(
+          "Pas de résultats",
           "Aucun résultats n'ont étaient saisis sur cette zone"
         );
       } else if (this.parent.results.status == "incompleted") {
         document.getElementById(
           "round-results"
-        ).innerHTML = this.parent.showWarningResults(
+        ).innerHTML = Common.warningMessage(
+          "Pas complets",
           "Les résultats pour cette zone ne sont pas complets"
         );
       } else if (this.parent.results.status == "not validated") {
         document.getElementById(
           "round-results"
-        ).innerHTML = this.parent.showWarningResults(
+        ).innerHTML = Common.warningMessage(
+          "Non validé",
           "Les résultats pour cette zone n'ont pas étaient validés"
         );
       }
+      document.getElementById("round-detaileds-results").innerHTML = "";
     }
-    this.displayRoundDetailedResults();
   }
 
   async displayRoundDetailedResults() {
diff --git a/web/components/visualization/results-section.js b/web/components/visualization/results-section.js
index 9327497a54c012e6970f6027451f6f8219d26102..c01de45f9c2c99dfb9ef2d471aa4f14fdfe3a707 100644
--- a/web/components/visualization/results-section.js
+++ b/web/components/visualization/results-section.js
@@ -87,18 +87,6 @@ class ResultComponent {
     </div>`;
   }
 
-  showWarningResults(text) {
-    return /* HTML */ `<br />
-      <article class="message is-warning">
-        <div class="message-header">
-          <p>Warning</p>
-        </div>
-        <div class="message-body">
-          ${text}
-        </div>
-      </article>`;
-  }
-
   handleDom() {
     let resultHandler = this;
     document
diff --git a/web/components/visualization/results-zone.js b/web/components/visualization/results-zone.js
index 254f0b5a06f1ac0a6ab5a5189cb4a1189e5e023f..53780d5ef447727e2a61c40b6ee4237a6a145b12 100644
--- a/web/components/visualization/results-zone.js
+++ b/web/components/visualization/results-zone.js
@@ -1,10 +1,10 @@
 // Imports
 import * as Auth from "/services/auth/auth.js";
-import * as results from "/services/election/calculate-election-generic.js";
 import * as PartyModel from "/services/model/party-model.js";
 import * as CandidateListModel from "/services/model/candidateList-model.js";
 import * as AreaModel from "/services/model/area-model.js";
 import * as Scroller from "/services/common/scroller.js";
+import * as Common from "/services/common/common.js";
 
 export async function mount(where, parent) {
   const resultZoneComponent = new ResultZoneComponent(parent);
@@ -348,19 +348,19 @@ class ResultZoneComponent {
       if (zone.status == "no_results") {
         document.getElementById(
           "zone-results"
-        ).innerHTML = this.parent.showWarningResults(
+        ).innerHTML = Common.warningMessage("Pas de résultats",
           "Aucun résultats n'ont étaient saisis sur cette zone"
         );
       } else if (zone.status == "incompleted") {
         document.getElementById(
           "zone-results"
-        ).innerHTML = this.parent.showWarningResults(
+        ).innerHTML = Common.warningMessage("Pas complets",
           "Les résultats pour cette zone ne sont pas complets"
         );
       } else if (zone.status == "not validated") {
         document.getElementById(
           "zone-results"
-        ).innerHTML = this.parent.showWarningResults(
+        ).innerHTML = Common.warningMessage("Non validé",
           "Les résultats pour cette zone n'ont pas étaient validés"
         );
       }
diff --git a/web/components/vote/votes.js b/web/components/vote/votes.js
index 73ac0579971e983d582ac8df15288e88c0977ad3..f7d1623b6df457e6797723f9e5321f6edeaa5134 100644
--- a/web/components/vote/votes.js
+++ b/web/components/vote/votes.js
@@ -8,6 +8,7 @@ import * as DeskModel from "/services/model/desk-model.js";
 import * as DeskRoundModel from "/services/model/deskRound-model.js";
 import * as VoteModel from "/services/model/vote-model.js";
 import * as CandidateListModel from "/services/model/candidateList-model.js";
+import * as Common from "/services/common/common.js";
 
 export async function mount(parent) {
   const voteComponent = new Vote(parent);
@@ -52,7 +53,8 @@ class Vote {
       </header>
       <div id="votes-table"></div>
       <nav class="level">
-        <div class="level-left" id="votes-stats"></div>
+        <div class="level-left" id="votes-stats" style="margin: auto;
+        width: 100%;"></div>
         <div class="level-right">
           <button id="votes-return" class="button level-item">
             Retour
@@ -74,18 +76,12 @@ class Vote {
     await this.refreshBreadCrumb();
     await this.loadVotes();
 
-    let deskRound = await this.DeskRoundModel.getDeskRound(this.DeskRoundID);
-    if (deskRound.Validated) {
-      document.getElementById("votes-table").innerHTML = /* HTML */ `<article
-        class="message is-warning"
-      >
-        <div class="message-header">
-          <p>Votes validés</p>
-        </div>
-        <div class="message-body">
-          Les votes ont étaient validés et ne peuvent plus être modifiés
-        </div>
-      </article>`;
+    this.deskRound = await this.DeskRoundModel.getDeskRound(this.DeskRoundID);
+    if (this.deskRound.Validated) {
+      document.getElementById("votes-table").innerHTML = Common.warningMessage(
+        "Votes validés",
+        "Les votes ont étaient validés et ne peuvent plus être modifiés"
+      );
       document.getElementById("votes-stats").innerHTML = "";
       document.getElementById(`votes-cancel`).setAttribute("disabled", "true");
       document.getElementById(`votes-save`).setAttribute("disabled", "true");
@@ -139,8 +135,8 @@ class Vote {
     let election = await this.ElectionModel.getElection(round.ElectionID);
     let area = await this.AreaModel.getArea(this.AreaID);
     let deskRound = await this.DeskRoundModel.getDeskRound(this.DeskRoundID);
-    let desk = await this.DeskModel.getDesk(deskRound.DeskID);
-    let section = await this.SectionModel.getSection(desk.SectionID);
+    this.desk = await this.DeskModel.getDesk(deskRound.DeskID);
+    let section = await this.SectionModel.getSection(this.desk.SectionID);
 
     let breadcrumb = document.getElementById("vote-breadcrumb");
     let el = document.createElement("li");
@@ -161,7 +157,7 @@ class Vote {
     el.innerHTML = "<a>" + section.Name + "</a>";
     breadcrumb.appendChild(el);
     el = document.createElement("li");
-    el.innerHTML = "<a>" + desk.Name + "</a>";
+    el.innerHTML = "<a>" + this.desk.Name + "</a>";
     breadcrumb.appendChild(el);
   }
 
@@ -222,11 +218,18 @@ class Vote {
           vote.VoiceNumber;
       }
     });
-    document.getElementById("votes-stats").innerHTML =
-      "Suffrages total : " +
-      totalVotes +
-      ", Suffrages exprimés : " +
-      votesExpressed;
+    if (this.desk.Subscribed < totalVotes) {
+      document.getElementById("votes-stats").innerHTML = Common.warningMessage(
+        "Erreur de saisie",
+        "Il y a plus de votes saisis que d'inscrits sur le bureau de vote."
+      );
+    } else {
+      document.getElementById("votes-stats").innerHTML =
+        "Suffrages total : " +
+        totalVotes +
+        ", Suffrages exprimés : " +
+        votesExpressed;
+    }
   }
 
   async saveVotes() {
diff --git a/web/services/common/common.js b/web/services/common/common.js
index 658c53b513515ce6ea3be14b30895d5b5c7499cd..bd326592390e0fa40c6d54076c2b7eb696ca85a5 100644
--- a/web/services/common/common.js
+++ b/web/services/common/common.js
@@ -14,7 +14,8 @@ export let GID = (obj, id) => {
 
 export function RandomString(length) {
   let text = "";
-  const possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+  const possible =
+    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
   for (let i = 0; i < length; i++) {
     text += possible.charAt(Math.floor(Math.random() * possible.length));
   }
@@ -35,3 +36,14 @@ export function toggleModal(modalID, cardID) {
     AnimateCSS(card, "zoomIn");
   }
 }
+export function warningMessage(title, text) {
+  return /* HTML */ `<br />
+    <article class="message is-warning">
+      <div class="message-header">
+        <p>${title}</p>
+      </div>
+      <div class="message-body">
+        ${text}
+      </div>
+    </article>`;
+}