diff --git a/assets/css/style.scss b/assets/css/style.scss
index aeceb245d6f872061ea674f7ce0d6d3d03410db8..7ba1d0d1bd1c6b4bf69682d0e3c8ae2a841008ff 100644
--- a/assets/css/style.scss
+++ b/assets/css/style.scss
@@ -41,4 +41,8 @@ $close-font-weight: 500;
 .card-subtitle {
     font-style: italic;
     font-size: 90%;
+}
+
+.table-hover {
+    cursor: pointer;
 }
\ No newline at end of file
diff --git a/components/Graph.vue b/components/Graph.vue
index 8bf10f0c5afd0cf7a00953d3e7e771cb0d7c43e1..aa2f218d4535da83c749fd07a6ff99c7d4685493 100644
--- a/components/Graph.vue
+++ b/components/Graph.vue
@@ -82,8 +82,4 @@ export default {
         }
     }
 }
-</script>
-
-<style>
-
-</style>
\ No newline at end of file
+</script>
\ No newline at end of file
diff --git a/components/badge/CertifStatus.vue b/components/badge/CertifStatus.vue
new file mode 100644
index 0000000000000000000000000000000000000000..cee160b0a99cc0848f26e5b21308c37fd35377bb
--- /dev/null
+++ b/components/badge/CertifStatus.vue
@@ -0,0 +1,28 @@
+<template>
+    <span class="font-weight-normal" :class="classWarning" :title="textWarning" v-if="($options.filters.dateStatus(limitDate) != 'success') && (['MEMBER', 'MISSING'].includes(memberStatus))">âš 
+        <span class="sr-only">{{ textWarning }}</span>
+    </span>
+</template>
+
+<script>
+export default {
+    props: {
+        limitDate : {
+            type: Number,
+            default: 0
+        },
+        memberStatus : String
+    },
+    computed: {
+        classWarning: function() {
+            return {
+                'text-danger' : this.$options.filters.dateStatus(this.limitDate) == 'danger',
+                'text-warning' : this.$options.filters.dateStatus(this.limitDate) == 'warning'
+            }
+        },
+        textWarning: function() {
+            return (this.$options.filters.dateStatus(this.limitDate) == 'danger') ? 'En manque de certifications' : 'Bientôt en manque de certifications'
+        }
+    }
+}
+</script>
\ No newline at end of file
diff --git a/components/badge/Quality.vue b/components/badge/Quality.vue
index 37e4b49a9a78844784df9fd5dfc1c47b80a1580d..261bb7444b53bfbbc846cb4e06614597d6563f43 100644
--- a/components/badge/Quality.vue
+++ b/components/badge/Quality.vue
@@ -19,8 +19,4 @@ export default {
         }
     }
 }
-</script>
-
-<style>
-
-</style>
\ No newline at end of file
+</script>
\ No newline at end of file
diff --git a/components/badge/Status.vue b/components/badge/Status.vue
index c6fe45d6ce9a9d762dc1a9c6a4e529692d22d470..0301cf79597804c2dd73d3806ef442000c90fc9a 100644
--- a/components/badge/Status.vue
+++ b/components/badge/Status.vue
@@ -36,8 +36,4 @@ export default {
         }
     }
 }
-</script>
-
-<style>
-
-</style>
\ No newline at end of file
+</script>
\ No newline at end of file
diff --git a/components/certif/List.vue b/components/certif/List.vue
index f68d26a8da35b0552d01fb1e68d8a2a154935823..a41453e73a079c4a79acdf14ddb43174fe4b77bb 100644
--- a/components/certif/List.vue
+++ b/components/certif/List.vue
@@ -1,19 +1,22 @@
 <template>
-<div class="list-group">
-    <NuxtLink
-      :to="'/membres/'+getNeighbor(certif).hash"
-      class="list-group-item list-group-item-action d-lg-flex justify-content-between align-items-center"
-      :class="'list-group-item-'+ $options.filters.dateStatus(certif.expires_on)"
-      v-for="certif in certifsTriees"
-      :key="getNeighbor(certif).uid">
-      <div>
-        {{ getNeighbor(certif).uid }}
-        <BadgeStatus :membre="getNeighbor(certif)" />
-        <BadgeQuality :quality="getNeighbor(certif).quality.ratio" />
-      </div>
-    <small>Expire le {{ certif.expires_on | formatDate }}</small>
-    </NuxtLink>
-</div>
+    <div class="table-responsive">
+        <table class="table table-striped table-hover">
+            <tbody>
+                <tr v-for="certif in certifsTriees" :key="getNeighbor(certif).uid"
+                    @click="$router.push({ path: '/membres/' + getNeighbor(certif).hash })">
+                    <th scope="row">
+                        {{ getNeighbor(certif).uid }}
+                        <BadgeCertifStatus :limitDate="getNeighbor(certif).received_certifications.limit" :memberStatus="getNeighbor(certif).status" />
+                        <BadgeStatus :membre="getNeighbor(certif)" />
+                        <BadgeQuality :quality="getNeighbor(certif).quality.ratio" />
+                    </th>
+                    <td class="text-right">
+                        <small><span class="badge" :class="'badge-'+ $options.filters.dateStatus(certif.expires_on)">Expire le {{ certif.expires_on | formatDate }}</span></small>
+                    </td>
+                </tr>
+            </tbody>
+        </table>
+    </div>
 </template>
 
 <script>
