diff --git a/src/utils/index.js b/src/utils/index.js
index 1a6d59b56c11048441baa97c1373c39f8b267dfd..814c7f12fc889681b36cf515a29b2982afe0cba9 100644
--- a/src/utils/index.js
+++ b/src/utils/index.js
@@ -1,4 +1,39 @@
 export function parseDate(date) {
   let dateArr = date.split('/').reverse();
   return new Date(dateArr[0], dateArr[1] - 1, dateArr[2]);
+}
+
+export function allowedStatus2change(statusChoices, isModerate, userStatus, isOwnFeature, currentRouteName) {
+  if ( //* si admin, modérateur ou super contributeur, statuts toujours disponibles: Brouillon, Publié, Archivé
+    userStatus === 'Modérateur' ||
+      userStatus === 'Administrateur projet' ||
+      (userStatus === 'Super Contributeur' && !isModerate)
+  ) {
+    return statusChoices.filter((el) => el.value !== 'pending');
+  } else if (userStatus === 'Super Contributeur' && isModerate) {
+    return statusChoices.filter(
+      (el) => el.value === 'draft' || el.value === 'pending'
+    );
+  } else if (userStatus === 'Contributeur') { //* cas particuliers du contributeur
+    if (currentRouteName === 'ajouter-signalement' || !isOwnFeature) {
+      //* même cas à l'ajout d'une feature ou si feature n'a pas été créé par le contributeur
+      return isModerate
+        ? statusChoices.filter(
+          (el) => el.value === 'draft' || el.value === 'pending'
+        )
+        : statusChoices.filter(
+          (el) => el.value === 'draft' || el.value === 'published'
+        );
+    } else {
+      //* à l'édition d'une feature et si le contributeur est l'auteur de la feature
+      return isModerate
+        ? statusChoices.filter(
+          (el) => el.value !== 'published' //* toutes sauf "Publié"
+        )
+        : statusChoices.filter(
+          (el) => el.value !== 'pending' //* toutes sauf "En cours de publication"
+        );
+    }
+  }
+  return [];
 }
\ No newline at end of file
diff --git a/src/views/feature/Feature_edit.vue b/src/views/feature/Feature_edit.vue
index f6c7ec607324c3286f0f84f132120869bcc3d834..c54f912ee7a7d0ac66356e40e07ce5b30fd3e864 100644
--- a/src/views/feature/Feature_edit.vue
+++ b/src/views/feature/Feature_edit.vue
@@ -304,6 +304,7 @@ import featureAPI from '@/services/feature-api';
 import L from 'leaflet';
 import 'leaflet-draw';
 import { mapUtil } from '@/assets/js/map-util.js';
+import { allowedStatus2change } from '@/utils';
 import axios from '@/axios-client.js';
 import flip from '@turf/flip';
 
