diff --git a/amd/build/suivi.js b/amd/build/suivi.js
index 6190a5644683595fbcfd00b12f4869e8a2237a58..023f08f6d40f7872cdd30dff858956cfb5de3bcc 100644
--- a/amd/build/suivi.js
+++ b/amd/build/suivi.js
@@ -50,8 +50,11 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
 	    		$("#symbol-select").on('change', function(){
 	    			changeCompletion();
 	    		});
+                $('.dropdown-menu-form').on('click', function (e) {
+                   e.stopPropagation();
+                });
                
-	    		
+	    		registerActivityFilter();
 	    		changeSection();
 	    		/*calcPercentage(data);
 	    		changeCompletion();*/
@@ -79,6 +82,14 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
     	groupid=$("#group-select").val();
     	sectionid=$("#section-select").val();
     	filter=$("#symbol-select").val() + $("#filter-select").val();
+        /*checkedActivities=$('input[name="options[]"]:checked');
+        activities=[];
+        for(var i=0; i< checkedActivities.length; i++){
+            if(checkedActivities[i].value >0){
+                activities.push(checkedActivities[i].value);
+            }
+            
+        }*/
     	completeUrl='suivi_unit.php?courseid='+courseid;
     	if(sectionid){
     		completeUrl+='&sectionid='+sectionid;
@@ -99,9 +110,6 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
         	data: {action: 'test'},
         	type: 'post',
         	success: function(request) { 
-        		console.log("wat");
-        		console.log(JSON.parse(request));
-        		
         		data=calcPercentage(JSON.parse(request));
         		//changeCompletion();
         		changeSection();
@@ -135,7 +143,6 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
     			}
     		}
     		else if(symbol=="≤"){
-    			console.log("on passe ici");
     			if(data.students[i].percentage <= filter){
     				data.count_results++;
     				data.students[i].visible=true;
@@ -198,12 +205,57 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
     		changeCompletion();
     		//reloadTable(data);
     	}
+        changeActivitiesDropdown(data.modules);
 
     	
     	
     	//reloadTable(data);
     }
 
