Lorsque l’on lance la consultation d’un site internet, le navigateur (Mozilla, Chrome, Internet Explorer…) envoie une requête à ce site. Ce site retourne sa réponse et le navigateur l’affiche, généralement, sous la forme d’une page mise en forme avec le langage HTML (HyperText Mark-Up Language) et agrémentée d’éléments dynamiques encodés PHP ou JavaScript.
Il est parfaitement possible d’envoyer des requêtes non pas à partir d’un navigateur internet mais à partir d’un programme VBA (par exemple) pour ensuite extraire les données utiles du résultat retourné par le site.
Par exemple, le site d’information juridique Pappers.fr renvoie le texte HTML (ici un extrait) suivant au sujet de la société PSA AUTOMOBILES SA (SIREN 542 065 479) :
Ce code est affiché ainsi par un navigateur internet (ici Mozilla) :
Le code HTML retourné par Pappers contient de nombreuses informations juridiques ayant trait à la société interrogée comme sa dénomination sociale, l’adresse de son siège social…
Il est aisé d’extraire de ce code des informations. C’est l’objet du code VBA ci-après.
Ce code crée deux fonctions directement utilisables dans des formules de calcul Excel au même titre que SOMME ou RECHERCHEV. Pour ajouter de nouvelles fonctions à Excel, lire l’article EXCEL : Créer une fonction en VBA.
Ces deux fonctions sont DénominationSociale et NuméroTVAIntracommunautaire et s’utilisent dans des formules Excel ainsi :
=DénominationSociale(“542065479”)
=NuméroTVAIntracommunautaire(“542065479”)
Function DénominationSociale(ByVal SIREN As String) Dim Url As String, Txt As String Url = "https://www.pappers.fr/entreprise/" & SIREN With CreateObject("WINHTTP.WinHTTPRequest.5.1") .Open "GET", Url, False .send Txt = .responseText End With DénominationSociale = Split(Split(Txt, "<h1 class=""small-text"">")(1), "</h1")(0) End Function Function NuméroTVAIntracommunautaire(ByVal SIREN As String) Dim Url As String, Txt As String Url = "https://www.pappers.fr/entreprise/" & SIREN With CreateObject("WINHTTP.WinHTTPRequest.5.1") .Open "GET", Url, False .send Txt = .responseText End With NuméroTVAIntracommunautaire = Split(Split(Txt, "TVA intracommunautaire : <span>")(1), "</span>")(0) End Function
Ces fonctions fonctionnement toutes deux de la même manière. Elles envoient une requête (CreateObject(“WINHTTP.WinHTTPRequest.5.1”) .Open “GET”, Url, False . Send) au site Pappers (dont l’adresse est contenue dans la variable Url (https://www.pappers.fr/entreprise/” & SIREN). Le numéro SIREN contenu dans la variable SIREN est communiqué par l’utilisateur par le bias de la formule Excel.
Le résultat de la requête est récupéré par la variable Text (Txt = .responseText).
La fonction Split permet de récupérer l’information souhaitée (soit la dénomination sociale et le numéro de TVA intracommunautaire). La fonction Split convertit une chaîne de caractères en une variable tableau en fonction de séparateurs.
Extrait du code HTML contenant la dénomination sociale :
Extrait du code HTML contenant le numéro de TVA intracommunautaire :
Le classeur Excel comprenant les fonctions VBA exposées ci-avant est téléchargeable ci-après.
__
Approfondir le sujet : Programmer en VBA

Bonjour,
Je regarde depuis plusieurs années vos articles qui sont vraiment très intéressant.
L’article suivant est très intéressant pour récupérer les données des entreprises rapidement et ainsi établir les DAS2. Je viens de télécharger le fichier excel. Avec le numéro SIREN j’ai bien le nom de la société mais comment puis je obtenir l’adresse, le code postal et la ville de la société ainsi que l’activité ?
merci par avance pour votre aide,
bien cordialement,
Bonjour,
Merci pour votre message.
Pour obtenir les informations souhaitées, il vous suffit de suivre le même processus que celui que j’ai suivi pour récupérer la dénomination sociale par exemple, puis coder la récupération de ces données sur le même principes.
Cordialement,
Benoît RIVIERE
Bonjour, merci pour votre fichier Excel de recherche des dénominations et code TVA. Le fichier téléchargé fonctionne parfaitement pour la désignation sociale mais pour le code TVA. Pourriez vous m’indiquer comment je peux régler le problème, svp ?
Merci,
Bonjour, en effet Pappers a changé la présentation des informations sur son site. Il faut donc modifier le code. Je regarderai ce sujet à l’occasion. Bon week-end.
Bonjour, le ficchier ne fonctionne pas (office 2021)
jd@atb-etudes.fr
Bonjour,
Pappers a changé la présentation de son site internet. Il est donc nécessaire de modifier le code du programme.
Cordialement,
B. RIVIERE
Bonjour,
Je vous remercie pour cet article très intéressant qui m’ a fait découvrir le monde des API.
La macro Excel que vous avez jointe m’a mis un pied à l’étrier pour explorer ce nouveau domaine.
Au-delà d’un certains nombre de requêtes, il faut payer un abonnement à Pappers pour obtenir les informations. Je l’ai donc retravailler pour extraire les informations en masse mais à partir du site de l’INSEE où les requêtes sont gratuites. La seule contrainte est un plafond de 30 interrogations par minutes. Mon objectif était de collecter des données fiables, récentes et d’identifier les organisations administrativement cessées afin de les comparer avec le contenu de nos bases clients et fournisseurs.
Encore merci pour votre article et les suivants !
Bonsoir,
Je vous remercie pour votre message. Ca fait plaisir que ce travail de recherche que j’essaye de partager ait pu vous servir.
Dans une série de deux articles à paraître en avril et mai prochain, je propose d’exploiter l’API SIRENE. Elle a effectivement une limite de 30 requêtes à la minute mais présente l’intérêt de la gratuité. Cette API ouvre beaucoup de possibilités en matière de collecte et de mise à jour de données sur les entreprises et leurs établissements.
Tous mes meilleurs voeux pour 2024.
Bien cordialement,
Benoît RIVIERE