@@ -422,48 +423,11 @@ export default {
     },
 
     allowedStatusChoices() {
-      if (this.project) {
+      if (this.project && this.feature && this.user) {
         const isModerate = this.project.moderation;
         const userStatus = this.USER_LEVEL_PROJECTS[this.project.slug];
-        const isOwnFeature = this.feature
-          ? this.feature.creator === this.user.id //* prevent undefined feature
-          : false; //* si le contributeur est l'auteur du signalement
-        if (
-          //* si admin, modérateur ou super contributeur, statuts toujours disponible: Brouillon, Publié, Archivé
-          userStatus === 'Modérateur' ||
-          userStatus === 'Administrateur projet' ||
-          (userStatus === 'Super Contributeur' && !isModerate)
-        ) {
-          return this.statusChoices.filter((el) => el.value !== 'pending');
-        } else if (userStatus === 'Super Contributeur' && isModerate) {
-          return this.statusChoices.filter(
-            (el) => el.value === 'draft' || el.value === 'pending'
-          );
-        } else if (userStatus === 'Contributeur') {
-          //* cas particuliers du contributeur
-          if (
-            this.currentRouteName === 'ajouter-signalement' ||
-            !isOwnFeature
-          ) {
-            //* même cas à l'ajout d'une feature ou si feature n'a pas été créé par le contributeur
-            return isModerate
-              ? this.statusChoices.filter(
-                (el) => el.value === 'draft' || el.value === 'pending'
-              )
-              : this.statusChoices.filter(
-                (el) => el.value === 'draft' || el.value === 'published'
-              );
-          } else {
-            //* à l'édition d'une feature et si le contributeur est l'auteur de la feature
-            return isModerate
-              ? this.statusChoices.filter(
-                (el) => el.value !== 'published' //* toutes sauf "Publié"
-              )
-              : this.statusChoices.filter(
-                (el) => el.value !== 'pending' //* toutes sauf "En cours de publication"
-              );
-          }
-        }
+        const isOwnFeature = this.feature.creator === this.user.id; //* si le contributeur est l'auteur du signalement
+        return allowedStatus2change(this.statusChoices, isModerate, userStatus, isOwnFeature, this.currentRouteName);
       }
       return [];
     },
diff --git a/src/views/feature/Feature_list.vue b/src/views/feature/Feature_list.vue
index c841ce465f3f3b81d721f980e11074b211dbf1ea..ea80fcc80e132fd04b95f9328f8e30bd578ad7d4 100644
--- a/src/views/feature/Feature_list.vue
+++ b/src/views/feature/Feature_list.vue
@@ -131,7 +131,7 @@
         <label>Statut</label>
         <!--  //* giving an object mapped on key name -->
         <Dropdown
-          :options="statusChoices"
+          :options="filteredStatusChoices"
           :selected="form.status.selected.name"
           :selection.sync="form.status.selected"
           :search="true"
@@ -245,6 +245,7 @@ import SidebarLayers from '@/components/map-layers/SidebarLayers';
 import FeatureListTable from '@/components/feature/FeatureListTable';
 import Dropdown from '@/components/Dropdown.vue';
 import axios from '@/axios-client.js';
+import { allowedStatus2change } from '@/utils';
 
 export default {
   name: 'FeatureList',
@@ -266,24 +267,6 @@ export default {
         },
         status: {
           selected: '',
-          choices: [
-            {
-              name: 'Brouillon',
-              value: 'draft',
-            },
-            {
-              name: 'En attente de publication',
-              value: 'pending',
-            },
-            {
-              name: 'Publié',
-              value: 'published',
-            },
-            {
-              name: 'Archivé',
-              value: 'archived',
-            },
-          ],
         },
         title: null,
       },
@@ -322,51 +305,32 @@ export default {
       'project',
     ]),
     ...mapState('feature', [
-      'checkedFeatures'
+      'checkedFeatures',
+      'statusChoices',
     ]),
     ...mapState('feature_type', [
-      'feature_types'
+      'feature_types',
     ]),
     ...mapState('map', [
-      'basemaps'
+      'basemaps',
     ]),
 
     API_BASE_URL() {
       return this.$store.state.configuration.VUE_APP_DJANGO_API_BASE;
     },
 
-    statusChoices() {
+    filteredStatusChoices() {
       //* if project is not moderate, remove pending status
-      return this.form.status.choices.filter((el) =>
+      return this.statusChoices.filter((el) =>
         this.project && this.project.moderation ? true : el.value !== 'pending'
       );
     },
-
     availableStatus() {
-      if (this.project) {
+      if (this.project && this.user) {
         const isModerate = this.project.moderation;
-        const userStatus = this.USER_LEVEL_PROJECTS[this.projectSlug];
-
-        switch (userStatus) {
-        case 'Administrateur projet' : //* ajout de 'pending' si projet modéré
-          return isModerate ? this.statusChoices : this.statusChoices.filter((el) => el.value !== 'pending');
-
-        case 'Modérateur' :
-          console.log('Modérateur', isModerate);
-          return isModerate ?
-            this.statusChoices.filter((el) => el.value !== 'archived') :  //* ajout de 'pending' si projet modéré
-            this.statusChoices.filter(
-              (el) => el.value === 'draft' || el.value === 'published'
-            );
-
-        case 'Super Contributeur' :
-        case 'Contributeur' :
-          return isModerate ?
-            this.statusChoices.filter((el) => el.value === 'draft') :
-            this.statusChoices.filter( //* ajout de 'published' si projet non-modéré
-              (el) => el.value === 'draft' || el.value === 'published'
-            );
-        }
+        const userStatus = this.USER_LEVEL_PROJECTS[this.project.slug];
+        const isOwnFeature = true; //* dans ce cas le contributeur est toujours l'auteur des signalements qu'il peut modifier
+        return allowedStatus2change(this.statusChoices, isModerate, userStatus, isOwnFeature);
       }
       return [];
     },