+    function changeActivitiesDropdown(modules){
+        //html='<li><label class="checkbox"><input type="checkbox" class="selectall" value="all" checked>Toutes les activités</label></li><li class="divider"></li>';
+        html="";
+        for (var i = 0; i<modules.length;i++){
+            if(modules[i].visible){
+                html+='<li><label class="checkbox"><input type="checkbox" name="options[]" checked value='+modules[i].id+' class="option justone">'+modules[i].displayname+'</label></li>';
+
+            }
+        }
+        $(".iena-dynamic-options").html(html);
+        registerActivityFilter();
+    }
+
+    function displayActivities(){
+        var arrayActivitiesID=[];
+        var activitiesToStore=[];
+        var activities = $('input[name="options[]"]');
+    
+        for(var i=0; i<activities.length;i++){
+
+            prog=data.modules.find(element => element.id === activities[i].value);
+            if(activities[i].checked){
+                prog.visible=true;
+                for(var j = 0; j<data.students.length; j++){
+                    data.students[j].progress.find(progress => progress.idmodule === activities[i].value).visible=true;
+                }
+                activitiesToStore.push(activities[i].value);
+            }
+            else{
+                prog.visible=false;
+                for(var j = 0; j<data.students.length; j++){
+                    data.students[j].progress.find(progress => progress.idmodule === activities[i].value).visible=false;
+                }
+            }
+           
+          
+        }
+        localStorage.setItem("activities",JSON.stringify(activitiesToStore));
+        //changeCompletion();
+        reloadTable(data);
+    }
+
+
+
     function loadMessage(type){
     	if(type=="loading"){
     		var message = str.get_string('loadingResults', 'format_iena');
@@ -406,7 +458,6 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
 
 	//Pour chaque module non caché, on va regarder pour chaque étudiant 
 	function calcPercentage(data){
-		console.log(data);
 		for (var i = 0; i < data.students.length; i++) {
 			data.students[i].percentage=0;
 			var done=0;
@@ -425,7 +476,77 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
 		//reloadTable(data);
 	}
 
+    function registerActivityFilter(){
+       /* $('body').on("click", ".dropdown-menu", function (e) {
+        $(this).parent().is(".open") && e.stopPropagation();
+        });*/
+        
+        $('.selectall').click(function() {
+            if ($(this).is(':checked')) {
+                $('.option').prop('checked', true);
+                var total = $('input[name="options[]"]:checked').length;
+                var message=str.get_string('selectedActivities', 'format_iena');
+                $.when(message).done(function(localizedEditString) {
+                    $(".dropdown-text").html(total + ' '+localizedEditString);
+                }); 
+                $(".select-text").html(' Deselect');
+            } else {
+                $('.option').prop('checked', false);
+                var message=str.get_string('selectedActivities', 'format_iena');
+                $.when(message).done(function(localizedEditString) {
+                    $(".dropdown-text").html('0 '+localizedEditString);
+                }); 
+                $(".select-text").html(' Select');
+            }
+        });
+
+        $("input[type='checkbox'].justone").change(function(){
+            var a = $("input[type='checkbox'].justone");
+            if(a.length == a.filter(":checked").length){
+                $('.selectall').prop('checked', true);
+                $(".select-text").html(' Deselect');
+            }
+            else {
+                $('.selectall').prop('checked', false);
+                $(".select-text").html(' Select');
+            }
+          var total = $('input[name="options[]"]:checked').length;
+          var message=str.get_string('selectedActivities', 'format_iena');
+            $.when(message).done(function(localizedEditString) {
+                $(".dropdown-text").html(total + ' '+localizedEditString);
+            }); 
+        });
+       
+        $('#iena-activities-dropdown').on('change', function(e){
+            displayActivities();
+        });
+
+        initActivityFilter();
+    }
   
+    //Stocke le filtre des activités en localStorage pour ne pas avoir 50 id dans l'url
+    //On fait bien attention à rétablir cocher le selectall si toutes les activités sont bien cochées
+    function initActivityFilter(){
+        if(localStorage.activities){
+            var checkedActivities=JSON.parse(localStorage.activities);
+            var activities=$("input[type='checkbox'].justone");
+            if(activities.length===checkedActivities.length){
+                $(".selectall").prop("checked", true);
+                $("input[type='checkbox'].justone").prop("checked", true);
+            }
+            else{
+                $(".selectall").prop("checked", false);
+                for(var i=0; i<activities.length; i++){
+                    if(checkedActivities.includes(activities[i].value)){
+                        activities[i].checked=true;
+                    }
+                    else{
+                        activities[i].checked=false;
+                    }
+                }
+            }
+        }
+    }
 
    
   
diff --git a/lang/en/format_iena.php b/lang/en/format_iena.php
index 4bb81c609387adce93039f9eb52e41c18691d92b..f50af72507ac34715700dbc96aa96b692d56c43d 100644
--- a/lang/en/format_iena.php
+++ b/lang/en/format_iena.php
@@ -99,3 +99,4 @@ $string['message_dist'] = "distance learning mail";
 $string['message_dist_desc'] = "Configure default blended course message";
 $string['message_default_dist'] = "Default message distance learning";
 $string['formatenabled']="Course completion is disabled. You can enable it in the \"Course completion\" section here: ";
+$string['selectedActivities']="selected";
\ No newline at end of file
diff --git a/lang/fr/format_iena.php b/lang/fr/format_iena.php
index 6fc21a4f8f066b447de7b43f2f858bcd7e75d113..00614fe8e19f0a43049b77f50b197d4d233ab9d9 100644
--- a/lang/fr/format_iena.php
+++ b/lang/fr/format_iena.php
@@ -98,4 +98,5 @@ $string['message_pres_desc'] = "Paramétrez le message qui sera envoyé par déf
 $string['message_dist'] = "Message distanciel";
 $string['message_dist_desc'] = "Paramétrez le message qui sera envoyé par défaut pour un cours à distance";
 $string['message_default_dist'] = "message par défaut distance";
-$string['formatenabled']="L'achèvement de cours n'est pas activé. Vous pouvez l'activer dans la section \"Achèvement de cours\" des paramètres du cours : ";
\ No newline at end of file
+$string['formatenabled']="L'achèvement de cours n'est pas activé. Vous pouvez l'activer dans la section \"Achèvement de cours\" des paramètres du cours : ";
+$string['selectedActivities']="sélectionnée(s)";
\ No newline at end of file
diff --git a/styles.css b/styles.css
index 1dc13c03d59df6929e11bbb3142a0ccc489e7bbe..68bd43056b4769f04b1d99a7760af0e55c66504c 100644
--- a/styles.css
+++ b/styles.css
@@ -994,4 +994,45 @@ th.first-column-iena, th.second-column-iena, th.actions-column-iena, th.third-co
 
 #count-selected-students{
     margin-top: 10px;
+}
+
+.iena-custom-dropdown{
+    border-radius: 0 5px 5px 0;
+    border: 1px solid #e9ecef;
+    min-width: 11rem;
+}
+
+.iena-custom-dropdown button{
+    border-radius: 0 5px 5px 0;
+    width: 100%;
+}
+
+.iena-custom-dropdown .dropdown-menu{
+    border-radius: 0 0 0.5rem 0.5rem; 
+    width:100%;
+}
+
+.iena-custom-dropdown .dropdown-menu label{
+    justify-content: left!important;
+
+}
+
+.iena-custom-dropdown .dropdown-menu label input[type="checkbox"]{
+    margin: 0 5px 0 7px;
+}
+
+.iena-custom-dropdown .dropdown-text{
+    text-align: left;
+}
+.iena-dynamic-options{
+    list-style: none;
+    padding: 0;
+    margin-left: 0;
+}
+
+.dropdown-menu .divider{
+    height: 1px;
+    margin: 9px 0;
+    overflow: hidden;
+    background-color: #e5e5e5;
 }
\ No newline at end of file
diff --git a/suivi_unit.php b/suivi_unit.php
index 5c69804c9995ea12005e736eaf572847e947f115..08f25e786c9c7db718ccac5dfdebe82d0086dc1c 100644
--- a/suivi_unit.php
+++ b/suivi_unit.php
@@ -365,7 +365,7 @@ if (isset($_POST['action']) && !empty($_POST['action'])) {
             $data["msg_success"] = $msg;
         }
 
-    }
+}
     
     $renderer = $PAGE->get_renderer('format_iena');
     $renderer->display_completion($data);
