diff --git a/app/models/communication/block/template/datatable.rb b/app/models/communication/block/template/datatable.rb
index a6f3d5ec3e108b2d46941ca2597882e6ddbbd153..fce292fe3047e3850c2a12cc727aa72f36fc2319 100644
--- a/app/models/communication/block/template/datatable.rb
+++ b/app/models/communication/block/template/datatable.rb
@@ -3,5 +3,15 @@ class Communication::Block::Template::Datatable < Communication::Block::Template
   has_elements
   has_component :columns, :array
   has_component :caption, :text
+  has_component :description, :rich_text
+  has_component :alphabetical, :boolean
 
+  def elements
+    if alphabetical
+      @elements.sort_by! do |element|
+        "#{element.cells&.first&.to_s&.parameterize&.downcase}"
+      end
+    end
+    @elements
+  end
 end
diff --git a/app/views/admin/communication/blocks/templates/datatable/_edit.html.erb b/app/views/admin/communication/blocks/templates/datatable/_edit.html.erb
index d1111ef09d4c509a0f442f2b85fa839eb31ecdce..0b7a2e792e71e40c3917dafd87228dae9b2c590f 100644
--- a/app/views/admin/communication/blocks/templates/datatable/_edit.html.erb
+++ b/app/views/admin/communication/blocks/templates/datatable/_edit.html.erb
@@ -1,3 +1,13 @@
+<div class="row">
+  <div class="col-xl-6">
+    <%= block_component_edit :description %>
+  </div>
+  <div class="col-xl-6">
+    <label class="form-label">&nbsp;</label>
+    <%= block_component_edit :alphabetical %>
+  </div>
+</div>
+
 <div class="table-responsive mb-5">
   <div class="fake-table table">
     <div class="thead">
diff --git a/app/views/admin/communication/blocks/templates/datatable/_preview.html.erb b/app/views/admin/communication/blocks/templates/datatable/_preview.html.erb
index 8ae4ebc8c1c46bd2cfd5cfa89edb3ccbac6db340..0f2d97f82a195167cea611bbb8fc389a2fff70ce 100644
--- a/app/views/admin/communication/blocks/templates/datatable/_preview.html.erb
+++ b/app/views/admin/communication/blocks/templates/datatable/_preview.html.erb
@@ -1,3 +1,7 @@
+<div class="description">
+  <%= block_component_preview :description %>
+</div>
+
 <div class="table-responsive">
   <caption><%= block_component_preview :caption %></caption>
   <table class="<%= table_classes %>">
diff --git a/app/views/admin/communication/blocks/templates/datatable/_static.html.erb b/app/views/admin/communication/blocks/templates/datatable/_static.html.erb
index 3036a3844fd021d239ed61492af4e733c4ebaa4c..b144606054efa65dd9ff50d34c8a370d0e31c5da 100644
--- a/app/views/admin/communication/blocks/templates/datatable/_static.html.erb
+++ b/app/views/admin/communication/blocks/templates/datatable/_static.html.erb
@@ -1,3 +1,4 @@
+<%= block_component_static :description %>
 <%= block_component_static :columns %>
       rows:
 <% block.template.elements.each do |element| %>
diff --git a/config/locales/communication/en.yml b/config/locales/communication/en.yml
index 15e04ee56f4d086ab3c25810b664270f95dd42b7..c62fc53e7e70ed54d7849be7cec4ceb2889b8880 100644
--- a/config/locales/communication/en.yml
+++ b/config/locales/communication/en.yml
@@ -277,9 +277,13 @@ en:
           datatable:
             description: A table of data, as responsive and accessible as possible.
             edit:
+              alphabetical:
+                label: Alphabetical order
               caption:
                 label: Text transcript
                 placeholder: Enter the text transcript of the table
+              description:
+                label: Description
           definitions:
             description: A list of terms and definitions. We could call it a dictionary.
             edit:
@@ -711,4 +715,4 @@ en:
         description: If this field is empty, the "lead text" field will be used. If also emty the main text's begining will be used.
         full_width: On large screens, a full width page uses all available space for the content. This is good for landing pages, or to make them spectacular. If the page is not full width, the content column will be smaller to make reading easier. The unused space might be used for a table of contents.
       communication_website_post:
-        description: If this field is empty, the "lead text" field will be used. If also emty the main text's begining will be used.
\ No newline at end of file
+        description: If this field is empty, the "lead text" field will be used. If also emty the main text's begining will be used.
diff --git a/config/locales/communication/fr.yml b/config/locales/communication/fr.yml
index 8b859957eed3033946da8cba02f38c6b92ffae4b..61314bf0e68db114586848283abb925e03060da7 100644
--- a/config/locales/communication/fr.yml
+++ b/config/locales/communication/fr.yml
@@ -277,9 +277,13 @@ fr:
           datatable:
             description: Un tableau de données, aussi responsive et accessible que possible.
             edit:
+              alphabetical:
+                label: Ordre alphabétique
               caption:
                 label: Transcription textuelle
                 placeholder: Entrer ici la transcription textuelle du tableau
+              description:
+                label: Description
           definitions:
             description: Une liste de termes et leur définition. Un genre de dictionnaire, finalement.
             edit:
@@ -713,4 +717,4 @@ fr:
         description: Si ce champ est vide le "chapô" sera utilisé. Si il est également vide le début du texte principal sera utilisé.
         full_width: Sur de grands écrans, la page en pleine largeur utilisera tout l'espace disponible, ce qui est pertinent pour événementialiser une page. Si la page n'est pas en pleine largeur, l'espace dédié au contenu sera réduit pour faciliter la lecture, et l'espace libre pourra être utilisé pour une table des matières facilitant la navigation.
       communication_website_post:
-        description: Si ce champ est vide le "chapô" sera utilisé. Si il est également vide le début du texte principal sera utilisé.
\ No newline at end of file
+        description: Si ce champ est vide le "chapô" sera utilisé. Si il est également vide le début du texte principal sera utilisé.