diff --git a/hal/forms.py b/hal/forms.py
index 08c7ade814e2d4fc97cdd0a55012ef809f1b70e9..045ecd717b451a7bc08556c017c95ba3822bbacd 100644
--- a/hal/forms.py
+++ b/hal/forms.py
@@ -172,6 +172,12 @@ class Csvformat2halForm(forms.Form):
     domains2 = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=CHOICES_DOMAINS2, label="Autres domaines", initial='info.info-gt',required=False)
 
 
+class SearchDataHalForm(forms.Form):
+    mail_response = forms.CharField(required=True, max_length=40, label="Adresse mail de retour résultats")
+    annee_debut = forms.IntegerField(required=True, label="Année de début de la recherche", initial = 2015)
+    annee_fin = forms.IntegerField(required=True, label="Année de fin de la recherche", initial = 2022)
+    users_hal = forms.CharField(required=True, label="Liste utilisateurs", widget=forms.Textarea(attrs={'rows':5, 'cols':80}),)
+
 
 class Text2halForm(forms.Form): 
     form_author = forms.CharField(required=True, max_length=40, label="Forme auteur (*)")
diff --git a/hal/management/commands/search_hal_data.py b/hal/management/commands/search_hal_data.py
new file mode 100644
index 0000000000000000000000000000000000000000..cc91708978a14fb5a7ee2dc0436f3f022a167947
--- /dev/null
+++ b/hal/management/commands/search_hal_data.py
@@ -0,0 +1,117 @@
+####################################
+# Script create CSV SCIMago
+####################################
+# SCIMAGO et CORE sont des agences de notation de journaux et conferences scientifiques
+# SCIMAGO est generaliste et donne des notes Q1, Q2, Q3 et Q4 et ne note que les journaux
+# https://www.scimagojr.com/
+# CORE est specialise en informatique et donne des notes A*, A, B et C et note journaux et conferences
+# http://portal.core.edu.au/conf-ranks/
+#
+# Ce script permet la creation de CSV contenant pour les journaux le titre et la note, et pour les conferences, le titre, l'acronyme et la note
+# Principe : 
+# - on telecharge des CSV a partir d'URL dans des fichiers
+# - on parse les CSV en recuperant les infos souhaitees (titre et note ou titre, acronyme et note) dans une ou des listes
+# - on reconstruit un CSV a partir de la ou les listes
+#
+# Pour SCIMAGO, les journaux sont recuperes par annee et 3 domaines sont analyses (donc 3 URL de telechargement par annee) Computer Science, Mats et Engineering
+# Pour CORE, les conf sont recuperes par annee mais une seule base pour les journaux
+####################################
+
+from django.core.management.base import BaseCommand, CommandError
+from haltools.settings  import BASE_DIR
+from hal.dict_scimago_core import dict_scimago, dict_core
+import requests
+import csv
+import os
+
+###########
+# VARIABLES
+###########
+
+path_csv = str(BASE_DIR+"/")
+# Compteurs
+
+
+class Command(BaseCommand):
+    help = "renew all Scimago and Core CSV files from dictionaries in dict_scimago_core"
+
+    def handle(self, *args, **options):
+        csvf = "EC-isima-total.csv"
+        listpub = []
+        with open(csvf, 'r') as myfile:
+            readfile = csv.reader(myfile, delimiter=',')
+
+            for row in readfile :
+                nom = row[0].capitalize()
+                prenom = row[1].capitalize()
+                idhal = row[2]
+
+                if len(idhal) > 0 :
+                    url = "https://api.archives-ouvertes.fr/search/?q=authIdHal_s:{0}&start=0&rows=200&fl=uri_s,halId_s,docType_s,producedDate_s,title_s&wt=json&fq=producedDateY_i:[2018%20TO%202023]".format(idhal)
+
+                if len(idhal) == 0 :
+                    url = 'https://api.archives-ouvertes.fr/search/?q=authLastNameFirstName_s:"{0}+{1}"&start=0&rows=200&fl=uri_s,halId_s,docType_s,producedDate_s,title_s&wt=json&fq=producedDateY_i:[2018%20TO%202023]'.format(nom,prenom)
+                    #url = "https://api.archives-ouvertes.fr/search/?q=authFullName_s:{0} {1}&start=0&rows=200&fl=uri_s,halId_s,docType_s,producedDate_s,title_s&wt=json&fq=producedDateY_i:[2018%20TO%202023]".format(nom,prenom)
+                print(url)
+                req = requests.get(url)
+
+                self.stdout.write(self.style.SUCCESS("code HTTP {0}".format(req.status_code)))
+                #print (req.status_code)
+                #print (req.headers['content-type'])
+                if (req.status_code == 200) :
+                    try :
+                        json = req.json()
+                        # recup en json et on se place dans response puis docs
+                        tous_docs = json['response']['docs']
+
+                        # pour chaque element de 'docs', on recupere les elements de la publi que l'on place dans publilist
+                        cptpub=0
+                        for doc in tous_docs:
+                            #print ("lecture reponse")
+                            cptpub+=1
+
+
+                            #recup halId
+                            recup_halId = doc["halId_s"]
+                            #halid = recup_halId#'\"{0}\"'.format(recup_halId)
+
+                            # recup url
+                            uri = doc["uri_s"]
+                            #uri = '\"{0}\"'.format(uri)
+
+                            #recup doctype
+                            doctype = doc["docType_s"]
+                            #doctype = '\"{0}\"'.format(doctype)
+
+                            #recup title
+                            title = doc["title_s"]
+                            title[0].encode("utf-8")
+                            titlefinal = title[0].replace("\""," ")
+
+                            producedDate = doc["producedDate_s"]
+
+                            print("{0} {1} -> {2} {3} {4} {5} {6}".format(nom, prenom, titlefinal, recup_halId, uri,doctype, producedDate))
+                            listpub.append((nom, prenom, titlefinal, recup_halId, uri,doctype, producedDate ))
+                    except Exception as e :
+                        print("Problem JSON pour {0} {1}".format(nom,prenom))
+                else :
+                    print("Problem requete pour {0} {1}".format(nom,prenom))
+
+        with open("resultat_searchhaldata.csv", 'w') as myfile:
+            writefile = csv.writer(myfile, delimiter=',')
+
+            for pub in listpub :
+                nom = pub[0]
+                prenom = pub[1]
+                titre = pub[2]
+                halid = pub[3]
+                uri = pub[4]
+                doctype = pub[5]
+                datepub = pub[6]
+                writefile.writerow([nom, prenom, titre, halid, uri, doctype, datepub])
+
+
+        print ("")
+        print ("FIN")
+
+
diff --git a/hal/templates/base.html b/hal/templates/base.html
index f01caba4e1a04e17163f51e35b4406929551eed2..00ddf07ee52308235d3896fa06b77a3d36a2d0c7 100644
--- a/hal/templates/base.html
+++ b/hal/templates/base.html
@@ -52,6 +52,10 @@
       <a class="nav-link" href="{% url "verifhalconf_ranking" %}">Fix_Hal_Ranking</a>
     </li>
 
