diff --git a/components/btn/Favori.vue b/components/btn/Favori.vue
index 4699f2494bd31a27caf3e8663fc53d8696f7b1ff..604408d915ddb8568f92696486087a73b845cb29 100644
--- a/components/btn/Favori.vue
+++ b/components/btn/Favori.vue
@@ -15,11 +15,11 @@
 		}}</span>
 		<solid-user-add-icon
 			aria-hidden="true"
-			class="icon"
+			style="width: 2rem"
 			v-if="!$favourites.list.includes(uid)" />
 		<solid-user-remove-icon
 			aria-hidden="true"
-			class="icon"
+			style="width: 2rem"
 			v-if="$favourites.list.includes(uid)" />
 	</button>
 </template>
diff --git a/components/btn/FavoriArray.vue b/components/btn/FavoriArray.vue
new file mode 100644
index 0000000000000000000000000000000000000000..5846f41356e59927e7f968fd3bc773c24c3bef11
--- /dev/null
+++ b/components/btn/FavoriArray.vue
@@ -0,0 +1,32 @@
+<template>
+	<button
+		v-if="membersToAdd.length != 0"
+		class="btn btn-secondary position-relative"
+		v-tooltip="{ title: $t('favoris.ajouter'), placement: 'left' }"
+		@click="$favourites.addFavorisArray(membersToAdd, $event)">
+		<solid-user-group-icon aria-hidden="true" class="icon" />
+		<span
+			aria-hidden="true"
+			class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">
+			+ {{ membersToAdd.length }}
+		</span>
+	</button>
+</template>
+
+<script>
+export default {
+	props: {
+		listUID: {
+			type: Array,
+			required: true
+		}
+	},
+	computed: {
+		membersToAdd() {
+			return this.listUID.filter(
+				(el) => !this.$favourites.list.includes(el.uid)
+			)
+		}
+	}
+}
+</script>
diff --git a/components/certif/All.vue b/components/certif/All.vue
index 605be22ea3fbb32e61b47cdd124d3bb8f16f1c4b..2911049bb95a5aaa122f3e81e3a5ddc4e158b6fa 100644
--- a/components/certif/All.vue
+++ b/components/certif/All.vue
@@ -2,22 +2,9 @@
 	<div class="container-lg" v-if="idFromHash.status != 'REVOKED'">
 		<div class="row mt-3">
 			<div class="col-sm-10 col-md-8 col-lg-5 mx-auto">
-				<h3
-					class="h4 text-center"
-					:class="{
-						'text-success':
-							$options.filters.dateStatus(idFromHash.certsLimit) == 'success',
-						'text-warning':
-							$options.filters.dateStatus(idFromHash.certsLimit) == 'warning',
-						'text-danger':
-							$options.filters.dateStatus(idFromHash.certsLimit) == 'danger'
-					}">
-					{{ $t("certification.recues") }}&nbsp;<BadgeDanger
-						style="width: 2rem"
-						:limitDate="idFromHash.certsLimit"
-						:memberStatus="idFromHash.status" />
-				</h3>
 				<CertifGroup
+					:limitDate="idFromHash.certsLimit"
+					:memberStatus="idFromHash.status"
 					:certifs="idFromHash.received_certifications"
 					type="received"
 					:certifStatus="$options.filters.dateStatus(idFromHash.certsLimit)" />
@@ -31,9 +18,6 @@
 			<div
 				class="col-sm-10 col-md-8 col-lg-5 mx-auto"
 				v-if="['MISSING', 'MEMBER'].includes(idFromHash.status)">
-				<h3 class="h4 text-center text-info">
-					{{ $t("certification.envoyees") }}
-				</h3>
 				<CertifGroup :certifs="idFromHash.sent_certifications" type="sent" />
 			</div>
 		</div>
diff --git a/components/certif/Group.vue b/components/certif/Group.vue
index 90effc3d6b1c80cb3f0ab234158e78aef304f22c..83df611bf2f691fb9d935955c1791fd05fa7537c 100644
--- a/components/certif/Group.vue
+++ b/components/certif/Group.vue
@@ -1,5 +1,32 @@
 <template>
 	<div>
