La collecte d’informations qualifiées sur les tiers avec lesquels une entreprise est en affaire est primordiale surtout dans le contexte de crise actuel. Par ailleurs, cette pratique répond à des obligations légales en rapport avec l’évaluation du risques de contrôle interne (PAF) ou encore la lutte contre le blanchiment, la corruption et le financement du terrorisme (loi SAPIN 2…).
Ce processus de collecte gagne à être systématisé et automatisé. Les API (Application Programming Interface ou interface de programmation applicative) aident à développer ces pratiques.
Un API assure l’interface entre deux systèmes. Par exemple, les logiciels de paye télétransmettent les Déclarations Sociales Nominatives (DSN) vers les serveurs de l’État par l’intermédiaire d’un API.
Le fonctionnement d’un API est simple. Un logiciel envoie une requête à un site internet ou à un autre logiciel par le biais de son API. Le site internet exécute la requête, interroge ses bases de données et renvoie le résultat au logiciel, qui intègre ses données dans son processus de calcul. Les API assurent ainsi l’interaction entre des logiciels d’éditeurs différents.
Excel est en capacité d’interroger un API web (protocole HTTP). A titre d’exemple, la feuille de calcul Excel (fournie en libre téléchargement) permet d’interroger, à l’aide de requêtes, la base de données d’informations juridiques Pappers.fr grâce son API.
Pour utiliser l’API Pappers.fr, il est nécessaire de s’inscrire gratuitement sur le site. Suite à cette inscription, l’utilisateur obtient un Token (identifiant unique personnel) qui sert de clef pour communiquer avec Pappers.fr. La feuille de calcul n’est utilisable qu’après insertion de ce token dans le code VBA (à la place des XXXXX de la ligne Const Pappers_Token = “api_token=XXXXX”). Pour accéder au code VBA, il faut ajouter le menu Développeur au ruban de menus d’Excel puis cliquer sur le bouton Visual Basic.
La version gratuite de l’API Pappers permet de consulter dix mille fiches entreprises par mois et mille téléchargements de documents par mois, ce qui répond aux besoins les plus usuels.
Paramètres de la requête envoyée à Pappers (QUERY PARAMETERS) et statuts de la réponse (RESPONSES) :
Exemple de requête :
https://api.pappers.fr/v1/entreprise?api_token=XXXXXXXX&siren=542065479
Réponse de l’API pour le SIREN 542 065 479 (PSA AUTOMOBILES) :
La réponse de Pappers comprend quatre statuts différents. Si le SIREN existe (et que le Token est reconnu), la réponse renvoyée comprend le statut 200 et les champs de données correspondant à la fiche juridique.
Extrait des champs disponibles sur l’interface Pappers.fr :
La feuille de calcul ci-après interroge la base Pappers et restitue les données suivantes :
L’utilisateur saisit un numéro SIREN et clique sur le bouton Importation. Ce bouton déclenche l’exécution d’une macro VBA qui envoie une requête (Set Req = CreateObject(“MSXML2.ServerXMLHTTP”) Req.Open “GET”, URL, False Req.Send) vers l’API et analyse la réponse reçue en retour (Réponse = Req.ResponseText).
La feuille de calcul affiche un échantillon de données contenu dans la réponse de l’API.
Le code source de la macro VBA est le suivant :
'Macro VBA d'interrogation des bases Pappers (API)
'Ecrit par Benoît RIVIERE 12/2020, benoit@auditsi.eu
'Informations : https://www.auditsi.eu/?p=9377
Option Explicit
'Constantes
'---Token Pappers : pour en obtenir un gratuitement : https://www.pappers.fr/api/register
Const Pappers_Token = "api_token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
'---Adresse HTTP de l'API Pappers
Const Pappers_URL = "https://api.pappers.fr/v1/entreprise"
Function Extraction_champ(Chaîne As Variant, NomChamp)
Dim PositionDébut As Long
NomChamp = NomChamp & """:"""
PositionDébut = InStr(Chaîne, NomChamp) + Len(NomChamp)
Extraction_champ = Mid(Chaîne, PositionDébut, InStr(Right(Chaîne, Len(Chaîne) - PositionDébut + 1), """") - 1)
End Function
Sub Infos_Jur()
Dim SIREN As String
Dim URL As String
Dim Réponse As String
Dim Req As Object
Dim i As Integer
Dim MsgErreur As String
Dim LibChamp As String
Dim Champ As String
Dim ligne As Integer
Dim DénomSoc As String
'Lecture SIREN
SIREN = ActiveSheet.Range("B6")
'---Si SIREN est vide sortir de la procédure
If SIREN = "" Then Exit Sub
'Constitution de l'URL à requêter
URL = Pappers_URL & "?" & Pappers_Token & "&siren=" & SIREN
'Envoi de la requête au site Pappers
Set Req = CreateObject("MSXML2.ServerXMLHTTP")
Req.Open "GET", URL, False
Req.Send
'Lecture de la réponse à la requête restituée par Pappers
Réponse = Req.ResponseText
'Si la réponse correspond à un message d'erreur la variable MsgErreur renvoie un message
MsgErreur = ""
If InStr(Réponse, "statusCode"":400,""error") > 1 Or InStr(Réponse, "statusCode"":404,""error") > 1 Then
MsgErreur = "SIREN inconnu !"
ElseIf InStr(Réponse, "statusCode"":401,""error") > 1 Then
MsgErreur = "Token non reconnu ! Pour obtenir un Token valide, s'inscrire sur https://www.pappers.fr/api/register"
End If
'Restitution des données juridiques
For i = 1 To 10 '10 champs de données restitués
'Extraction des champs de données
Select Case i
Case 1:
LibChamp = "Dénomination sociale"
Champ = Extraction_champ(Réponse, "denomination")
DénomSoc = Champ
Case 2:
LibChamp = "Forme juridique"
Champ = Extraction_champ(Réponse, "forme_juridique")
Case 3:
LibChamp = "Capital social"
Champ = Extraction_champ(Réponse, "capital")
Case 4:
LibChamp = "Code postal + ville"
Champ = Extraction_champ(Réponse, "code_postal") & " " & Extraction_champ(Réponse, "ville")
Case 5:
LibChamp = "Latitude / Longitude"
Champ = Extraction_champ(Réponse, "latitude") & " / " & Extraction_champ(Réponse, "longitude")
Case 6:
LibChamp = "Activité (NAF)"
Champ = Extraction_champ(Réponse, "code_naf") & ". " & Extraction_champ(Réponse, "libelle_code_naf")
Case 7:
LibChamp = "Objet social"
Champ = Extraction_champ(Réponse, "objet_social")
Case 8:
LibChamp = "Date de création"
Champ = Extraction_champ(Réponse, "date_creation_formate")
Case 9:
LibChamp = "Entreprise cessée"
Champ = Extraction_champ(Réponse, "entreprise_cessee")
Case 10:
LibChamp = "Numéro de TVA intracommunautaire"
Champ = Extraction_champ(Réponse, "numero_tva_intracommunautaire")
End Select
'Ligne de la feuille de calcul où coller le champ en cours
ligne = 9 + (i - 1) * 2
'Si le SIREN est inconnu -> renvoyer un message d'erreur
If MsgErreur <> "" Then Champ = MsgErreur
'Transfert des données dans le classeur Excel
With ActiveSheet
.Range("A" & ligne).Value = LibChamp
.Range("B" & ligne).Value = Champ
End With
Next i
'Liens hypertextes
With ActiveSheet
If MsgErreur <> "" Then
.Range("A" & ligne + 2).Value = ""
Else
.Hyperlinks.Add Anchor:=.Range("A" & ligne + 2), Address:="https://www.pappers.fr/entreprise/" & SIREN, TextToDisplay:="Cliquer ici pour accéder à la fiche juridique Pappers de l'entreprise " & DénomSoc
End If
.Hyperlinks.Add Anchor:=.Range("A" & ligne + 4), Address:="https://www.auditsi.eu/?p=9377", TextToDisplay:="Plus d'informations sur www.auditsi.eu"
End With
End Sub
D’autres sites d’informations légales ou de cotation d’entreprises proposent des API, par exemple :
- Le site de l’INPI (accès au RCS) : https://data.inpi.fr/content/editorial/apis_entreprises_doc
- Le site Companies House (le RCS britannique) : https://developer.company-information.service.gov.uk/api/docs/index/gettingStarted.html#overview
- Le Registre des Bénéficiaires Effectifs (RBE) recensant toutes les personnes physiques associées ou actionnaires d’une société civile ou commerciale exerçant un contrôle effectif sur ses organes décisionnels. Accès réservé notamment aux experts-comptables, commissaires aux comptes, avocats… : https://api.gouv.fr/les-api/api-rbe
- Répertoire National des Métiers : https://api.gouv.fr/les-api/api_rnm
- Le registre public des entreprises artisanales : https://api.gouv.fr/les-api/api_rnm
- Répertoire National des Associations (RNA) : https://api.gouv.fr/les-api/api_rna
- Le site CreditSafe (cotation d’entreprises) : https://www.creditsafe.com/fr/fr/solutions-integrees/api-integration-de-donnees/api-creditsafe.html
L’interrogation de sites internet ne disposant pas d’API peut passer par l’analyse de la restitution de simples requêtes HTTP.
Exemples de réutilisation des informations juridiques et légales : Fonctions Excel (DénominationSociale et NuméroTVAIntracommunautaire) / Intégration des informations juridiques et cotations d’entreprises dans la balance auxiliaire (projet PADoCC_Ecritures)
___
Approfondir le sujet : Informations juridiques et légales / Programmer en VBA
Derniers articles parBenoît RIVIERE (voir tous)
- Analyse des données comptables (FEC) : analyse de la conformité comptable des transactions et de leur dénouement - dimanche 23 novembre 2025
- L’AMF et l’AFA appellent à la vigilance sur le risque de corruption par des réseaux criminels de personnes ayant accès à des informations privilégiées - lundi 4 août 2025
- Détecter les inversions HT/TVA avec ANA-FEC2 - jeudi 31 juillet 2025
- Analyse de FEC en ligne avec ANA-FEC2 (manuel d’utilisation) - mardi 29 juillet 2025
- Rapport AFA 2024 : les contrôles comptables à ne pas négliger - samedi 5 juillet 2025









Bonjour Benoit
Félicitation pour votre site d’une richesse et d’une aide précieuse.
J’ai utilisé votre code avec l’api pappers.
Je souhaitais utiliser la seconde fonction de cette api qui est de fournir une liste de sociétés à partir d’un nom.
Souvent nécessaire lors de la création d’un compte client si nous n’avons pas le siren. Débutant en vba, je reste bloqué sur la mise en forme de la réponse. comment mettre les données en forme de tableau.
Si vous avez une piste je suis preneur.
bonne journée
benoist
Bonsoir,
Je ne me suis pas encore penché sur cette question parce que ce n’est pas dans mes besoins du moment. Je pense qu’il faut scinder la réponse reçue avec des Split.
Je regarderai à l’occasion.
Bonne soirée,
Benoît RIVIERE
Bonjour Benoît,
Félicitation pour ce code très utile.
Petit aide complémentaire. Quelle est la syntaxe pour les champs de type Array (eg Representants) pour obtenir pour chacun d’entre eux : nom, prénom, qualité …
Merci d’avance de votre aide
Bien cordialement
Philippe BÉRARD
Merci pour le code très utile.Est il possible de rajouter 2 infos “le ratio d’endettement” et le “résultat net”
J’ai essayé d’insérer dans le VBA 2 cases mais le résultat n’est pas bon
Cordialement
Pingback: Reconstituer l'organigramme juridique d'un groupe avec Pappers - Audit & Systèmes d'Information
Pingback: Python : automatiser le téléchargement en masse des documents juridiques et financiers des entreprises au format PDF à l'aide de l'API de l'INPI - Audit & Systèmes d'Information
Pingback: Télécharger gratuitement des listes d'entreprises et de leurs établissements (fichier SIRENE) - Audit & Systèmes d'Information
Bonjour Benoît,
Félicitation pour cet article très bien fait.
Petite question. Quelle est la syntaxe pour les champs de type Array (eg Etablissement) pour obtenir pour chacun d’entre eux : adresse…
Merci d’avance de votre aide.
Pingback: Excel : collecter des données juridiques sur les entreprises avec l'API SIRENE - 1ère partie : base SIREN (entreprises) - Audit & Systèmes d'Information