+    <li class="nav-item">
+      <a class="nav-link" href="{% url "search_hal_data" %}">Search_Data_Hal</a>
+    </li>
+
     <li class="nav-item">
       <a class="nav-link" href="{% url "aide" %}">Aide</a>
     </li>
diff --git a/hal/templates/hal/index.html b/hal/templates/hal/index.html
index 610419fdd8f880ed3a94ebbff2b918d730eeda5e..9af6f6c0efbd0982261d0cad3f0f1a6dc012cc05 100644
--- a/hal/templates/hal/index.html
+++ b/hal/templates/hal/index.html
@@ -16,7 +16,7 @@
 
 
           <h4 align="justify">
-          Ce site permet à des enseignants chercheurs d'utiliser des outils d'imports massifs de publications dans HAL
+          Ce site permet à des enseignants chercheurs d'utiliser des outils de recherche ou d'imports massifs de publications dans HAL
           <br/> <br/>
           
           <div class="alert alert-dismissible alert-danger">
@@ -48,6 +48,8 @@
           <br/>
           - <a href="https://www.scimagojr.com/" target="_blank">Scimago</a> pour les noms des journaux, <a href="http://portal.core.edu.au/conf-ranks/" target="_blank">Core ranking</a> pour les noms des conférences
           <br/><br/>
+          <b>Search_Data_Hal</b> permet de récupérer des publications à partir d'une liste d'idHal :
+          <br/><br/>
 
 
           <div class="alert alert-dismissible alert-primary">