diff --git a/templates/suivi.mustache b/templates/suivi.mustache
index 7c54138aeb7acd9b6337addbeac39b4e98db5c7f..19ea55ae04203d6740740f50a95bffc09b20d97c 100644
--- a/templates/suivi.mustache
+++ b/templates/suivi.mustache
@@ -43,6 +43,29 @@
 		</select>
 	</div>
 
+	<label class="sr-only" for="activity-select">Activités</label>
+	<div class="input-group">
+		<div class="input-group-prepend">
+			<div class="input-group-text">Activités</div>
+		</div>
+		<div class="dropdown mr-sm-2 iena-custom-dropdown">
+			  <button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown"><span class="dropdown-text">Toutes</span>
+			  <span class="caret"></span></button>
+				<ul class="dropdown-menu dropdown-menu-form" id="iena-activities-dropdown">
+				<li><label class="checkbox"><input type="checkbox" class="selectall" checked value='all'>Toutes les activités</label></li>
+				<li class="divider"></li>
+				<ul class="iena-dynamic-options">
+				{{#modules}}
+					{{#visible}}
+  						<li><label class="checkbox"><input type="checkbox" name="options[]" value={{id}} class="option justone">{{displayname}}</label></li>
+  					{{/visible}}
+				{{/modules}}
+				</ul>
+		</ul>
+		</div>
+
+	</div>
+
 	<label class="sr-only" for="group-select">Groupes</label>
 	<div class="input-group">
 		<div class="input-group-prepend">