diff --git a/src/features/badge/components/LinkedBadges.vue b/src/features/badge/components/LinkedBadges.vue
index eaea95d0a54a71953dab2d0e092be1a654e36fd5..13a5e91aa26098301b4d2dc80936e151ac289967 100644
--- a/src/features/badge/components/LinkedBadges.vue
+++ b/src/features/badge/components/LinkedBadges.vue
@@ -23,7 +23,7 @@ function openBadge(badgeId: string) {
 
 <template>
     <template v-if="connectedBadges.length > 0">
-        <h3 class="field-title">Badges connectés</h3>
+        <h3 class="field-title">Badges associés</h3>
         <hr class="separator">
         <div class="badges">
             <BadgeItem
diff --git a/src/features/forms/FormPanel.vue b/src/features/forms/FormPanel.vue
index ba9e8905bb2e355e157ca5ca258b795abe1b71cb..f62616e1e54db78cffd5d7a55aa485061727c17f 100644
--- a/src/features/forms/FormPanel.vue
+++ b/src/features/forms/FormPanel.vue
@@ -3,7 +3,7 @@ import { useEditorStore } from '../../shared/stores';
 import FormButton from './components/FormButton.vue';
 import GenericField from './components/GenericField.vue';
 import { Input } from '@/src/shared/interfaces';
-import { deleteBadge, editorService } from '@/src/shared/services';
+import { addNewBadge, deleteBadge, editorService } from '@/src/shared/services';
 import { createToaster } from '@meforma/vue-toaster';
 import {
     confirmDelete,
@@ -36,7 +36,7 @@ function actionOnForm(action: string) {
     case 'back-to-page':
         editorStore.openPage();
         break;
-    
+
     case 'duplicate-element':
         duplicateContent();
         break;
@@ -63,6 +63,9 @@ function actionOnForm(action: string) {
         editorStore.openEpoc();
         break;
 
+    case 'add-badge':
+        addNewBadge();
+        break;
     }
 
 }
diff --git a/src/features/forms/components/inputs/badges/BadgesInput.vue b/src/features/forms/components/inputs/badges/BadgesInput.vue
index 2cac7fb404efb9ed35df40dde93d5ae9583ad759..7be85dac087b807826ebffcd7d0f2a09c2ec8345 100644
--- a/src/features/forms/components/inputs/badges/BadgesInput.vue
+++ b/src/features/forms/components/inputs/badges/BadgesInput.vue
@@ -1,22 +1,14 @@
 <script setup lang="ts">
 import BadgeItem from '@/src/features/badge/components/BadgeItem.vue';
 import AddBadge from './components/AddBadge.vue';
-import { useEditorStore } from '@/src/shared/stores/editorStore';
 import { computed, ComputedRef } from 'vue';
-import { generateContentId } from '@/src/shared/services';
 import { Badge } from '@/src/shared/interfaces';
-import { saveState } from '@/src/shared/services/undoRedo.service';
-
-const editorStore = useEditorStore();
+import { addNewBadge, openBadge } from '@/src/shared/services';
 
 const props = defineProps<{
     inputValue: string[];
 }>();
 
-function openBadge(badgeId: string) {
-    editorStore.openBadgeFormPanel(badgeId, 'custom');
-}
-
 const badges: ComputedRef<Badge[]> = computed(() => {
     const res: Badge[] = [];
     for(let value in props.inputValue) {
@@ -33,24 +25,6 @@ const badges: ComputedRef<Badge[]> = computed(() => {
     return res;
 });
 
-function addNewBadge() {
-    saveState(true);
-
-    const epocNode = editorStore.getEpocNode;
-    if(!epocNode.data.formValues['badges']) epocNode.data.formValues['badges'] = {};
-
-    const id = generateContentId();
-    epocNode.data.formValues['badges'][id] = {
-        title: '',
-        icon: '',
-        description: '',
-        rule: {
-            'and': []
-        }
-    };
-    openBadge(id);
-}
-
 </script>
 
 <template>
diff --git a/src/shared/data/forms/formButtons.data.ts b/src/shared/data/forms/formButtons.data.ts
index 5a82e880a0324b3ebd469eeebb1dbf499d43dbb8..04eace3440dec7ac9631c1113909b5cdcdfcbca0 100644
--- a/src/shared/data/forms/formButtons.data.ts
+++ b/src/shared/data/forms/formButtons.data.ts
@@ -1,7 +1,7 @@
 import { FormButton } from '@/src/shared/interfaces';
 import env from '@/src/shared/utils/env';
 
-export const baseButtons = [{ label: 'Supprimer', icon: 'icon-supprimer', action: 'delete' }];
+export const baseButtons = [{ label: 'Supprimer', icon: 'icon-supprimer', action: 'delete' }, { label: 'Ajouter un badge', icon: 'icon-plus', action: 'add-badge'}];
 
 export const pageButtons: FormButton[] = env.isDev ? [
     ...baseButtons,
diff --git a/src/shared/services/badge.service.ts b/src/shared/services/badge.service.ts
index a504598ef1595ede51d1265c58086e89d1a9fb3e..25dd5946ae6fdc9a3efbb1b62648f1f049e8cdc3 100644
--- a/src/shared/services/badge.service.ts
+++ b/src/shared/services/badge.service.ts
@@ -4,6 +4,7 @@ import { useEditorStore } from '@/src/shared/stores';
 import { useVueFlow} from '@vue-flow/core';
 import { saveState } from '@/src/shared/services/undoRedo.service';
 import { elementVerbs, verbs } from '@/src/shared/data';
+import { generateContentId } from '@/src/shared/services';
 
 const { findNode } = useVueFlow({id: 'main'});
 
@@ -170,4 +171,31 @@ export function deleteBadge(id: string) {
 
     const epocNode = findNode('1');
     delete epocNode.data.formValues.badges[id];
+}
+
+export function openBadge(badgeId: string) {
+    const editorStore = useEditorStore();
+
+    editorStore.openBadgeFormPanel(badgeId, 'custom');
+}
+
+export function addNewBadge() {
+    const editorStore = useEditorStore();
+
+    saveState(true);
+
+    const epocNode = editorStore.getEpocNode;
+    if(!epocNode.data.formValues['badges']) epocNode.data.formValues['badges'] = {};
+
+    const id = generateContentId();
+    epocNode.data.formValues['badges'][id] = {
+        title: '',
+        icon: '',
+        description: '',
+        rule: {
+            'and': []
+        }
+    };
+
+    openBadge(id);
 }
\ No newline at end of file