@@ -43,8 +46,4 @@ export default {
         }
     }
 }
-</script>
-
-<style>
-
-</style>
\ No newline at end of file
+</script>
\ No newline at end of file
diff --git a/pages/index.vue b/pages/index.vue
index f38fe3cb1486f801f4412e6b4643db80137c9a08..99cad9fa301f8b2efff101405a935690090c0662 100644
--- a/pages/index.vue
+++ b/pages/index.vue
@@ -36,9 +36,4 @@ export default {
     $nuxt.$emit('changeRoute',this.breadcrumb)
   }
 }
-</script>
-
-<style lang="sass" scoped>
-// CSS Lié au composant
-
-</style>
\ No newline at end of file
+</script>
\ No newline at end of file
diff --git a/pages/membres/_hash.vue b/pages/membres/_hash.vue
index 157f88238f5a385ce7283e71eea7f17c65b052db..e40420d18ede0d2aeb5acf14b4ef66e703c5741b 100644
--- a/pages/membres/_hash.vue
+++ b/pages/membres/_hash.vue
@@ -10,10 +10,7 @@
       <div class="row mt-3" v-if="idFromHash.status != 'REVOKED'">
         <div class="col-12 col-md-6 mb-3">
           <h3>Certifications reçues 
-            <span :class="classWarning" v-if="(($options.filters.dateStatus(idFromHash.received_certifications.limit) == 'warning') || (!idFromHash.received_certifications.limit)) &&  idFromHash.status != 'NEWCOMER'">âš 
-              <span class="sr-only" v-if="$options.filters.dateStatus(idFromHash.received_certifications.limit) == 'danger'">En manque de certifications</span>
-              <span class="sr-only" v-else>Bientôt en manque de certifications</span>
-            </span>
+            <BadgeCertifStatus :limitDate="idFromHash.received_certifications.limit" :memberStatus="idFromHash.status" />
           </h3>
           <CertifList :certifs="idFromHash.received_certifications.certifications" type="recieved" />
         </div>
@@ -71,7 +68,6 @@ export default {
               dist_ok
             }
             received_certifications {
-              limit
               certifications {
                 from {
                   ...memberAttributes
@@ -94,6 +90,9 @@ export default {
           quality {
             ratio
           }
+          received_certifications {
+            limit
+          }
         }
       `,
       variables() {
@@ -121,8 +120,4 @@ export default {
     }
   }
 };
-</script>
-
-<style lang="sass">
-
-</style>
+</script>
\ No newline at end of file
diff --git a/pages/membres/index.vue b/pages/membres/index.vue
index 633b7e54caf2e87fdb6ffdcb8c5663d435d6ca33..9fd6540a9d51f1f4ed9aea989a76b532e3cb7684 100644
--- a/pages/membres/index.vue
+++ b/pages/membres/index.vue
@@ -22,7 +22,11 @@
           <tbody>
             <tr v-for="member in idSearch.ids" :key="member.uid"
               @click="redirect('/membres/' + member.hash)">
-              <th scope="row">{{ member.uid }} <BadgeStatus :membre="member" /></th>
+              <th scope="row">
+                {{ member.uid }}
+                <BadgeCertifStatus :limitDate="member.received_certifications.limit" :memberStatus="member.status" />
+                <BadgeStatus :membre="member" />
+              </th>
               <td class="d-none d-xl-table-cell">{{ member.pubkey }}</td>
             </tr>
           </tbody>
@@ -73,6 +77,9 @@ export default {
             status
             hash
             limitDate
+            received_certifications {
+              limit
+            }
           }
         }
       } `,
@@ -89,11 +96,4 @@ export default {
     }
   }
 }
-</script>
-
-<style lang="sass" scoped>
-// CSS Lié au composant
-.table.table-striped tbody
-  tr
-    cursor: pointer
-</style>
\ No newline at end of file
+</script>
\ No newline at end of file