diff --git a/core/admin.py b/core/admin.py
index 6fdc096608eecce62d4f0fdc9e540f4d41b8a29d..8adebf78b1c1f1705c5af8d76b0e4a2f94173754 100644
--- a/core/admin.py
+++ b/core/admin.py
@@ -2,7 +2,8 @@
 
 from django.contrib import admin
 from .models import Document, Address
-
+from django.http import HttpResponse
+import csv
 # Register your models here.
 
 
@@ -16,6 +17,23 @@ class DocumentAdmin(admin.ModelAdmin):
     # reorganize fields
     fields = ('title', 'slug', 'content',)
 
+    actions = ["export_as_csv"]
+
+    def export_as_csv(self, request, queryset):
+        meta = self.model._meta
+        field_names = [field.name for field in meta.fields]
+
+        response = HttpResponse(content_type='text/csv')
+        response['Content-Disposition'] = 'attachment; filename={}.csv'.format(
+            meta)
+        writer = csv.writer(response)
+        writer.writerow(field_names)
+        for obj in queryset:
+            row = writer.writerow([getattr(obj, field)
+                                   for field in field_names])
+        return response
+    export_as_csv.short_description = "Exporter au format CSV"
+
 
 @admin.register(Address)
 class AddressAdmin(admin.ModelAdmin):
diff --git a/projects/admin.py b/projects/admin.py
index 2cdb4266757018f0fb6555f001160b373f76d267..a20211ae407c9e259336c27b9a69c4645ad28e9b 100644
--- a/projects/admin.py
+++ b/projects/admin.py
@@ -5,6 +5,8 @@ from django.contrib import admin
 from dynamicforms.views import download_multiple_forms_entries
 from dynamicforms.models import Form
 from .models import Edition, Participation, Project, EditionForm
+from django.http import HttpResponse
+import csv
 
 
 @admin.register(Project)
@@ -29,6 +31,23 @@ class ProjectAdmin(admin.ModelAdmin):
         return obj.total_participations(state=Participation.STATE_ACCEPTED)
     total_accepted_participations.short_description = 'Participations totales'
 
+    actions = ["export_as_csv"]
+
+    def export_as_csv(self, request, queryset):
+        meta = self.model._meta
+        field_names = [field.name for field in meta.fields]
+
+        response = HttpResponse(content_type='text/csv')
+        response['Content-Disposition'] = 'attachment; filename={}.csv'.format(
+            meta)
+        writer = csv.writer(response)
+        writer.writerow(field_names)
+        for obj in queryset:
+            row = writer.writerow([getattr(obj, field)
+                                   for field in field_names])
+        return response
+    export_as_csv.short_description = "Exporter au format CSV"
+
 
 class OrganizersInline(admin.TabularInline):
     """Inline for edition organizers."""
@@ -72,6 +91,23 @@ class EditionAdmin(admin.ModelAdmin):
         return obj.participations.cancelled().count()
     num_cancelled.short_description = 'Annulés'
 
+    actions = ["export_as_csv"]
+
+    def export_as_csv(self, request, queryset):
+        meta = self.model._meta
+        field_names = [field.name for field in meta.fields]
+
+        response = HttpResponse(content_type='text/csv')
+        response['Content-Disposition'] = 'attachment; filename={}.csv'.format(
+            meta)
+        writer = csv.writer(response)
+        writer.writerow(field_names)
+        for obj in queryset:
+            row = writer.writerow([getattr(obj, field)
+                                   for field in field_names])
+        return response
+    export_as_csv.short_description = "Exporter au format CSV"
+
 
 @admin.register(EditionForm)
 class EditionFormAdmin(admin.ModelAdmin):
@@ -80,16 +116,22 @@ class EditionFormAdmin(admin.ModelAdmin):
     list_display = ('form', 'deadline', 'recipient',)
     list_filter = ('edition', 'deadline',)
 
-    actions = ['download_csv']
+    actions = ["export_as_csv"]
 
-    def download_csv(self, request, queryset):
-        """Download entries of selected edition forms under a ZIP file."""
-        form_ids = queryset.values_list('form__id', flat=True)
-        forms = Form.objects.filter(id__in=form_ids)
-        return download_multiple_forms_entries(request, forms=forms)
+    def export_as_csv(self, request, queryset):
+        meta = self.model._meta
+        field_names = [field.name for field in meta.fields]
 
-    download_csv.short_description = (
-        'Télécharger les résponses des formulaires sélectionnés')
+        response = HttpResponse(content_type='text/csv')
+        response['Content-Disposition'] = 'attachment; filename={}.csv'.format(
+            meta)
+        writer = csv.writer(response)
+        writer.writerow(field_names)
+        for obj in queryset:
+            row = writer.writerow([getattr(obj, field)
+                                   for field in field_names])
+        return response
+    export_as_csv.short_description = "Exporter au format CSV"
 
 
 @admin.register(Participation)
@@ -100,3 +142,20 @@ class ParticipationAdmin(admin.ModelAdmin):
     list_filter = ('edition', 'submitted', 'state',)
     readonly_fields = ('submitted',)
     search_fields = ('user__first_name', 'user__last_name', 'user__email',)
+
+    actions = ["export_as_csv"]
+
+    def export_as_csv(self, request, queryset):
+        meta = self.model._meta
+        field_names = [field.name for field in meta.fields]
+
+        response = HttpResponse(content_type='text/csv')
+        response['Content-Disposition'] = 'attachment; filename={}.csv'.format(
+            meta)
+        writer = csv.writer(response)
+        writer.writerow(field_names)
+        for obj in queryset:
+            row = writer.writerow([getattr(obj, field)
+                                   for field in field_names])
+        return response
+    export_as_csv.short_description = "Exporter au format CSV"
diff --git a/users/admin.py b/users/admin.py
index 5131546c64907e3e684fb5d537becff1efd161f9..78baa2596b7e26f68840b205ed8eb01e70e9cc79 100644
--- a/users/admin.py
+++ b/users/admin.py
@@ -8,6 +8,12 @@ from visits.admin import ParticipationInline
 
 from .models import User
 
+actions = ["export_as_csv"]
+
+def export_as_csv(self, request, queryset):
+    pass
+
+export_as_csv.short_description = "Export Selected"
 
 class UserParticipationInline(ParticipationInline):
     """Inline for Participation on the User admin panel.