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/fr.yml b/config/locales/communication/fr.yml
index 8b859957eed3033946da8cba02f38c6b92ffae4b..e40d7e023ae3ad9851e5171284005759633f50fe 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: