diff --git a/app/scodoc/sco_pv_dict.py b/app/scodoc/sco_pv_dict.py
index 1075a2ce3b1b64dddbb94a728d5949d6b5dbf042..0dcc421ffd39459da89897ec8c596ec1cb468cd8 100644
--- a/app/scodoc/sco_pv_dict.py
+++ b/app/scodoc/sco_pv_dict.py
@@ -308,7 +308,12 @@ def _descr_decision_sem(etat, decision_sem):
     else:
         if decision_sem:
             cod = decision_sem["code"]
-            decision = codes_cursus.CODES_EXPL.get(cod, "")  # + ' (%s)' % cod
+            decision = (
+                # exception pour AJ afin de ne pas mentionner le BUT
+                codes_cursus.CODES_EXPL.get(cod, "")
+                if cod != "AJ"
+                else "Ajourné"
+            )
         else:
             decision = ""
     return decision
diff --git a/app/scodoc/sco_pv_lettres_inviduelles.py b/app/scodoc/sco_pv_lettres_inviduelles.py
index 42f5d41368f235431515b067daacb3218d3ea8a7..7a4f2f50ab34ee32b94bc81d5be0b50ece986469 100644
--- a/app/scodoc/sco_pv_lettres_inviduelles.py
+++ b/app/scodoc/sco_pv_lettres_inviduelles.py
@@ -183,9 +183,10 @@ def pdf_lettre_individuelle(sem, decision, etud: Identite, params, signature=Non
     #
     formsemestre_id = sem["formsemestre_id"]
     formsemestre = FormSemestre.query.get(formsemestre_id)
-    Se: SituationEtudCursus = decision["Se"]
-    t, s = jury_titres(
-        formsemestre, Se.parcours_validated() or not Se.semestre_non_terminal
+    situation_etud: SituationEtudCursus = decision["Se"]
+    titre_jury, titre_jury_court = jury_titres(
+        formsemestre,
+        situation_etud.parcours_validated() or not situation_etud.semestre_non_terminal,
     )
     objects = []
     style = reportlab.lib.styles.ParagraphStyle({})
@@ -196,8 +197,8 @@ def pdf_lettre_individuelle(sem, decision, etud: Identite, params, signature=Non
 
     params["semestre_id"] = formsemestre.semestre_id
     params["decision_sem_descr"] = decision["decision_sem_descr"]
-    params["type_jury"] = t  # type de jury (passage ou delivrance)
-    params["type_jury_abbrv"] = s  # idem, abbrégé
+    params["type_jury"] = titre_jury  # type de jury (passage ou delivrance)
+    params["type_jury_abbrv"] = titre_jury_court  # idem, abbrégé
     params["decisions_ue_descr"] = decision["decisions_ue_descr"]
     if decision["decisions_ue_nb"] > 1:
         params["decisions_ue_descr_plural"] = "s"
@@ -237,23 +238,23 @@ def pdf_lettre_individuelle(sem, decision, etud: Identite, params, signature=Non
     else:
         params["observation_txt"] = ""
     # Autorisations de passage
-    if decision["autorisations"] and not Se.parcours_validated():
+    if decision["autorisations"] and not situation_etud.parcours_validated():
         if len(decision["autorisations"]) > 1:
-            s = "s"
+            titre_jury_court = "s"
         else:
-            s = ""
+            titre_jury_court = ""
         params[
             "autorisations_txt"
         ] = """Vous êtes autorisé%s à continuer dans le%s semestre%s : <b>%s</b>""" % (
             etud.e,
-            s,
-            s,
+            titre_jury_court,
+            titre_jury_court,
             decision["autorisations_descr"],
         )
     else:
         params["autorisations_txt"] = ""
 
-    if decision["decision_sem"] and Se.parcours_validated():
+    if decision["decision_sem"] and situation_etud.parcours_validated():
         params["diplome_txt"] = (
             """Vous avez donc obtenu le diplôme : <b>%(titre_formation)s</b>""" % params
         )
@@ -279,7 +280,7 @@ def pdf_lettre_individuelle(sem, decision, etud: Identite, params, signature=Non
     # Signature:
     # nota: si semestre terminal, signature par directeur IUT, sinon, signature par
     # chef de département.
-    if Se.semestre_non_terminal:
+    if situation_etud.semestre_non_terminal:
         sig = (
             sco_preferences.get_preference(
                 "PV_LETTER_PASSAGE_SIGNATURE", formsemestre_id
diff --git a/app/static/js/table_recap.js b/app/static/js/table_recap.js
index 40392eba63e30f4835f766123566d46c2d142bc7..56d43e3d9a35d2e396c99094f364983946405b57 100644
--- a/app/static/js/table_recap.js
+++ b/app/static/js/table_recap.js
@@ -116,12 +116,26 @@ $(function () {
         ]; // fin des boutons communs à toutes les tables recap
 
         if ($('table.table_recap').hasClass("jury")) {
-            // table jury: avec ou sans codes enregistrés
+            // Table JURY: 
+            // avec ou sans codes enregistrés
             buttons.push(
                 {
                     text: '<span data-group="recorded_code">Codes jury</span>',
                     action: toggle_col_but_visibility,
                 });
+            if ($('table.table_recap').hasClass("apc")) {
+                // Boutons spécifiques à la table JURY BUT
+                buttons.push(
+                    {
+                        text: '<span data-group="cursus_but">Compétences</span>',
+                        action: toggle_col_but_visibility,
+                    });
+                buttons.push(
+                    {
+                        text: '<span data-group="col_rcue">RCUEs</span>',
+                        action: toggle_col_but_visibility,
+                    });
+            }
         } else {
             // BOUTONS SPECIFIQUES A LA TABLE RECAP NON JURY
             buttons.push(