diff --git a/package-lock.json b/package-lock.json
index 081023ce893e265db11bf6fb3edf24b34de8e5ca..6004e693874060784a13128e86d503b2ced3fec6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3412,6 +3412,31 @@
       "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
       "dev": true
     },
+    "ag-grid-angular": {
+      "version": "26.2.0",
+      "resolved": "https://registry.npmjs.org/ag-grid-angular/-/ag-grid-angular-26.2.0.tgz",
+      "integrity": "sha512-IJYNniJkQXQhEMdsZ50MFMY80K3PQGsh4Jh1Nu7G1Det5Pq2QNPgZ/FwNucsxYDPn32VICVVlUEQTwtEl63FZQ==",
+      "requires": {
+        "tslib": "^1.10.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+        }
+      }
+    },
+    "ag-grid-community": {
+      "version": "26.2.1",
+      "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-26.2.1.tgz",
+      "integrity": "sha512-aChSGNdPkBda4BhOUUEAmAkRlIG7rFU8UTXx3NPStavrCOHKLDRV90djIKuiXfM6ONBqKmeqw2as0yuLnSN8dw=="
+    },
+    "ag-grid-enterprise": {
+      "version": "26.2.1",
+      "resolved": "https://registry.npmjs.org/ag-grid-enterprise/-/ag-grid-enterprise-26.2.1.tgz",
+      "integrity": "sha512-DSf+PPRHv9JXhWTg7KSEm9+ixYAEPuo3LKBUzowUCQWvygGiWBrZXEB67MnjW+Z9zULeFhU4Z6OuHbnQUDhCag=="
+    },
     "agent-base": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
diff --git a/package.json b/package.json
index 647ecf9016492e037f7cb8346b338a7d34266b9f..f398797d8279065913e5ca25d769d2a925db9fea 100644
--- a/package.json
+++ b/package.json
@@ -29,6 +29,9 @@
     "@angular/router": "~11.2.12",
     "@asymmetrik/ngx-leaflet": "^8.1.0",
     "@ngx-translate/core": "^13.0.0",
+    "ag-grid-angular": "^26.2.0",
+    "ag-grid-community": "^26.2.1",
+    "ag-grid-enterprise": "^26.2.1",
     "json-server": "^0.16.2",
     "jwt-decode": "^3.1.2",
     "leaflet": "^1.7.1",
diff --git a/src/app/admin/admin.module.ts b/src/app/admin/admin.module.ts
index e100d9c52db3bddf5f9770fbe53b5e9d31e6667f..29e6689e76c172fe4492ad8f8c8000fb9b792e6c 100644
--- a/src/app/admin/admin.module.ts
+++ b/src/app/admin/admin.module.ts
@@ -2,14 +2,30 @@ import { NgModule } from '@angular/core';
 import { CommonModule } from '@angular/common';
 import { PanelComponent } from './components/panel/panel.component';
 import { ClaimStructureComponent } from './components/claim-structure/claim-structure.component';
-import { DeleteUserComponent } from './components/delete-user/delete-user.component';
+import { ManageUsersComponent } from './components/manage-users/manage-users.component';
 import { SharedModule } from '../shared/shared.module';
 import { NewsletterUsersComponent } from './components/newsletter-users/newsletter-users.component';
 import { AdminStructuresListComponent } from './components/structures-list/admin-structures-list.component';
 import { AdminRoutingModule } from './admin-routing.module';
