Power Query comme client API REST
Power Query peut interroger directement n’importe quelle API REST pour intégrer en temps réel des données externes : cours de devises, météo, statistiques e-commerce, CRM. Plus besoin de copier-coller manuel. Un rafraîchissement clic droit met à jour l’intégralité de votre tableau de bord.
Étape 1 : accéder à l’API
Données > Obtenir des données > À partir d’autres sources > À partir du Web. Saisissez l’URL complète de l’endpoint. Exemple pour récupérer le cours EUR/USD via exchangerate-api :
https://api.exchangerate-api.com/v4/latest/EUR
Étape 2 : parser le JSON
Power Query détecte automatiquement le JSON et affiche le contenu structuré. Cliquez sur Record pour naviguer dans les noeuds. Utilisez Convertir en table pour aplatir la structure.
Étape 3 : authentification
Beaucoup d’API exigent une clé API. Deux modes :
- Clé en URL :
https://api.exemple.com/data?api_key=XXX - Clé en header : nécessite le dialogue avancé
Dialogue avancé de la requête Web : onglet Options > Ajouter un en-tête, nom = Authorization, valeur = Bearer XXX.
Étape 4 : gestion de la pagination
Les API limitent souvent à 100 résultats par page. Solution : fonction récursive en M.
let
GetPage = (page as number) =>
let
url = "https://api.exemple.com/clients?page=" & Number.ToText(page),
data = Json.Document(Web.Contents(url)),
items = data[results]
in
items,
AllPages = List.Generate(
() => [page = 1, items = GetPage(1)],
each List.Count([items]) > 0,
each [page = [page] + 1, items = GetPage([page] + 1)],
each [items]
),
Combined = List.Combine(AllPages),
Table = Table.FromList(Combined, Splitter.SplitByNothing())
in
Table
Cas pratique 1 : tableau de bord taux de change FCFA
Exporter quotidiennement les taux EUR, USD, GBP vs FCFA. Graphique d’évolution hebdomadaire. Utile pour une PME qui achète en Europe et vend en FCFA.
Cas pratique 2 : CA Stripe en direct
Connexion à l’API Stripe /v1/charges. Récupération des transactions du mois. Consolidation dans un tableau de bord ventes. Remplace l’export manuel du dashboard Stripe.
Cas pratique 3 : leads HubSpot
API HubSpot /crm/v3/objects/contacts. Chaque lundi, rapport sur les leads créés la semaine précédente, répartition par source, lead scoring. Déclenche des actions commerciales ciblées.
Étape 5 : sécurité des clés
Ne jamais coder la clé API en dur dans la requête visible. Solution : stocker la clé dans un paramètre Power Query ou une cellule nommée sur une feuille masquée et protégée par mot de passe.
Étape 6 : gestion des erreurs
Power Query échoue sans gracier si l’API répond 500. Encapsulez avec try…otherwise :
let result = try Json.Document(Web.Contents(url)) otherwise null in result
Étape 7 : rafraîchissement automatique
Données > Propriétés de la requête > cochez Actualiser toutes les X minutes. Idéal pour un écran de monitoring. Alternative : macro VBA déclenchée à l’ouverture du classeur.
Limites
Power Query fait des requêtes synchrones. Pour des volumes importants (plus de 10 000 appels), préférez Python avec pandas puis export CSV consommé par Power Query. La combinaison hybride est souvent optimale.
Conclusion
Power Query transforme Excel en véritable plateforme d’intégration de données. Toutes les API modernes deviennent sources exploitables sans écrire une ligne de Python. Compétence transversale précieuse pour tout analyste.