diff --git a/src/app/shared/components/training-type-picker/training-type-picker.component.html b/src/app/shared/components/training-type-picker/training-type-picker.component.html
index c32862de685ea6c076b24fc3412818df4049bfd1..1ca4604085a9db27db860a3e4bab5e7aef9b3469 100644
--- a/src/app/shared/components/training-type-picker/training-type-picker.component.html
+++ b/src/app/shared/components/training-type-picker/training-type-picker.component.html
@@ -6,8 +6,20 @@
           class="collapseHeader"
           fxLayoutAlign="flex-start center"
           fxLayout="row"
-          (click)="toggleCollapse(categorie.id)"
+          (click)="toggleCollapse(categorie.id); $event.stopPropagation()"
         >
+          <label class="checkbox">
+            <input
+              type="checkbox"
+              [checked]="getCategoryCheckboxStatus(categorie) === 'checked'"
+              (change)="pickAllCategory(categorie, $event.target.checked); $event.stopPropagation()"
+            />
+            <span
+              class="customCheck customCheckPrimary"
+              [ngClass]="{ halfCheck: getCategoryCheckboxStatus(categorie) === 'halfChecked' }"
+            ></span>
+          </label>
+
           <div class="titleCollapse">
             {{ categorie.name }}
           </div>
diff --git a/src/app/shared/components/training-type-picker/training-type-picker.component.scss b/src/app/shared/components/training-type-picker/training-type-picker.component.scss
index e394db9f922f1176881590736fd4d71bb47fc13c..4cf4a16600febd21322c9e2545f78b746ac442a8 100644
--- a/src/app/shared/components/training-type-picker/training-type-picker.component.scss
+++ b/src/app/shared/components/training-type-picker/training-type-picker.component.scss
@@ -47,6 +47,10 @@ button {
     @include lato-bold-14;
     margin-bottom: 12px;
   }
+  .checkbox {
+    width: 2.25rem;
+    margin-top: 0.2rem;
+  }
 
   button {
     background: none;
diff --git a/src/app/shared/components/training-type-picker/training-type-picker.component.ts b/src/app/shared/components/training-type-picker/training-type-picker.component.ts
index 751387b082accf9a54022b28abbf670b43b98824..77f4c990ef1baf59dafd816bed036c1f28ec6cc6 100644
--- a/src/app/shared/components/training-type-picker/training-type-picker.component.ts
+++ b/src/app/shared/components/training-type-picker/training-type-picker.component.ts
@@ -74,4 +74,25 @@ export class TrainingTypePickerComponent implements OnInit {
     }
     this.selectedType.emit(this.selectedChoices);
   }
+  public pickAllCategory(categorie: Category): void {
+    const index = this.selectedChoices.findIndex((_categorie) => _categorie.id === categorie.id);
+    if (this.getCategoryCheckboxStatus(categorie) === 'checked') {
+      this.selectedChoices[index].modules = [];
+    } else {
+      for (let module of categorie.modules) {
+        if (!this.isModulePicked(categorie, module)) this.selectedChoices[index].modules.push(module);
+      }
+    }
+  }
+
+  public getCategoryCheckboxStatus(c: Category): string {
+    const index = this.selectedChoices.findIndex((_categorie) => _categorie.id === c.id);
+    if (this.selectedChoices[index].modules.length === c.modules.length) {
+      return 'checked';
+    } else if (this.selectedChoices[index].modules.length === 0) {
+      return 'unchecked';
+    } else if (this.selectedChoices[index].modules.length && this.selectedChoices[index].modules.length > 0) {
+      return 'halfChecked';
+    }
+  }
 }
diff --git a/src/app/structure-list/components/modal-filter/modal-filter.component.scss b/src/app/structure-list/components/modal-filter/modal-filter.component.scss
index c443be97c66da9e684834422ef02baaa86034954..6f72e78f872b1f84f27a6200b3a3af9fee9a6787 100644
--- a/src/app/structure-list/components/modal-filter/modal-filter.component.scss
+++ b/src/app/structure-list/components/modal-filter/modal-filter.component.scss
@@ -96,20 +96,6 @@
         min-width: 0;
       }
       .categoryCheckBox {
-        .halfCheck {
-          position: relative;
-          &:before {
-            content: '';
-            position: absolute;
-            display: block;
-            width: 10px;
-            left: 4px;
-            top: 8px;
-            transform: rotate(0deg);
-            border-bottom: solid 2px $grey-2;
-            border-radius: 0;
-          }
-        }
         ul {
           display: none;
         }
diff --git a/src/styles.scss b/src/styles.scss
index 0155bc7df282fcb061e295e32f98dc1311c611a1..b3e3f2cbac5fcd167107e5361e6e45aac6c61ae5 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -209,11 +209,11 @@ button {
     opacity: 0;
     display: none;
     &:checked ~ .customCheck {
-      background-color: $grey-1;
+      background-color: $grey-3;
       border-color: transparent;
     }
     &:checked ~ .customCheckPrimary {
-      background-color: $primary-color;
+      background-color: $grey-1;
       border-color: transparent;
     }
     &:checked ~ .customCheck:after {
@@ -240,7 +240,7 @@ button {
     min-width: 18px;
     min-height: 18px;
     background-color: $white;
-    border: 1px solid $grey;
+    border: 1px solid $grey-3;
     cursor: pointer;
     position: relative;
     border-radius: 4px;
@@ -268,6 +268,20 @@ button {
     width: unset;
   }
 }
+.halfCheck {
+  position: relative;
+  &:before {
+    content: '';
+    position: absolute;
+    display: block;
+    width: 10px;
+    left: 4px;
+    top: 8px;
+    transform: rotate(0deg);
+    border-bottom: solid 2px $grey-2;
+    border-radius: 0;
+  }
+}
 
 // Layout
 .w-100 {