diff --git a/src/views/Catalog.vue b/src/views/Catalog.vue
index 2213dae7e8867064e325fa02c0cfa351508fc00f..df481c85fafdb9002ddea7bf7adbcecdf12b1173 100644
--- a/src/views/Catalog.vue
+++ b/src/views/Catalog.vue
@@ -12,8 +12,8 @@
         <div>Ressource</div>
       </div>
       <div
-        v-for="ressource in ressources"
-        :key="ressource.ressource"
+        v-for="(ressource, index) in paginatedRessources"
+        :key="`${ressource.ressource}-${index}`"
         class="row"
       >
         <div>{{ ressource.organisation }}</div>
@@ -21,6 +21,62 @@
         <div>{{ ressource.ressource }}</div>
       </div>
     </div>
+
+    <div
+      v-if="nbPages.length > 1"
+      id="table-features_info"
+      class="dataTables_info"
+    >
+      Affichage de l'élément {{ pagination.start + 1 }} à
+      {{ displayedPageEnd }}
+      sur {{ ressources.length }} éléments
+    </div>
+    <div
+      v-if="nbPages.length > 1"
+      id="table-features_paginate"
+      class="dataTables_paginate paging_simple_numbers"
+    >
+      <a
+        @click="toPreviousPage"
+        id="table-features_previous"
+        :class="[
+          'paginate_button previous',
+          { disabled: pagination.currentPage === 1 },
+        ]"
+        aria-controls="table-features"
+        data-dt-idx="0"
+        tabindex="0"
+        >Précédent</a
+      >
+      <span>
+        <a
+          v-for="pageNumber in nbPages"
+          :key="'page' + pageNumber"
+          @click="toPage(pageNumber)"
+          :class="[
+            'paginate_button',
+            { current: pageNumber === pagination.currentPage },
+          ]"
+          aria-controls="table-features"
+          data-dt-idx="1"
+          tabindex="0"
+          >{{ pageNumber }}</a
+        >
+      </span>
+      <!-- // TODO : <span v-if="nbPages > 4" class="ellipsis">...</span> -->
+      <a
+        id="table-features_next"
+        :class="[
+          'paginate_button next',
+          { disabled: pagination.currentPage === nbPages.length },
+        ]"
+        aria-controls="table-features"
+        data-dt-idx="7"
+        tabindex="0"
+        @click="toNextPage"
+        >Suivant</a
+      >
+    </div>
   </div>
 </template>
 