diff --git a/hal/templates/hal/searchdatahal.html b/hal/templates/hal/searchdatahal.html
new file mode 100644
index 0000000000000000000000000000000000000000..47650099b75a115ad48901c4dffb1b176a2484f6
--- /dev/null
+++ b/hal/templates/hal/searchdatahal.html
@@ -0,0 +1,89 @@
+{% extends "base.html" %}
+{% load static %}
+{% load bootstrap3 %}
+{% load bootstrap_themes %}
+
+{% block head %}
+<head>
+    <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
+    <link rel="shortcut icon" href="{%  static 'imgsite/favicon.ico' %}">
+    <title>ImportHAL</title>
+    
+</head>
+{% endblock %}
+
+{% block content %}
+<h3>Search Data HAL</h3>
+  <br/>
+  	{% if user.is_authenticated %}
+
+	  {% if messages %}
+		{% for message in messages %}
+		<div style="color:red"><b>{{ message }} </b></div>
+		{% endfor %}
+	  <br/>
+	  {% endif %}
+
+  	<p align="left">Recherche de publications dans HAL à pârtir des idHal des auteurs
+  	<br/>
+  	Indiquez une adresse mail de récupération et bornez la recherche entre deux années (ex de 2018 à 2022)
+	<br/>
+	Indiquez aussi une liste des idHal d'auteurs de publications séparés par des virgules comme dans l'exemple ci-dessous
+	<br/>
+	<i>albert-durand,jean-dupont,celine-duchemin</i>
+	<br/>
+	Une recherche est effectuée sur les différents idhal et la réponse vous est envoyée par mail.
+	<div class="well bs-component">
+    <form action="{% url "search_hal_data" %}" method="post">
+        {% csrf_token %}
+
+        <div class="row">
+
+           <!--  1e ligne -->         
+          
+          <div class="col-lg-4">
+			<div class="fieldWrapper">
+		    {{ form.mail_response.errors }}
+		    {{ form.mail_response.label_tag }}<br/>
+		    {{ form.mail_response }}
+			</div>           
+          </div>
+       
+		  <div class="col-lg-4">
+			<div class="fieldWrapper">
+		    {{ form.annee_debut.errors }}
+		    {{ form.annee_debut.label_tag }}<br/>
+		    {{ form.annee_debut }}
+			</div>           
+          </div>
+
+		  <div class="col-lg-4">
+			<div class="fieldWrapper">
+		    {{ form.annee_fin.errors }}
+		    {{ form.annee_fin.label_tag }}<br/>
+		    {{ form.annee_fin }}
+			</div>           
+          </div>
+		  
+          <div class="col-lg-12">
+			<div class="fieldWrapper">
+		    {{ form.users_hal.errors }}
+		    {{ form.users_hal.label_tag }}<br/>
+		    {{ form.users_hal }}
+			</div>                   
+          </div>                          
+    </div>
+
+	
+        <input type="submit" class="btn btn-primary" value="Submit" />
+    </form>
+	</div>
+
+	  
+	{% else %}
+	
+	<br/>
+
+	{% endif %}
+
+{% endblock %}
diff --git a/hal/urls.py b/hal/urls.py
index 9c775ef36491c61474fc5bffe6b4d90cb137c70e..75de25c4947e577c174da1e18018a3e7347e6a07 100644
--- a/hal/urls.py
+++ b/hal/urls.py
@@ -18,6 +18,8 @@ urlpatterns = [
     #url(r'^bibtexxml$', views.bibtexxml, name='bibtexxml'),
     url(r'^csv2hal$', views.csv2hal, name='csv2hal'),
     url(r'^valid_post_hal$', views.valid_post_hal, name='valid_post_hal'),
+
+    url(r'^searchdatahal$', views.search_hal_data, name='search_hal_data'),
     
     #url(r'^text2hal$', views.text2hal, name='text2hal'),
     #url(r'^textxml$', views.textxml, name='textxml'),
diff --git a/hal/views.py b/hal/views.py
index abfa21b5fa9b19060ec579ae5026804aa54fc538..c4112e0908a0c448c89f5780ad242e327eb850df 100644
--- a/hal/views.py
+++ b/hal/views.py
@@ -9,7 +9,7 @@ from django.contrib.auth import authenticate, login, logout
 from django.contrib import messages
 from django.core.checks.messages import Error
 
-from .forms import ConnexionForm, Bibtex2halForm, BibtexXmlForm, Csv2halForm, VerifHalConfForm, Bibformat2halForm ,\
+from .forms import ConnexionForm, Bibtex2halForm, BibtexXmlForm, Csv2halForm, VerifHalConfForm, Bibformat2halForm ,SearchDataHalForm, \
     TextXmlForm, ModifTextForm,TextFromRG, Text2halForm
 
 from haltools.settings import MEDIA_ROOT
@@ -19,6 +19,7 @@ from .scripts_bibtex import script_bibtex_2_hal
 from .scripts_csv import script_csv_2_hal
 from .scriptupdatehalranking import script_verify_hal_ranking #, script_verif_hal_ranking
 from  .create_xml2hal import sendselect_2hal
+from .searchdatahal import searchdatahal
 
 from slugify import slugify
 from datetime import datetime
@@ -471,6 +472,36 @@ def csv2hal(request):
 
 
 
+##################################################################################################################################
+## SEARCHHALDATA  ################################################################################################################
+##################################################################################################################################
+
+
+def search_hal_data(request):
+
+    reponse = ""
+    csvfile = ""
+    form = SearchDataHalForm(request.POST or None)
+
+    if form.is_valid():
+        mail_response = form.cleaned_data['mail_response']
+        annee_debut = form.cleaned_data['annee_debut']
+        annee_fin = form.cleaned_data['annee_fin']
+        users_hal = form.cleaned_data['users_hal']
+
+        if int(annee_debut) >= int(annee_fin) :
+            msg_to_announce = "Problème : l'année de début doit être inférieure à l'année de fin {0}".format(mail_response)
+
+        else :
+            searchdatahal.delay(mail_response, annee_debut, annee_fin, users_hal)
+
+            msg_to_announce = "Un mail vous sera envoyé à l'adresse suivante : {0}".format(mail_response)
+        
+        messages.add_message(request, messages.WARNING, msg_to_announce)
+
+    return render(request, 'hal/searchdatahal.html', locals())
+
+
 ##################################################################################################################################
 ## TEXT2HAL  #####################################################################################################################
 ##################################################################################################################################