Macro Excel pour extraire des adresses depuis la raison sociale: méthodes, API et flux de travail
Dans un contexte B2B, récupérer rapidement l’adresse et les informations associées d’entreprises à partir de leur raison sociale est un besoin récurrent. Cet article synthétise les techniques décrites dans le draft fourni, en les réorganisant autour d’un flux cohérent et en les enrichissant de suggestions pratiques, de liens API publiques et d’astuces Excel pour gagner en efficacité.
Contexte et enjeux
Le répertoire SIRENE de l’INSEE et les bases publiques comme RNCS constituent des ressources essentielles pour identifier les entreprises et leurs établissements. L’API Recherche d’Entreprises de Data Gouv offre une interface standardisée pour récupérer des données officielles (SIREN, SIRET, code NAF, adresse) et permet d’éviter les doublons dans les bases B2B. L’objectif est de structurer un workflow Excel qui interroge ces API, extrait les champs souhaités et intègre les résultats dans un classeur client.
Flux général: interroger, extraire, enrichir
- Interroger une source publique (API Data Gouv ou équivalent) avec le nom de la société ou un identifiant partiel.
- Récupérer les données pertinentes (SIREN, SIRET, adresse, code NAF, dénomination sociale).
- Gérer les limites d’appels (quotas par minute/jour) et les éventuelles erreurs de token.
- Nettoyer et normaliser les résultats: suppression des doublons, harmonisation des formats d’adresse et des codes NAF.
- Intégrer les résultats dans Excel: colonnes dédiées, liaison ligne à ligne avec les sociétés sources.
Utilisation de l’API Data Gouv et des tokens
Pour accéder à l’API de Data Gouv, il faut généralement obtenir une clef/token après inscription. Cette clef est associée au modèle d’URL utilisé pour les requêtes et doit être insérée dans le code VBA ou dans le connecteur utilisé par l’outil d’enrichissement. L’API applique des limites de requêtes (par exemple 7/s ou 30/min selon les versions), il faut donc prévoir des pauses et une gestion des erreurs (erreurs 998, 999, etc.).
Exemple pratique: extraction via Excel et VBA
Le cadre général proposé dans le draft peut être réutilisé ainsi:
- Importer un CSV/Excel contenant à minima les noms des sociétés à rechercher (et optionnellement le département ou localisation).
- Formuler une ou plusieurs requêtes à l’API en fonction du nom et des filtres disponibles (par exemple sort_by_size=true pour prioriser les grandes entités).
- Traiter les réponses JSON et extraire les champs denominationUniteLegale (ou équivalents) et code NA F, adresse et code postal.
- Écrire les résultats dans des colonnes dédiées et retirer les retours chariot superflus pour éviter les lignes vides inutiles.
- Gérer les erreurs et tester sur un échantillon avant le traitement en masse.
Remarque: certains mots-clés et noms de champs peuvent varier selon les versions de l’API. Adapter les mappings (example: denominationUniteLegale, siren, siret, adresseEtablissement, codePostalEtablissement, libelleCommuneEtablissement) en fonction du flux de réponse reçu.
Lire aussi: TVA et Excel
Cas pratique: structurer les données
Pour une base client, une composition typique du tableau Excel pourrait être :
- Colonne A: Nom de l’entreprise (raison sociale)
- Colonne B: Département ou localisation (facultatif)
- Colonne C: SIREN
- Colonne D: SIRET
- Colonne E: Code NAF
- Colonne F: Dénomination unifiée
- Colonne G: Adresse principale
- Colonne H: Code postal
Enrichissement: набор d’options et d’optimisations
Pour gagner en robustesse et en performances, plusieurs approches sont possibles :
- Utiliser sort_by_size=true pour privilégier le siège social ou la holding lorsque plusieurs résultats existent.
- Filtrer les entrées avant enrichment: ne traiter que les lignes sans SIREN, ou celles pour lesquelles le nom correspond avec une certaine distance de similarité.
- Pré-nettoyage des noms: retirer les suffixes tels que SAS, SARL, SA, etc., pour améliorer la précision des recherches initiales.
- Regrouper les appels API et insérer des délais entre les requêtes afin de respecter les quotas et éviter les blocages.
- Utiliser des méthodes alternatives comme REGEX dans Excel pour extraire plus proprement les codes SIREN/SIRET à partir des réponses JSON lorsque le parsing est complexe.
Si l’API n’offre pas toutes les informations souhaitées directement (par exemple pour certaines adresses multiples), il peut être nécessaire d’appeler des endpoints additionnels ou de croiser les résultats avec d’autres sources publiques.
Intégration d’infographies et de vidéos
A quoi servent le SIREN et le SIRET ?
Tableaux et visualisations possibles
| Élément | Description | Exemple de champ API |
|---|---|---|
| SIREN | Identifiant unique à 9 chiffres | siren |
| SIRET | Identifiant unique à 14 chiffres (SIREN + établissement) | siret |
| Raison sociale | Dénomination officielle | denominationUniteLegale |
| Adresse établissement | Adresse complète de l’établissement | adresseEtablissement |
| Code postale | Code postal de l’établissement | codePostalEtablissement |
Cas d’usage et limites
La méthode manuelle est longue et sujette à erreurs, surtout lorsque l’on doit parcourir des pages nombreuses et assumer la variabilité des textes. L’usage d’API publiques permet de standardiser les résultats, mais il faut rester vigilant sur les quotas, sur la fiabilité des correspondances nom - établissement, et sur la nécessité de nettoyer les données d’entrée (suppression des suffixes, homogénéisation des écritures, etc.).
Bonnes pratiques pour le déploiement
- Commencer par un petit échantillon pour tester les mappings et les conversions JSON → colonnes Excel.
- Garder une trace des modifications de token et des éventuels messages d’erreur pour faciliter le débogage.
- Archivage des résultats et archivage des versions du script VBA pour éviter les régressions lors des mises à jour API.
- Documenter les règles de désambiguïsation utilisées (ex. utilisation du département, ou de la localisation) pour les cas similaires à l’avenir.
Lire aussi: Excel et la TVA : Mode d'emploi
Lire aussi: Comment Calculer TVA 20%
balises:
