diff --git a/internal/models/capturer.go b/internal/models/capturer.go
index f404ef30bea434f447d3a573b2dd312d0c3eb3a3..d8c4d1cd7885cfa7bd3d94f7a5a94668deb825bb 100644
--- a/internal/models/capturer.go
+++ b/internal/models/capturer.go
@@ -137,7 +137,7 @@ func (d *DataHandler) deleteCapturerAdmin(w http.ResponseWriter, r *http.Request
 			http.Error(w, ErrorIDIsMissing, http.StatusNotFound)
 			return
 		}
-		d.db.Delete(&o)
+		d.db.Unscoped().Delete(&o)
 	} else {
 		http.Error(w, ErrorIDIsMissing, http.StatusNotFound)
 	}
diff --git a/web/components/users/handleUser.js b/web/components/users/handleUser.js
index 33ce4ac7e9138ceb742306d583ef2b1c986d8227..dbd0df6bd11565b06e7a2bc910bc94fd973e61f7 100644
--- a/web/components/users/handleUser.js
+++ b/web/components/users/handleUser.js
@@ -226,6 +226,11 @@ class HandleUser {
       let user = await response.json();
       if (user != undefined && user.role == "CAPTURER")
         await this.postCapturer(user, method);
+      else if (user.role != "CAPTURER") {
+        let capturer = await Auth.getCapturerByUserID(user.id, current_user);
+        if (capturer != undefined)
+          await this.CapturerModel.deleteCapturer(capturer.ID);
+      }
       this.parent.displayUsers();
     } catch (e) {
       Messages.Show("is-warning", e.message);
@@ -236,9 +241,11 @@ class HandleUser {
 
   async postCapturer(user, method) {
     let capturer;
-    if (method === "PUT")
-      capturer = await Auth.getCapturerByUserID(user.id, current_user);
-    else capturer = {};
-    this.CapturerModel.saveCapturer(method, capturer.ID, user.ID, user.name);
+    capturer = await Auth.getCapturerByUserID(user.id, current_user);
+    if (capturer == undefined) {
+      capturer = { ID: 0 };
+      method = "POST";
+    }
+    this.CapturerModel.saveCapturer(method, capturer.ID, user.id, user.name);
   }
 }
diff --git a/web/services/model/capturer-model.js b/web/services/model/capturer-model.js
index 04ad05bf8078ce0d11c386ae4c3834364293043b..dce3f9fe7f190be0f740f6e6b6aa69b6cba0e478 100644
--- a/web/services/model/capturer-model.js
+++ b/web/services/model/capturer-model.js
@@ -55,10 +55,10 @@ class CapturerModel {
 
   async saveCapturer(method, ID, UserID, Name) {
     try {
-      const response = await fetch("/api/Capturer/" + capturer.ID, {
+      const response = await fetch("/api/Capturer/" + ID, {
         method: method,
         headers: new Headers({
-          "XSRF-Token": current_user.xsrftoken,
+          "XSRF-Token": this.current_user.xsrftoken,
         }),
         body: JSON.stringify({
           ID: ID,
@@ -68,11 +68,10 @@ class CapturerModel {
       });
       if (response.status !== 200) {
         throw new Error(
-          `Capturer could not be deleted (status ${response.status})`
+          `Capturer could not be saved (status ${response.status})`
         );
       }
       this.refreshCapturers();
-      Messages.Show("is-success", "Bureau de vote mis à jour");
       return await response.json();
     } catch (e) {
       Messages.Show("is-warning", e.message);
@@ -94,6 +93,7 @@ class CapturerModel {
           `Capturer could not be deleted (status ${response.status})`
         );
       }
+      this.refreshCapturers();
     } catch (e) {
       Messages.Show("is-warning", e.message);
       console.error(e);