+import { AgGridModule } from 'ag-grid-angular';
+import { DeleteUserComponent } from './components/manage-users/delete-user/delete-user.component';
+import { AdministredStructuresComponent } from './components/manage-users/administred-structures/administred-structures.component';
 
 @NgModule({
-  declarations: [PanelComponent, ClaimStructureComponent, DeleteUserComponent, NewsletterUsersComponent, AdminStructuresListComponent],
-  imports: [CommonModule, AdminRoutingModule, SharedModule],
+  declarations: [
+    PanelComponent,
+    ClaimStructureComponent,
+    NewsletterUsersComponent,
+    AdminStructuresListComponent,
+    ManageUsersComponent,
+    DeleteUserComponent,
+    AdministredStructuresComponent,
+  ],
+  imports: [
+    CommonModule,
+    AdminRoutingModule,
+    SharedModule,
+    AgGridModule.withComponents([DeleteUserComponent, AdministredStructuresComponent]),
+  ],
 })
 export class AdminModule {}
diff --git a/src/app/admin/components/delete-user/delete-user.component.html b/src/app/admin/components/delete-user/delete-user.component.html
deleted file mode 100644
index 5649bff291a72590b0f0f6d65fbce1f30fb3458b..0000000000000000000000000000000000000000
--- a/src/app/admin/components/delete-user/delete-user.component.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<div fxLayout="column" fxLayoutGap="5px" fxLayoutAlign="center center" class="userBlock">
-  <h4>Suppression d'utilisateurs</h4>
-  <div fxLayout="row">
-    <input #searchstring (keyup)="(0)" />
-    <button (click)="searchUsers(searchstring.value)">Rechercher</button>
-  </div>
-  <div class="userList">
-    <tr *ngFor="let user of users">
-      <td>{{ user.email }}</td>
-      <td>
-        <button (click)="toggleDeleteModal(user)">Supprimer</button>
-      </td>
-    </tr>
-    <app-modal-confirmation
-      *ngIf="userToDelete"
-      [openned]="deleteModalOpenned"
-      [content]="'Voulez-vous vraiment supprimer cet utilisateur&nbsp;? (' + userToDelete.email + ')'"
-      (closed)="deleteUser(userToDelete, $event)"
-    ></app-modal-confirmation>
-    <div *ngIf="users && users.length == 0">Aucun résultat</div>
-  </div>
-</div>
diff --git a/src/app/admin/components/delete-user/delete-user.component.ts b/src/app/admin/components/delete-user/delete-user.component.ts
deleted file mode 100644
index 293324fe75e915db8f30a2c891097a7f6a0508ed..0000000000000000000000000000000000000000
--- a/src/app/admin/components/delete-user/delete-user.component.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { Component } from '@angular/core';
-import { User } from '../../../models/user.model';
-import { ProfileService } from '../../../profile/services/profile.service';
-import { AdminService } from '../../services/admin.service';
-
-@Component({
-  selector: 'app-admin-delete-user',
-  templateUrl: './delete-user.component.html',
-})
-export class DeleteUserComponent {
-  public users: User[];
-  public deleteModalOpenned = false;
-  public userToDelete: User = null;
-
-  constructor(private adminService: AdminService, private profileService: ProfileService) {}
-
-  public deleteUser(user: User, shouldDelete: boolean): void {
-    this.toggleDeleteModal(user);
-    if (shouldDelete) {
-      this.adminService.deleteUser(user._id).subscribe((data) => {
-        this.users = this.users.filter((obj) => obj.email !== data.email);
-      });
-    }
-  }
-
-  public toggleDeleteModal(userToDelete: User): void {
-    this.userToDelete = userToDelete;
-    this.deleteModalOpenned = !this.deleteModalOpenned;
-  }
-
-  public searchUsers(searchString: string): void {
-    this.adminService.searchUsers(searchString).subscribe((users) => {
-      this.profileService.getProfile().then((profile) => {
-        this.users = users.filter((obj) => obj.email != profile.email);
-      });
-    });
-  }
-}
diff --git a/src/app/admin/components/manage-users/administred-structures/administred-structures.component.html b/src/app/admin/components/manage-users/administred-structures/administred-structures.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..5943c02508cc249d4af1f7e050cf1602f76b7585
--- /dev/null
+++ b/src/app/admin/components/manage-users/administred-structures/administred-structures.component.html
@@ -0,0 +1,5 @@
+<div id="structure-list" *ngIf="structures.data.structures && structures.data.structures.length != 0">
+  <p *ngFor="let structure of structures.data.structures">
+    <a href="/acteurs?id={{ structure._id }}" target="_blank">{{ structure.structureName }}</a>
+  </p>
+</div>
diff --git a/src/app/admin/components/manage-users/administred-structures/administred-structures.component.scss b/src/app/admin/components/manage-users/administred-structures/administred-structures.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..b00c527073b4897ce1f61c3d5e7ca3ebfb8f21a9
--- /dev/null
+++ b/src/app/admin/components/manage-users/administred-structures/administred-structures.component.scss
@@ -0,0 +1,4 @@
+p {
+  margin-top: 0px;
+  margin-bottom: 0px;
+}
diff --git a/src/app/admin/components/manage-users/administred-structures/administred-structures.component.spec.ts b/src/app/admin/components/manage-users/administred-structures/administred-structures.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..37b12c7b44b509c2d55fce5b860958ffb988acaa
--- /dev/null
+++ b/src/app/admin/components/manage-users/administred-structures/administred-structures.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AdministredStructuresComponent } from './administred-structures.component';
+
+describe('AdministredStructuresComponent', () => {
+  let component: AdministredStructuresComponent;
+  let fixture: ComponentFixture<AdministredStructuresComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ AdministredStructuresComponent ]
+    })
+    .compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(AdministredStructuresComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/src/app/admin/components/manage-users/administred-structures/administred-structures.component.ts b/src/app/admin/components/manage-users/administred-structures/administred-structures.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3ea76eb873355a8f4fca820c2134da4313d2a171
--- /dev/null
+++ b/src/app/admin/components/manage-users/administred-structures/administred-structures.component.ts
@@ -0,0 +1,14 @@
+import { Component } from '@angular/core';
+
+@Component({
+  selector: 'app-administred-structures',
+  templateUrl: './administred-structures.component.html',
+  styleUrls: ['./administred-structures.component.scss'],
+})
+export class AdministredStructuresComponent {
+  public structures: any;
+
+  public agInit(params: any): void {
+    this.structures = params;
+  }
+}
diff --git a/src/app/admin/components/manage-users/delete-user/delete-user.component.html b/src/app/admin/components/manage-users/delete-user/delete-user.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..9c0b02eff6867621545a7bd8cbea54913ee03629
--- /dev/null
+++ b/src/app/admin/components/manage-users/delete-user/delete-user.component.html
@@ -0,0 +1 @@
+<button type="button" (click)="onClick()">{{ label }}</button>
diff --git a/src/app/admin/components/manage-users/delete-user/delete-user.component.spec.ts b/src/app/admin/components/manage-users/delete-user/delete-user.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f09901c99926b570f87c1c9e7774550f0339d6f6
--- /dev/null
+++ b/src/app/admin/components/manage-users/delete-user/delete-user.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DeleteUserComponent } from './delete-user.component';
+
+describe('DeleteUserComponent', () => {
+  let component: DeleteUserComponent;
+  let fixture: ComponentFixture<DeleteUserComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ DeleteUserComponent ]
+    })
+    .compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(DeleteUserComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/src/app/admin/components/manage-users/delete-user/delete-user.component.ts b/src/app/admin/components/manage-users/delete-user/delete-user.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d8c7b0b2b3389def052bc3231d4a6817785310ea
--- /dev/null
+++ b/src/app/admin/components/manage-users/delete-user/delete-user.component.ts
@@ -0,0 +1,21 @@
+import { Component } from '@angular/core';
+
+@Component({
+  selector: 'app-delete-user',
+  templateUrl: './delete-user.component.html',
+})
+export class DeleteUserComponent {
+  public params: any;
+  public label: string;
+
+  public agInit(params: any): void {
+    this.params = params;
+    this.label = this.params.label || null;
+  }
+
+  public onClick(): void {
+    if (this.params.onClick instanceof Function) {
+      this.params.onClick(this.params);
+    }
+  }
+}
diff --git a/src/app/admin/components/manage-users/manage-users.component.html b/src/app/admin/components/manage-users/manage-users.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..3f3dde87fd964bbcfee5fe6e6509bbdaed0b1456
--- /dev/null
+++ b/src/app/admin/components/manage-users/manage-users.component.html
@@ -0,0 +1,59 @@
+<div fxLayout="column" fxLayoutGap="5px" fxLayoutAlign="center center" class="userBlock">
+  <h3>
+    Gestion des utilisateurs
+    <span *ngIf="unVerifiedUsers && unAttachedUsers && attachedUsers">
+      ({{ unVerifiedUsers.length + unAttachedUsers.length + attachedUsers.length }})
+    </span>
+  </h3>
+</div>
+
+<div class="tables-list">
+  <div>
+    <h3 class="title" *ngIf="unVerifiedUsers">Utilisateurs non vérifiés ({{ unVerifiedUsers.length }})</h3>
+    <ag-grid-angular
+      class="ag-theme-alpine user-table"
+      [rowData]="unVerifiedUsers"
+      [columnDefs]="columnDefs"
+      rowSelection="multiple"
+      domLayout="autoHeight"
+      [getRowHeight]="getRowHeight"
+      [defaultColDef]="unAttachedColDef"
+      [frameworkComponents]="frameworkComponents"
+    >
+    </ag-grid-angular>
+  </div>
+  <div>
+    <h3 class="title" *ngIf="unAttachedUsers">Utilisateurs non rattachés ({{ unAttachedUsers.length }})</h3>
+    <ag-grid-angular
+      class="ag-theme-alpine user-table"
+      [rowData]="unAttachedUsers"
+      [columnDefs]="columnDefs"
+      rowSelection="multiple"
+      domLayout="autoHeight"
+      [getRowHeight]="getRowHeight"
+      [defaultColDef]="unAttachedColDef"
+      [frameworkComponents]="frameworkComponents"
+    >
+    </ag-grid-angular>
+  </div>
+  <div>
+    <h3 class="title" *ngIf="attachedUsers">Utilisateurs rattachés ({{ attachedUsers.length }})</h3>
+    <ag-grid-angular
+      class="ag-theme-alpine user-table"
+      [rowData]="attachedUsers"
+      [columnDefs]="columnDefs"
+      rowSelection="multiple"
+      domLayout="autoHeight"
+      [getRowHeight]="getRowHeight"
+      [defaultColDef]="defaultColDef"
+      [frameworkComponents]="frameworkComponents"
+    >
+    </ag-grid-angular>
+  </div>
+</div>
+<app-modal-confirmation
+  *ngIf="userToDelete"
+  [openned]="deleteModalOpenned"
+  [content]="'Voulez-vous vraiment supprimer cet utilisateur&nbsp;? (' + userToDelete.email + ')'"
+  (closed)="deleteUser(userToDelete, $event)"
+></app-modal-confirmation>
diff --git a/src/app/admin/components/manage-users/manage-users.component.scss b/src/app/admin/components/manage-users/manage-users.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..27ad71aba310d2d37158fcf0c4021718959b8323
--- /dev/null
+++ b/src/app/admin/components/manage-users/manage-users.component.scss
@@ -0,0 +1,20 @@
+@import '../../../../assets/scss/color';
+
+.user-table {
+  width: 100%;
+  height: 100%;
+  text-overflow: clip;
+}
+
+.tables-list {
+  height: 100%;
+  width: 80%;
+  display: flex;
+  flex-direction: column;
+  margin-left: 10%;
+  margin-bottom: 2%;
+}
+
+app-delete-user {
+  text-align: center;
+}
diff --git a/src/app/admin/components/delete-user/delete-user.component.spec.ts b/src/app/admin/components/manage-users/manage-users.component.spec.ts
similarity index 76%
rename from src/app/admin/components/delete-user/delete-user.component.spec.ts
rename to src/app/admin/components/manage-users/manage-users.component.spec.ts
index b57ae62303160ae43f5bd64f32d05e39fedac10d..68c53fe5de1aa558741b7368e8d68fee044a0d7c 100644
--- a/src/app/admin/components/delete-user/delete-user.component.spec.ts
+++ b/src/app/admin/components/manage-users/manage-users.component.spec.ts
@@ -2,11 +2,11 @@ import { HttpClientModule } from '@angular/common/http';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { of } from 'rxjs';
 
-import { DeleteUserComponent } from './delete-user.component';
+import { ManageUsersComponent } from './manage-users.component';
 
-describe('DeleteUserComponent', () => {
-  let component: DeleteUserComponent;
-  let fixture: ComponentFixture<DeleteUserComponent>;
+describe('ManageUsersComponent', () => {
+  let component: ManageUsersComponent;
+  let fixture: ComponentFixture<ManageUsersComponent>;
   let USERS;
   let service;
 
@@ -18,17 +18,17 @@ describe('DeleteUserComponent', () => {
     ];
     await TestBed.configureTestingModule({
       imports: [HttpClientModule],
-      declarations: [DeleteUserComponent],
+      declarations: [ManageUsersComponent],
     }).compileComponents();
   });
 
   beforeEach(() => {
-    fixture = TestBed.createComponent(DeleteUserComponent);
+    fixture = TestBed.createComponent(ManageUsersComponent);
     component = fixture.componentInstance;
     fixture.detectChanges();
 
-    service = jasmine.createSpyObj(['searchUsers', 'deleteUser']);
-    component = new DeleteUserComponent(service);
+    service = jasmine.createSpyObj(['searchUsers', 'manageUsers']);
+    component = new ManageUsersComponent(service, null);
   });
 
   it('should create', () => {
@@ -61,7 +61,7 @@ describe('DeleteUserComponent', () => {
         )
       )
     );
-    component.deleteUser(component.users[0]);
+    component.deleteUser(component.users[0], true);
     expect(component.users.length).toBe(2);
   });
 });
diff --git a/src/app/admin/components/manage-users/manage-users.component.ts b/src/app/admin/components/manage-users/manage-users.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..5e89e6f043864ff6a5403c400c4bac9b8ad9a316
--- /dev/null
+++ b/src/app/admin/components/manage-users/manage-users.component.ts
@@ -0,0 +1,131 @@
+import { Component } from '@angular/core';
+import { User } from '../../../models/user.model';
+import { AdminService } from '../../services/admin.service';
+import { DeleteUserComponent } from './delete-user/delete-user.component';
+import { AdministredStructuresComponent } from './administred-structures/administred-structures.component';
+
+@Component({
+  selector: 'app-admin-manage-users',
+  templateUrl: './manage-users.component.html',
+  styleUrls: ['./manage-users.component.scss'],
+})
+export class ManageUsersComponent {
+  public attachedUsers: User[] = [];
+  public unAttachedUsers: User[] = [];
+  public unVerifiedUsers: User[] = [];
+  public deleteModalOpenned = false;
+  public userToDelete: User = null;
+
+  public columnDefs;
+  public frameworkComponents;
+  public defaultColDef = {
+    editable: true,
+    sortable: true,
+    flex: 1,
+    minWidth: 100,
+    filter: true,
+    resizable: true,
+  };
+  public unAttachedColDef = {
+    ...this.defaultColDef,
+    cellStyle: {
+      color: '#da6c2e',
+    },
+  };
+
+  constructor(private adminService: AdminService) {
+    this.columnDefs = [
+      {
+        headerName: 'Nom',
+        field: 'surname',
+      },
+      {
+        headerName: 'Prénom',
+        field: 'name',
+      },
+      {
+        minWidth: 150,
+        headerName: 'Mail',
+        field: 'email',
+      },
+      {
+        minWidth: 150,
+        headerName: 'Téléphone',
+        field: 'phone',
+      },
+      {
+        headerName: 'Structures administrées',
+        cellRenderer: 'administredStructuresComponent',
+        cellRendererParams: {
+          structures: 'structures',
+        },
+        minWidth: 350,
+      },
+      {
+        headerName: 'Actions',
+        minWidth: 150,
+        cellRenderer: 'deleteUserComponent',
+        cellRendererParams: {
+          onClick: this.onDeleteButtonClick.bind(this),
+          label: 'Supprimer',
+        },
+        cellStyle: { 'text-align': 'center' },
+      },
+    ];
+    this.frameworkComponents = {
+      deleteUserComponent: DeleteUserComponent,
+      administredStructuresComponent: AdministredStructuresComponent,
+    };
+    this.findAttachedUsers();
+    this.findUnAttachedUsers();
+    this.findUnVerifiedUsers();
+  }
+
+  public onDeleteButtonClick(arg): void {
+    this.deleteUser(arg.data, false);
+  }
+
+  public deleteUser(user: User, shouldDelete: boolean): void {
+    this.toggleDeleteModal(user);
+    if (shouldDelete) {
+      this.adminService.deleteUser(user._id).subscribe((data) => {
+        this.unAttachedUsers = this.unAttachedUsers.filter((obj) => obj._id !== data._id);
+        this.unVerifiedUsers = this.unVerifiedUsers.filter((obj) => obj._id !== data._id);
+        this.attachedUsers = this.attachedUsers.filter((obj) => obj._id !== data._id);
+      });
+    }
+  }
+
+  public toggleDeleteModal(userToDelete: User): void {
+    this.userToDelete = userToDelete;
+    this.deleteModalOpenned = !this.deleteModalOpenned;
+  }
+
+  public findAttachedUsers(): void {
+    this.adminService.getAttachedUsers().subscribe((users) => {
+      this.attachedUsers = users;
+      this.attachedUsers.map((user) => {
+        user._id = user['id'];
+      });
+    });
+  }
+
+  public findUnAttachedUsers(): void {
+    this.adminService.getUnAttachedUsers().subscribe((users) => {
+      this.unAttachedUsers = users;
+    });
+  }
+
+  public findUnVerifiedUsers(): void {
+    this.adminService.getUnVerifiedUsers().subscribe((users) => {
+      this.unVerifiedUsers = users;
+      this.unVerifiedUsers.map((user) => {
+        user._id = user['id'];
+      });
+    });
+  }
+
+  public getRowHeight(params): number {
+    return params.data.structures ? (params.data.structures.length != 0 ? params.data.structures.length * 40 : 40) : 40;
+  }
+}
diff --git a/src/app/admin/components/panel/panel.component.html b/src/app/admin/components/panel/panel.component.html
index 1693406e92a14d24e492a0ef7ec9dd4cb66405ed..0443ed9b817fe673bf23a02565b2d6747c8d3e41 100644
--- a/src/app/admin/components/panel/panel.component.html
+++ b/src/app/admin/components/panel/panel.component.html
@@ -3,7 +3,7 @@
   <div fxLayout="row" fxLayoutGap="20px" fxLayoutAlign="center center">
     <button (click)="changeActiveFeature(features.pendingStructures)">Revendication structure</button>
     <button (click)="changeActiveFeature(features.structuresList)">Liste structures</button>
-    <button (click)="changeActiveFeature(features.deleteUsers)">Suppression d'utilisateurs</button>
+    <button (click)="changeActiveFeature(features.deleteUsers)">Gestion des utilisateurs</button>
     <button (click)="changeActiveFeature(features.newsletterUsers)">Newsletter</button>
     <a target="_blank" class="custom-link" rel="noopener noreferrer" [href]="ghostLink">Ghost</a>
   </div>
@@ -11,7 +11,7 @@
     <app-admin-structures-list></app-admin-structures-list>
   </div>
   <div *ngIf="selectedFeature === features.deleteUsers">
-    <app-admin-delete-user></app-admin-delete-user>
+    <app-admin-manage-users></app-admin-manage-users>
   </div>
   <div *ngIf="selectedFeature === features.pendingStructures">
     <app-admin-claim-structure></app-admin-claim-structure>
diff --git a/src/app/admin/services/admin.service.ts b/src/app/admin/services/admin.service.ts
index 77ca77a305e782bf4c8e2c34091120e939b106fa..65403bedd787f80d0dcbfd1e3407bd263c5bb622 100644
--- a/src/app/admin/services/admin.service.ts
+++ b/src/app/admin/services/admin.service.ts
@@ -29,6 +29,18 @@ export class AdminService {
     return this.http.get<User[]>(`api/admin/searchUsers`);
   }
 
+  public getAttachedUsers(): Observable<User[]> {
+    return this.http.get<User[]>(`api/admin/getAttachedUsers`);
+  }
+
+  public getUnAttachedUsers(): Observable<User[]> {
+    return this.http.get<User[]>(`api/admin/getUnAttachedUsers`);
+  }
+
+  public getUnVerifiedUsers(): Observable<User[]> {
+    return this.http.get<User[]>(`api/admin/getUnVerifiedUsers`);
+  }
+
   public searchUsers(searchString: string): Observable<User[]> {
     return this.http.post<User[]>(`${this.baseUrl}/searchUsers`, { searchString });
   }
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 0a62423acc10b1a702befd3065f8658b579ae010..f142abc82c7541b8e005776793936cddd1467982 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -69,7 +69,15 @@ import { RoleGuard } from './guards/role.guard';
     StructureListPrintComponent,
     StructurePrintHeaderComponent,
   ],
