Fonction SERVICEWEB
La fonction SERVICEWEB (WEBSERVICE en anglais) permet d'appeler une URL et de récupérer les données retournées directement dans une cellule. C'est la porte d'entrée d'Excel vers les API REST, les flux de données web et les services en ligne.
Syntaxe
=SERVICEWEB(url)Paramètres
url
L'adresse URL complète du service web à appeler. Doit commencer par http:// ou https://. Peut inclure des paramètres de requête (?param=valeur&autre=valeur2).
Exemples pratiques
Exemple 1 : Récupérer du XML depuis une API
Appel d'une API météo retournant des données XML.
| A | B | C | |
|---|---|---|---|
| 1 | A | B | |
| 2 | 1 | Ville | Paris |
| 3 | 2 | URL API | =CONCAT("https://api.meteo.fr/weather?city=";B1) |
| 4 | 3 | Réponse XML | =SERVICEWEB(B2) |
| 5 | 4 | Température | =FILTRAGEXML(B3;"//temperature") |
Exemple 2 : API de taux de change
Récupération des taux de change depuis une API publique.
| A | B | C | |
|---|---|---|---|
| 1 | A | B | |
| 2 | 1 | Devise source | EUR |
| 3 | 2 | Devise cible | USD |
| 4 | 3 | Réponse API | =SERVICEWEB("https://api.exchangerate.host/latest?base="&A1) |
| 5 | 4 | Taux EUR/USD | =FILTRAGEXML(B3;"//rate[@code='USD']") |
Exemple 3 : API JSON avec extraction texte
Extraction de valeurs depuis une réponse JSON avec des fonctions texte.
| A | B | C | |
|---|---|---|---|
| 1 | A | B | |
| 2 | 1 | JSON brut | =SERVICEWEB("https://api.exemple.com/data") |
| 3 | 2 | Position "price" | =CHERCHE("price":;A1)+8 |
| 4 | 3 | Fin valeur | =CHERCHE(",";A1;B2) |
| 5 | 4 | Prix extrait | =STXT(A1;B2;B3-B2) |
Exemple 4 : URL dynamique avec paramètres
Construction d'une URL avec plusieurs paramètres de cellules.
| A | B | C | |
|---|---|---|---|
| 1 | A | B | |
| 2 | 1 | Code postal | 75001 |
| 3 | 2 | Type | restaurant |
| 4 | 3 | Clé API | abc123 |
| 5 | 4 | Résultat | =SERVICEWEB("https://api.local/search?zip="&B1&"&type="&B2&"&key="&B3) |
Exemple 5 : Gestion des erreurs
Protection contre les erreurs de connexion ou d'API.
| A | B | C | |
|---|---|---|---|
| 1 | A | B | |
| 2 | 1 | URL | https://api.exemple.com/data |
| 3 | 2 | Appel sécurisé | =SIERREUR(SERVICEWEB(A1);"Erreur de connexion") |
| 4 | 3 | Validation | =SI(GAUCHE(B2;5)="Erreur";"Vérifier l'URL";"OK") |
| 5 | 4 | Données | =SI(B3="OK";FILTRAGEXML(B2;"//valeur");"N/A") |
Erreurs courantes
#VALEUR!
L'URL n'est pas valide, ne commence pas par http:// ou https://, ou contient des caractères non encodés. Utilisez ENCODERURL() pour encoder les paramètres.
#CONNEXION!
Impossible de contacter le serveur. Vérifiez votre connexion internet, les paramètres de pare-feu, ou si le serveur est accessible.
Cellule tronquée
La réponse dépasse 32 767 caractères. Utilisez Power Query pour les grandes réponses ou filtrez les données côté serveur via les paramètres de l'API.
Combinaison avec FILTRAGEXML
SERVICEWEB retourne du texte brut. Pour les réponses XML, combinez avec FILTRAGEXML pour extraire les valeurs :
' Récupérer le XML
=SERVICEWEB("https://api.exemple.com/data.xml")
' Extraire un élément spécifique
=FILTRAGEXML(SERVICEWEB(url);"//element/souselement")
' Extraire un attribut
=FILTRAGEXML(SERVICEWEB(url);"//element/@attribut")
' Extraire plusieurs valeurs (tableau)
=FILTRAGEXML(SERVICEWEB(url);"//items/item/nom")Comparaison des méthodes d'import web
| Méthode | Type de donnée | Rafraîchissement | Limite |
|---|---|---|---|
| SERVICEWEB | XML, JSON, texte | Au recalcul | 32K caractères |
| Power Query | Tout format | Manuel/Planifié | Illimité |
| RTD | Temps réel | Automatique (push) | Serveur requis |
FAQ
SERVICEWEB fonctionne-t-il dans Excel Online ?
Non, SERVICEWEB est disponible uniquement dans Excel pour Windows et Mac (version desktop). Pour Excel Online, utilisez Power Automate ou des scripts Office pour récupérer des données web.
Quels types d'API puis-je appeler avec SERVICEWEB ?
SERVICEWEB peut appeler n'importe quelle API REST qui retourne du texte (XML, JSON, HTML, CSV). La fonction retourne le contenu brut de la réponse HTTP. Elle ne supporte que les requêtes GET.
Comment traiter une réponse JSON avec SERVICEWEB ?
SERVICEWEB retourne le JSON brut sous forme de texte. Utilisez ensuite des fonctions texte (GAUCHE, CHERCHE, STXT) ou FILTRAGEXML avec une conversion JSON vers XML pour extraire les valeurs.
Y a-t-il une limite de taille pour la réponse ?
Oui, SERVICEWEB est limitée à environ 32 767 caractères (limite d'une cellule Excel). Pour des réponses plus volumineuses, utilisez Power Query ou VBA.
Comment gérer les erreurs de connexion ?
Encapsulez SERVICEWEB dans SIERREUR pour gérer les échecs de connexion. Par exemple : =SIERREUR(SERVICEWEB(url);"Connexion échouée"). Vérifiez aussi que l'URL est accessible depuis votre réseau.
Fonctions associées
Tu veux aller plus loin ?
Rejoins Le Dojo Club pour accéder à des formations complètes, des lives experts et une communauté d'entraide.
Essayer pendant 30 jours