diff --git a/internal/models/election.go b/internal/models/election.go
index e62a10a21aca9e384dfc6d248c268e4f1b3e3244..24327bde6db41daa9b45f3a543250a5626a90062 100644
--- a/internal/models/election.go
+++ b/internal/models/election.go
@@ -112,7 +112,7 @@ func (d *DataHandler) putElection(w http.ResponseWriter, r *http.Request, id int
 func (d *DataHandler) deleteElection(w http.ResponseWriter, r *http.Request, id int) {
 	if id != 0 {
 		var o Election
-		if err := d.db.Preload("Areas").First(&o, id).Error; err != nil {
+		if err := d.db.Preload("Areas").Preload("Rounds").First(&o, id).Error; err != nil {
 			http.Error(w, ErrorIDIsMissing, http.StatusNotFound)
 			return
 		}
@@ -121,6 +121,10 @@ func (d *DataHandler) deleteElection(w http.ResponseWriter, r *http.Request, id
 			d.deleteArea(w, r, int(area.ID))
 		}
 
+		for _, round := range o.Rounds {
+			d.deleteRound(w, r, int(round.ID))
+		}
+
 		d.db.Delete(&o)
 	} else {
 		http.Error(w, ErrorIDIsMissing, http.StatusNotFound)
diff --git a/internal/rootmux/rootmux_test.go b/internal/rootmux/rootmux_test.go
index 7d19555a8c5181a3849f616f667d2d9342c2ddf0..6d86312698afd487b90c7e547ffaf7a0a5c8e780 100644
--- a/internal/rootmux/rootmux_test.go
+++ b/internal/rootmux/rootmux_test.go
@@ -162,6 +162,7 @@ func deletionInCascadeGenericElectionTest(t *testing.T) {
 		do("GET", "/api/Area/1", xsrfHeader, ``, 404, `id is missing`)
 		do("GET", "/api/Section/1", xsrfHeader, ``, 404, `id is missing`)
 		do("GET", "/api/Desk/1", xsrfHeader, ``, 404, `id is missing`)
+		do("GET", "/api/Round/1", xsrfHeader, ``, 404, `id is missing`)
 
 	}
 	// Do an OAuth2 login with an known admin
diff --git a/web/components/management/election.js b/web/components/management/election.js
index 17b5a3b178440c328316713630e2f7db5ef2624e..c316b223b1ea596546a2241c64dcf7a74e408852 100644
--- a/web/components/management/election.js
+++ b/web/components/management/election.js
@@ -243,7 +243,10 @@ class Election {
 
   electionTemplate(election) {
     return /* HTML */ `<div class="card card-list">
-      <div id="elections-election-${election.ID}" class="card-content clickable">
+      <div
+        id="elections-election-${election.ID}"
+        class="card-content clickable"
+      >
         <div class="content">
           <nav class="level">
             <div class="level-left">
@@ -342,9 +345,8 @@ class Election {
     this.parent.areaHandler.emptyAreas();
     this.parent.sectionHandler.emptySections();
     this.parent.deskHandler.emptyDesks();
-    document.getElementById("desk-new").setAttribute("disabled", "true");
-    document.getElementById("section-new").setAttribute("disabled", "true");
-    document.getElementById("area-new").setAttribute("disabled", "true");
+    document.getElementById("areas").style.display = "none";
+
   }
 
   cloneElection(election) {
diff --git a/web/components/management/rounds-card.js b/web/components/management/rounds-card.js
index b58847ac5f4c9afeb3f1f882e316257f45e48fc5..cd5540e024cfc08ab2dc795ee9d25f95e85e6eba 100644
--- a/web/components/management/rounds-card.js
+++ b/web/components/management/rounds-card.js
@@ -25,6 +25,7 @@ class Round {
   async mount(where) {
     this.ElectionModel.current_user = await Auth.GetUser();
     this.RoundModel.current_user = await Auth.GetUser();
+    this.RoundModel.refreshRounds();
     const mountpoint = where;
     document.getElementById(mountpoint).innerHTML = /* HTML */ `
       <header class="card-header">
@@ -38,7 +39,7 @@ class Round {
     `;
     this.mountModal("round-modal");
     this.handleDom();
-    this.displayRounds();
+    await this.displayRounds();
   }
 
   handleDom() {
diff --git a/web/components/vote/desk-round.js b/web/components/vote/desk-round.js
index dab0469fe98adede894f02e92adfb98c38730cd2..3dee00b3ab143a2b603dd5d8dccc00536e00c128 100644
--- a/web/components/vote/desk-round.js
+++ b/web/components/vote/desk-round.js
@@ -92,7 +92,10 @@ class DeskRoundSelector {
 
   deskRoundTemplate(deskRound) {
     return /* HTML */ `<div class="card card-list">
-      <div id="deskrounds-deskround-${deskRound.ID}" class="card-content clickable">
+      <div
+        id="deskrounds-deskround-${deskRound.ID}"
+        class="card-content clickable"
+      >
         <div class="content">
           <nav class="level">
             <div
@@ -111,17 +114,27 @@ class DeskRoundSelector {
       "input",
       function (event) {
         if (event.target.id === "election-select") {
-          deskRoundHandler.loadRounds(event.target.value);
+          deskRoundHandler.ElectionID = event.target.value;
+          deskRoundHandler.clearRounds();
+          deskRoundHandler.clearAreas();
+          deskRoundHandler.clearSections();
+          deskRoundHandler.loadRounds();
         }
         if (event.target.id === "round-select") {
-          deskRoundHandler.loadAreas(event.target.value);
+          deskRoundHandler.RoundID = event.target.value;
+          deskRoundHandler.clearAreas();
+          deskRoundHandler.clearSections();
+          deskRoundHandler.loadAreas();
         }
         if (event.target.id === "area-select") {
-          deskRoundHandler.loadSections(event.target.value);
+          deskRoundHandler.AreaID = event.target.value;
+          deskRoundHandler.clearSections();
+          deskRoundHandler.loadSections();
         }
         if (event.target.id === "section-select") {
-          deskRoundHandler.loadDesks(event.target.value);
+          deskRoundHandler.SectionID = event.target.value;
         }
+        deskRoundHandler.loadDesks();
       },
       false
     );
@@ -141,21 +154,18 @@ class DeskRoundSelector {
       selectElection.appendChild(el);
     });
 
-    this.loadRounds(elections[0].ID);
+    this.ElectionID = elections[0].ID;
+    this.loadRounds();
   }
 
-  async loadRounds(ElectionID) {
-    this.ElectionID = ElectionID;
+  async loadRounds() {
     let deskRoundHandler = this;
     let selectRound = document.getElementById("round-select");
     let rounds = await this.RoundModel.getRounds();
-    rounds.filter((round) => {
+    rounds = rounds.filter((round) => {
       return round.ElectionID == deskRoundHandler.ElectionID;
     });
 
-    for (let i = selectRound.options.length - 1; i >= 0; i--) {
-      selectRound.remove(i);
-    }
     rounds.forEach(async (round) => {
       let election = await this.ElectionModel.getElection(round.ElectionID);
       let el = document.createElement("option");
@@ -169,12 +179,9 @@ class DeskRoundSelector {
       el.value = round.ID;
       selectRound.appendChild(el);
     });
-
-    this.loadAreas(rounds[0].ID);
   }
 
-  async loadAreas(RoundID) {
-    this.RoundID = RoundID;
+  async loadAreas() {
     let deskRoundHandler = this;
     let selectArea = document.getElementById("area-select");
     let areas = await this.AreaModel.getAreas();
@@ -182,21 +189,15 @@ class DeskRoundSelector {
       return area.ElectionID == deskRoundHandler.ElectionID;
     });
 
-    for (let i = selectArea.options.length - 1; i >= 0; i--) {
-      selectArea.remove(i);
-    }
     areas.forEach(async (area) => {
       let el = document.createElement("option");
       el.textContent = area.Name;
       el.value = area.ID;
       selectArea.appendChild(el);
     });
-
-    this.loadSections(areas[0].ID);
   }
 
-  async loadSections(AreaID) {
-    this.AreaID = AreaID;
+  async loadSections() {
     let deskRoundHandler = this;
     let selectSection = document.getElementById("section-select");
     let sections = await this.SectionModel.getSections();
@@ -204,26 +205,22 @@ class DeskRoundSelector {
       return section.AreaID == deskRoundHandler.AreaID;
     });
 
-    for (let i = selectSection.options.length - 1; i >= 0; i--) {
-      selectSection.remove(i);
-    }
     sections.forEach((section) => {
       let el = document.createElement("option");
       el.textContent = section.Name;
       el.value = section.ID;
       selectSection.appendChild(el);
     });
-
-    this.loadDesks(sections[0].ID);
   }
 
-  async loadDesks(SectionID) {
-    this.SectionID = SectionID;
+  async loadDesks() {
     let deskRoundHandler = this;
     let deskRounds = await this.DeskRoundModel.getDeskRounds();
+
     deskRounds = deskRounds.filter((deskRound) => {
       return deskRound.RoundID == deskRoundHandler.RoundID;
     });
+    // Filter the desks to display only the one affected to capturer
     if (this.DeskRoundModel.current_user.role === "CAPTURER") {
       let capturer = await this.CapturerModel.getCapturerByUserID(
         this.DeskRoundModel.current_user.id
@@ -237,13 +234,34 @@ class DeskRoundSelector {
       }
       deskRounds = deskRoundsToKeep;
     }
+
+    let selectRound = document.getElementById("round-select");
+    if (selectRound.value == 0) {
+      deskRounds = [];
+    }
     let deskRoundsFiltered = [];
-    for (let deskRound of deskRounds) {
-      let desk = await deskRoundHandler.DeskModel.getDesk(deskRound.DeskID);
-      if (desk.SectionID == deskRoundHandler.SectionID)
-        deskRoundsFiltered.push(deskRound);
+    let selectArea = document.getElementById("area-select");
+    if (selectArea.value != 0) {
+      let area = await this.AreaModel.getArea(selectArea.value);
+      for (let i in area.Sections) {
+        for (let deskRound of deskRounds) {
+          let desk = await deskRoundHandler.DeskModel.getDesk(deskRound.DeskID);
+          if (desk.SectionID == area.Sections[i].ID)
+            deskRoundsFiltered.push(deskRound);
+        }
+      }
+      deskRounds = deskRoundsFiltered;
+    }
+    deskRoundsFiltered = [];
+    let selectSection = document.getElementById("section-select");
+    if (selectSection.value != 0) {
+      for (let deskRound of deskRounds) {
+        let desk = await deskRoundHandler.DeskModel.getDesk(deskRound.DeskID);
+        if (desk.SectionID == deskRoundHandler.SectionID)
+          deskRoundsFiltered.push(deskRound);
+      }
+      deskRounds = deskRoundsFiltered;
     }
-    deskRounds = deskRoundsFiltered;
     const markup = deskRounds
       .map((deskRound) => this.deskRoundTemplate(deskRound))
       .join("");
@@ -269,4 +287,37 @@ class DeskRoundSelector {
       deskRound.ID
     );
   }
+
+  clearRounds() {
+    let selectRound = document.getElementById("round-select");
+    for (let i = selectRound.options.length - 1; i >= 0; i--) {
+      selectRound.remove(i);
+    }
+    let el = document.createElement("option");
+    el.textContent = "Veuillez sélectionner un tour";
+    el.value = 0;
+    selectRound.appendChild(el);
+  }
+
+  clearAreas() {
+    let selectArea = document.getElementById("area-select");
+    for (let i = selectArea.options.length - 1; i >= 0; i--) {
+      selectArea.remove(i);
+    }
+    let el = document.createElement("option");
+    el.textContent = "Veuillez sélectionner une circonscription";
+    el.value = 0;
+    selectArea.appendChild(el);
+  }
+
+  clearSections() {
+    let selectSection = document.getElementById("section-select");
+    for (let i = selectSection.options.length - 1; i >= 0; i--) {
+      selectSection.remove(i);
+    }
+    let el = document.createElement("option");
+    el.textContent = "Veuillez sélectionner une section";
+    el.value = 0;
+    selectSection.appendChild(el);
+  }
 }