-  imports: [BrowserModule, HttpClientModule, AppRoutingModule, SharedModule, MapModule, BrowserAnimationsModule, ToastrModule.forRoot()],
+  imports: [
+    BrowserModule,
+    HttpClientModule,
+    AppRoutingModule,
+    SharedModule,
+    MapModule,
+    BrowserAnimationsModule,
+    ToastrModule.forRoot(),
+  ],
   providers: [
     { provide: LOCALE_ID, useValue: 'fr' },
     { provide: HTTP_INTERCEPTORS, useClass: CustomHttpInterceptor, multi: true },
diff --git a/src/index.html b/src/index.html
index 865dbc0a11b20140011dc5ae517b1f7d7bfceedd..f41edc5de6db58877bb3f2c6d893d19419f18ae3 100644
--- a/src/index.html
+++ b/src/index.html
@@ -48,6 +48,8 @@
       rel="stylesheet"
       href="https://cdn.jsdelivr.net/npm/leaflet.locatecontrol@0.72.0/dist/L.Control.Locate.min.css"
     />
+    <link rel="stylesheet" href="https://unpkg.com/ag-grid-community/dist/styles/ag-grid.css" />
+    <link rel="stylesheet" href="https://unpkg.com/ag-grid-community/dist/styles/ag-theme-alpine.css" />
     <script
       src="https://openlayers.org/en/v4.6.5/build/ol.js"
       integrity="sha256-VC4mGHI/SvHwjGxD7oBob8kzwzbHy1MsgiCcrR5SbHg= sha384-/UhW2uuxuN/GcGRUL3CJA5ftmLinDAWEV5khyWrOKJ04xesUihAW/UNXf4VMvAuS sha512-WZO+8H/x0lzH/hIMaAan179GT2iyGNzbEA9nCGS7ju1jPPkUUr7uTHJGh3kxVG2GhDlxItuH1gbmFzHZiMul1Q=="