diff --git a/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.html b/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.html
index f415af9d3dcf0aa51853a94de44db049b4cb9c91..22629ea2d67ccf6f1556f021d7604cc607cb1049 100644
--- a/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.html
+++ b/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.html
@@ -6,7 +6,7 @@
     </div>
     <span class="divider-modal"></span>
     <div mat-dialog-actions class="actions">
-        <button mat-raised-button mat-button color="primary" [disabled]="contactSelected===null"
+        <button mat-raised-button mat-button color="primary" [disabled]="contactSelected===null || loading"
             (click)="onSubmit()">{{lang.merge}}</button>
         <button mat-raised-button mat-button [mat-dialog-close]="">{{lang.cancel}}</button>
     </div>
diff --git a/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.ts b/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.ts
index 55e9b6ecad111d3a0d44db0d3ab866c54903a3dd..86d44060d2bb583664ae3a45eca1e44c52d63021 100644
--- a/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.ts
+++ b/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.ts
@@ -5,7 +5,7 @@ import { HttpClient } from '@angular/common/http';
 import { FunctionsService } from '../../../../../service/functions.service';
 import { ContactDetailComponent } from '../../../../contact/contact-detail/contact-detail.component';
 import { LANG } from '../../../../translate.component';
-import { tap, catchError } from 'rxjs/operators';
+import { tap, catchError, finalize } from 'rxjs/operators';
 import { of } from 'rxjs/internal/observable/of';
 import { NotificationService } from '../../../../notification.service';
 
@@ -16,6 +16,7 @@ import { NotificationService } from '../../../../notification.service';
 })
 export class ManageDuplicateComponent implements OnInit {
 
+    loading: boolean = false;
     lang: any = LANG;
 
     contactSelected: number = null;
@@ -55,6 +56,7 @@ export class ManageDuplicateComponent implements OnInit {
     }
 
     onSubmit() {
+        this.loading = true;
         const masterContact: number = this.data.duplicate.filter((contact: any, index: number) => index === this.contactSelected).map((contact: any) => contact.id)[0];
         const slaveContacts: number[] = this.data.duplicate.filter((contact: any, index: number) => index !== this.contactSelected).map((contact: any) => contact.id);
 
@@ -65,6 +67,7 @@ export class ManageDuplicateComponent implements OnInit {
             tap(() => {
                 this.dialogRef.close('success');
             }),
+            finalize(() => this.loading = false),
             catchError((err: any) => {
                 this.notify.handleSoftErrors(err);
                 return of(false);
diff --git a/src/frontend/app/contact/contact-detail/contact-detail.component.html b/src/frontend/app/contact/contact-detail/contact-detail.component.html
index af0b0f1e0f5e94bb3a41e2d7ae20432f415a3738..63d4ccc7b4e83b34316ca1cdb5903992998bf1c7 100644
--- a/src/frontend/app/contact/contact-detail/contact-detail.component.html
+++ b/src/frontend/app/contact/contact-detail/contact-detail.component.html
@@ -6,8 +6,8 @@
 <ng-template #elseTemplate>
     <mat-card class="contact-card">
         <div *ngIf="selectable" class="selectable" [class.selected]="contact.selected">
-            <button style="line-height: 15px;padding: 5px;" *ngIf="!contact.selected" mat-raised-button color="primary" (click)="toggleContact(contact)"><span>selectionner</span><br><small style="font-size:80%">{{contact.resourcesCount}} élement(s) associé(s)</small></button>
-            <button style="line-height: 15px;padding: 10px;" *ngIf="contact.selected" mat-raised-button color="primary" (click)="toggleContact(contact)"><i class="far fa-check-circle"></i> contact sélectionnée</button>
+            <button style="line-height: 15px;padding: 5px;" *ngIf="!contact.selected" mat-raised-button color="primary" (click)="toggleContact(contact)"><span>selectionner</span><br><small style="font-size:80%">{{contact.resourcesCount}} {{lang.associatedElements}}</small></button>
+            <button style="line-height: 15px;padding: 10px;" *ngIf="contact.selected" mat-raised-button color="primary" (click)="toggleContact(contact)"><i class="far fa-check-circle"></i> {{lang.selectedContact}}</button>
         </div>
         <mat-card-header>
             <div mat-card-avatar class="contact-header-image fa"
diff --git a/src/frontend/app/contact/contact-detail/contact-detail.component.scss b/src/frontend/app/contact/contact-detail/contact-detail.component.scss
index b1f415c078c87c526de2054b6936a93d334a2542..62f7852745c6c8eba453b9667775732ce527a605 100644
--- a/src/frontend/app/contact/contact-detail/contact-detail.component.scss
+++ b/src/frontend/app/contact/contact-detail/contact-detail.component.scss
@@ -132,9 +132,6 @@
 }
 
 .contact-card:hover {
-    .mat-card-content, .mat-card-header {
-        opacity: 0.5;
-    }
     .selectable {
         opacity: 1;
         transition: opacity 0.2s;
diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts
index d5aaaeb0527627f929b411d587a9d73140497746..d1a5c1cac546359ac6a825cd9000a6c573e5fcf8 100755
--- a/src/frontend/lang/lang-en.ts
+++ b/src/frontend/lang/lang-en.ts
@@ -1700,4 +1700,6 @@ export const LANG_EN = {
     "duplicatesContactDisplayed": "{0} duplicates ({1} displayed)",
     "duplicatesContactsAdmin": "Manage contacts duplicates",
     "merge": "Merge",
+    "associatedElements": "associated elements",
+    "selectedContact": "selected contact",
 };
diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts
index 30ae01edccc1174f90eb441ccfbd807e083c26e2..9cf68f9fcf6366e497ee59c9b417008301dc1490 100755
--- a/src/frontend/lang/lang-fr.ts
+++ b/src/frontend/lang/lang-fr.ts
@@ -1702,4 +1702,6 @@ export const LANG_FR = {
     "duplicatesContactDisplayed": "{0} doulons ({1} affichés)",
     "duplicatesContactsAdmin": "Gérer les doublons de contacts",
     "merge": "Fusionner",
+    "associatedElements": "élement(s) associé(s)",
+    "selectedContact": "contact sélectionné",
 };
diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts
index bf5abee197ee69b957ffca8e4d3bc2679e592489..0a5b769afcb0e41747171881fb0ed7c9432b8557 100755
--- a/src/frontend/lang/lang-nl.ts
+++ b/src/frontend/lang/lang-nl.ts
@@ -1684,4 +1684,6 @@ export const LANG_NL = {
     "duplicatesContactDisplayed": "{0} duplicates ({1} displayed)", //_TO_TRANSLATE
     "duplicatesContactsAdmin": "Manage contacts duplicates", //_TO_TRANSLATE
     "merge": "Merge", //_TO_TRANSLATE
+    "associatedElements": "associated elements", //_TO_TRANSLATE
+    "selectedContact": "selected contact", //_TO_TRANSLATE
 };