+		<div
+			class="d-flex align-items-center justify-content-between flex-column flex-sm-row mb-4">
+			<h3
+				class="h4 text-center d-flex"
+				style="min-width: 0"
+				:class="{
+					'text-success': certifStatus == 'success',
+					'text-warning': certifStatus == 'warning',
+					'text-danger': certifStatus == 'danger',
+					'text-info': type == 'sent'
+				}">
+				<span class="text-truncate d-block">
+					{{
+						type == "sent"
+							? $t("certification.envoyees")
+							: $t("certification.recues")
+					}}
+				</span>
+				&nbsp;<BadgeDanger
+					v-if="type == 'received'"
+					class="flex-shrink-0"
+					style="width: 2rem"
+					:limitDate="limitDate"
+					:memberStatus="memberStatus" />
+			</h3>
+			<BtnFavoriArray :listUID="certifsNotPending" />
+		</div>
 		<CertifList
 			:title="$t('certification.enattente')"
 			:certifs="certifsPending"
@@ -22,6 +49,8 @@
 <script>
 export default {
 	props: {
+		limitDate: Number,
+		memberStatus: String,
 		certifs: Array,
 		certifStatus: {
 			type: String,
diff --git a/components/member/Card.vue b/components/member/Card.vue
index 545c51ed13ad2a799a88aa464bed947c8c38c1aa..2cb26461b5cfdb70e39a2780d3807bcd2d193e33 100644
--- a/components/member/Card.vue
+++ b/components/member/Card.vue
@@ -1,10 +1,9 @@
 <template>
 	<div class="card member">
 		<div class="card-body">
-			<div
-				class="d-flex align-items-center justify-content-between flex-column-reverse flex-sm-row mb-4">
+			<div class="d-flex align-items-center justify-content-between mb-4">
 				<h2
-					class="h1 card-title text-center d-flex align-items-center flex-column m-0 w-100">
+					class="h1 card-title text-center d-flex align-items-center flex-column m-0">
 					<span class="text-truncate d-inline-block mw-100">
 						{{ hash.uid }}
 					</span>
@@ -131,10 +130,16 @@ export default {
 </script>
 
 <style lang="scss">
-.member .table {
-	text-align: center;
-	width: auto;
-	margin: auto;
+.member {
+	h2 {
+		min-width: 0;
+	}
+
+	.table {
+		text-align: center;
+		width: auto;
+		margin: auto;
+	}
 }
 
 @media (min-width: 576px) {
diff --git a/package.json b/package.json
index 71f930b4186b5f4f7e5737607923d095c530ec20..c89625d9a33e00471d51dda64d604270f438308e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
 	"name": "wotwizard-ui",
-	"version": "2.1.0",
+	"version": "2.2.0",
 	"private": true,
 	"scripts": {
 		"dev": "nuxt",
diff --git a/plugins/bootstrap.js b/plugins/bootstrap.js
index da7c3d704809ef0c3a139240bb46b94f11970da3..177cae8f9a027dee151f6d490d73f191e10c3fbb 100644
--- a/plugins/bootstrap.js
+++ b/plugins/bootstrap.js
@@ -18,7 +18,7 @@ Vue.directive("tooltip-click", function (el, binding) {
 	}
 })
 
-Vue.directive("tooltip", function (el, binding) {
+Vue.directive("tooltip", function (el, binding, vnode) {
 	if (binding.value.title != "") {
 		let tooltip = new Tooltip(el, {
 			title: binding.value.title,
@@ -26,5 +26,15 @@ Vue.directive("tooltip", function (el, binding) {
 			placement: binding.value.placement,
 			trigger: "hover"
 		})
+
+		vnode.context.$nextTick(() => {
+			var x = new MutationObserver(function (e) {
+				console.log(e)
+				if (e[0].removedNodes) tooltip.hide()
+			});
+
+			x.observe(el.parentNode, { childList: true })
+
+		});
 	}
 })
diff --git a/plugins/favourites.js b/plugins/favourites.js
index 36616e66eab13c54231d2a9435e7efa7608c5015..23f56b501a46a98dd8c84e32fef8aafa1480cb02 100644
--- a/plugins/favourites.js
+++ b/plugins/favourites.js
@@ -18,11 +18,18 @@ export default (context, inject) => {
 		localStorage.favourites = JSON.stringify(context.$favourites.list)
 	}
 
+	let addFavorisArray = (certs, e) => {
+		for (const cert in certs) {
+			toggleFavourite(certs[cert].uid, e)
+		}
+	}
+
 	inject(
 		"favourites",
 		Vue.observable({
 			list: liste_favoris,
-			toggleFavourite: toggleFavourite
+			toggleFavourite: toggleFavourite,
+			addFavorisArray: addFavorisArray
 		})
 	)
 }