@@ -33,31 +89,242 @@ export default {
     return {
       ressources: [
         {
-          organisation: "organisation1",
-          dataset: "dataset1",
-          ressource: "ressource1",
+          organisation: "Organisation 1",
+          dataset: "Dataset 1",
+          ressource: "Ressource 1",
+        },
+        {
+          organisation: "Organisation 2",
+          dataset: "Dataset 2",
+          ressource: "Ressource 2",
+        },
+        {
+          organisation: "Organisation 3",
+          dataset: "Dataset 3",
+          ressource: "Ressource 3",
+        },
+        {
+          organisation: "Organisation 4",
+          dataset: "Dataset 4",
+          ressource: "Ressource 4",
+        },
+        {
+          organisation: "Organisation 1",
+          dataset: "Dataset 1",
+          ressource: "Ressource 1",
+        },
+        {
+          organisation: "Organisation 2",
+          dataset: "Dataset 2",
+          ressource: "Ressource 2",
+        },
+        {
+          organisation: "Organisation 3",
+          dataset: "Dataset 3",
+          ressource: "Ressource 3",
+        },
+        {
+          organisation: "Organisation 4",
+          dataset: "Dataset 4",
+          ressource: "Ressource 4",
+        },
+        {
+          organisation: "Organisation 1",
+          dataset: "Dataset 1",
+          ressource: "Ressource 1",
+        },
+        {
+          organisation: "Organisation 2",
+          dataset: "Dataset 2",
+          ressource: "Ressource 2",
+        },
+        {
+          organisation: "Organisation 3",
+          dataset: "Dataset 3",
+          ressource: "Ressource 3",
+        },
+        {
+          organisation: "Organisation 4",
+          dataset: "Dataset 4",
+          ressource: "Ressource 4",
+        },
+        {
+          organisation: "Organisation 1",
+          dataset: "Dataset 1",
+          ressource: "Ressource 1",
+        },
+        {
+          organisation: "Organisation 2",
+          dataset: "Dataset 2",
+          ressource: "Ressource 2",
+        },
+        {
+          organisation: "Organisation 3",
+          dataset: "Dataset 3",
+          ressource: "Ressource 3",
+        },
+        {
+          organisation: "Organisation 4",
+          dataset: "Dataset 4",
+          ressource: "Ressource 4",
+        },
+        {
+          organisation: "Organisation 1",
+          dataset: "Dataset 1",
+          ressource: "Ressource 1",
+        },
+        {
+          organisation: "Organisation 2",
+          dataset: "Dataset 2",
+          ressource: "Ressource 2",
+        },
+        {
+          organisation: "Organisation 3",
+          dataset: "Dataset 3",
+          ressource: "Ressource 3",
+        },
+        {
+          organisation: "Organisation 4",
+          dataset: "Dataset 4",
+          ressource: "Ressource 4",
         },
         {
-          organisation: "organisation2",
-          dataset: "dataset2",
-          ressource: "ressource2",
+          organisation: "Organisation 1",
+          dataset: "Dataset 1",
+          ressource: "Ressource 1",
         },
         {
-          organisation: "organisation3",
-          dataset: "dataset3",
-          ressource: "ressource3",
+          organisation: "Organisation 2",
+          dataset: "Dataset 2",
+          ressource: "Ressource 2",
         },
         {
-          organisation: "organisation4",
-          dataset: "dataset4",
-          ressource: "ressource4",
+          organisation: "Organisation 3",
+          dataset: "Dataset 3",
+          ressource: "Ressource 3",
+        },
+        {
+          organisation: "Organisation 4",
+          dataset: "Dataset 4",
+          ressource: "Ressource 4",
+        },
+        {
+          organisation: "Organisation 1",
+          dataset: "Dataset 1",
+          ressource: "Ressource 1",
+        },
+        {
+          organisation: "Organisation 2",
+          dataset: "Dataset 2",
+          ressource: "Ressource 2",
+        },
+        {
+          organisation: "Organisation 3",
+          dataset: "Dataset 3",
+          ressource: "Ressource 3",
+        },
+        {
+          organisation: "Organisation 4",
+          dataset: "Dataset 4",
+          ressource: "Ressource 4",
+        },
+        {
+          organisation: "Organisation 1",
+          dataset: "Dataset 1",
+          ressource: "Ressource 1",
+        },
+        {
+          organisation: "Organisation 2",
+          dataset: "Dataset 2",
+          ressource: "Ressource 2",
+        },
+        {
+          organisation: "Organisation 3",
+          dataset: "Dataset 3",
+          ressource: "Ressource 3",
+        },
+        {
+          organisation: "Organisation 4",
+          dataset: "Dataset 4",
+          ressource: "Ressource 4",
+        },
+        {
+          organisation: "Organisation 1",
+          dataset: "Dataset 1",
+          ressource: "Ressource 1",
+        },
+        {
+          organisation: "Organisation 2",
+          dataset: "Dataset 2",
+          ressource: "Ressource 2",
+        },
+        {
+          organisation: "Organisation 3",
+          dataset: "Dataset 3",
+          ressource: "Ressource 3",
+        },
+        {
+          organisation: "Organisation 4",
+          dataset: "Dataset 4",
+          ressource: "Ressource 4",
         },
       ],
+      pagination: {
+        currentPage: 1,
+        pagesize: 15,
+        start: 0,
+        end: 15,
+      },
     };
   },
 
   computed: {
     ...mapGetters(["project", "permissions"]),
+
+    paginatedRessources() {
+      return this.ressources.slice(this.pagination.start, this.pagination.end);
+    },
+
+    nbPages() {
+      let N = Math.ceil(this.ressources.length / this.pagination.pagesize);
+      const arr = [...Array(N).keys()].map(function (x) {
+        ++x;
+        return x;
+      });
+      return arr;
+    },
+
+    displayedPageEnd() {
+      return this.ressources.length <= this.pagination.end
+        ? this.ressources.length
+        : this.pagination.end;
+    },
+  },
+
+  methods: {
+    toPage(pageNumber) {
+      const toAddOrRemove =
+        (pageNumber - this.pagination.currentPage) * this.pagination.pagesize;
+      this.pagination.start += toAddOrRemove;
+      this.pagination.end += toAddOrRemove;
+      this.pagination.currentPage = pageNumber;
+    },
+
+    toPreviousPage() {
+      if (this.pagination.start > 0) {
+        this.pagination.start -= this.pagination.pagesize;
+        this.pagination.end -= this.pagination.pagesize;
+        this.pagination.currentPage -= 1;
+      }
+    },
+
+    toNextPage() {
+      if (this.pagination.end < this.ressources.length) {
+        this.pagination.start += this.pagination.pagesize;
+        this.pagination.end += this.pagination.pagesize;
+        this.pagination.currentPage += 1;
+      }
+    },
   },
 
   created() {
@@ -93,4 +360,82 @@ h1 {
 .table > .header {
   background-color: #e0e0e0;
 }
+
+/* datatables */
+.dataTables_length,
+.dataTables_filter,
+.dataTables_info,
+.dataTables_processing,
+.dataTables_paginate {
+  color: #333;
+}
+.dataTables_info {
+  clear: both;
+  float: left;
+  padding-top: 0.755em;
+}
+.dataTables_paginate {
+  float: right;
+  text-align: right;
+  padding-top: 0.25em;
+}
+.dataTables_paginate .paginate_button.current,
+.dataTables_paginate .paginate_button.current:hover {
+  color: #333 !important;
+  border: 1px solid #979797;
+  background-color: white;
+  background: -webkit-gradient(
+    linear,
+    left top,
+    left bottom,
+    color-stop(0%, #fff),
+    color-stop(100%, #dcdcdc)
+  );
+  background: -webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);
+  background: -moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);
+  background: -ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);
+  background: -o-linear-gradient(top, #fff 0%, #dcdcdc 100%);
+  background: linear-gradient(to bottom, #fff 0%, #dcdcdc 100%);
+}
+.dataTables_paginate .paginate_button {
+  box-sizing: border-box;
+  display: inline-block;
+  min-width: 1.5em;
+  padding: 0.5em 1em;
+  margin-left: 2px;
+  text-align: center;
+  text-decoration: none !important;
+  cursor: pointer;
+  color: #333 !important;
+  border: 1px solid transparent;
+  border-radius: 2px;
+}
+.dataTables_paginate .paginate_button:hover {
+  color: white !important;
+  border: 1px solid #111;
+  background-color: #585858;
+  background: -webkit-gradient(
+    linear,
+    left top,
+    left bottom,
+    color-stop(0%, #585858),
+    color-stop(100%, #111)
+  );
+  background: -webkit-linear-gradient(top, #585858 0%, #111 100%);
+  background: -moz-linear-gradient(top, #585858 0%, #111 100%);
+  background: -ms-linear-gradient(top, #585858 0%, #111 100%);
+  background: -o-linear-gradient(top, #585858 0%, #111 100%);
+  background: linear-gradient(to bottom, #585858 0%, #111 100%);
+}
+.dataTables_paginate .paginate_button.disabled,
+.dataTables_paginate .paginate_button.disabled:hover,
+.dataTables_paginate .paginate_button.disabled:active {
+  cursor: default;
+  color: #666 !important;
+  border: 1px solid transparent;
+  background: transparent;
+  box-shadow: none;
+}
+
+
 </style>
\ No newline at end of file