SERVICEWEB (WEBSERVICE en anglais) est la porte d'entrée d'Excel vers le web. Elle prend une URL en argument et retourne le contenu brut de la réponse directement dans une cellule : du XML, du JSON, du texte brut. Tu n'as plus besoin de copier-coller des données depuis un navigateur ou de lancer un script externe.
C'est elle qui te permet de récupérer un taux de change en temps réel, d'interroger une API météo, de brancher ton tableau sur un flux de données produit ou d'automatiser des rapports qui se mettent à jour à chaque recalcul. Combinée avec FILTRAGEXML pour le XML ou avec CHERCHE et STXT pour le JSON, elle transforme Excel en véritable client REST.
Syntaxe de la fonction SERVICEWEB
=SERVICEWEB(url)SERVICEWEB est disponible uniquement dans Excel pour Windows et Mac (version bureau). Elle n'est pas disponible dans Excel Online ni dans les applications mobiles.
Comprendre chaque paramètre de la fonction SERVICEWEB
url
: l'adresse URL complète du service web à appelerElle doit commencer par http:// ou https:// et peut inclure des paramètres de requête (?param=valeur&autre=valeur2).
Tu peux construire l'URL dynamiquement en concaténant des valeurs de cellules : ="https://api.exemple.com/data?city="&A1 te permet de changer la requête simplement en modifiant la cellule A1. Pour les caractères spéciaux dans les paramètres (espaces, accents), utilise ENCODERURL() pour les encoder correctement.
Astuce : Pour les paramètres contenant des espaces ou des caractères accentués, entoure-les de ENCODERURL() avant de les concaténer à l'URL : ="https://api.exemple.com/search?q="&ENCODERURL(A1). Sans encodage, les espaces peuvent générer une erreur #VALEUR!.
Exemples pratiques pas à pas
Responsable marketing : récupérer des données XML depuis une API météo
Tu prépares un rapport marketing qui affiche la météo locale pour personnaliser des campagnes par région. Tu stockes le nom de la ville en B1 et construis dynamiquement l'URL en B2 avec CONCAT. SERVICEWEB en B3 appelle l'API et récupère le XML brut, puis FILTRAGEXML en B4 extrait uniquement la valeur de température.
Changer la valeur en B1 suffit à mettre à jour toutes les données. Cette architecture en cascade est le pattern de base pour brancher Excel sur n'importe quelle API 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") |
Contrôleur de gestion : taux de change en temps réel
Tu gères un tableau de bord financier multi-devises et tu veux que les taux de change se mettent à jour automatiquement sans intervention manuelle. SERVICEWEB récupère la réponse complète de l'API en B3, puis FILTRAGEXML cible précisément le taux USD via son expression XPath.
Chaque fois que tu ouvres le fichier ou que tu forces un recalcul avec F9, les taux sont rafraîchis. Tu peux étendre la logique pour plusieurs devises en dupliquant la ligne B4 avec le code devise adapté.
| 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']") |
Développeur data : extraction d'une valeur depuis une réponse JSON
SERVICEWEB retourne le JSON brut sous forme de texte. Excel n'a pas de parseur JSON natif, mais tu peux extraire des valeurs avec des fonctions texte. CHERCHE localise la position de la clé, puis STXT extrait la valeur entre cette position et la virgule suivante.
Cette approche fonctionne bien pour des réponses JSON simples et prévisibles. Pour des structures complexes ou imbriquées, Power Query reste plus adapté.
| 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) |
Astuce de pro : Pour les APIs qui retournent du XML, FILTRAGEXML est beaucoup plus fiable et lisible que l'extraction manuelle. Si l'API te laisse le choix, demande une réponse XML plutôt que JSON.
Acheteur : recherche locale avec URL dynamique
Tu gères des recherches de fournisseurs ou de prestataires locaux et tu veux automatiser les requêtes depuis un tableau de paramètres. En stockant le code postal, le type et la clé API dans des cellules séparées, tu peux modifier la recherche sans toucher à la formule.
Cette architecture est particulièrement utile pour des requêtes batch : copie la formule sur plusieurs lignes avec différents codes postaux ou types pour obtenir des résultats en masse.
| 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) |
Tout profil : gestion robuste des erreurs de connexion
Sans protection, une erreur de connexion fait afficher #CONNEXION! ou #VALEUR! dans toutes les cellules dépendantes, ce qui rend le fichier difficile à lire. En enveloppant SERVICEWEB dans SIERREUR, tu remplaces l'erreur par un message explicite.
Les cellules B3 et B4 cascadent la logique : si la connexion a échoué, toute la chaîne affiche un message clair plutôt que des erreurs. C'est une bonne pratique à systématiser dans tout fichier connecté à des données externes.
| 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") |
Envie de t'entraîner sur de vrais exercices Excel ?
M'entraînerLes erreurs fréquentes avec la fonction SERVICEWEB
Branche Excel sur une API et tu rencontreras vite l'un de ces trois écueils. Le plus fréquent est le #VALEUR! : il surgit dès qu'un espace ou un accent traîne dans tes paramètres d'URL sans passer par ENCODERURL, ou que l'adresse oublie son http://.
Le #CONNEXION! raconte une autre histoire : la formule est bonne, mais le serveur ne répond pas (réseau coupé, pare-feu d'entreprise). Et même quand tout marche, une grosse réponse peut être coupée net dès qu'elle dépasse les 32 767 caractères que tient une cellule.
Erreur #VALEUR! : URL invalide ou paramètres non encodés
L'URL ne commence pas par http:// ou https://, contient des espaces non encodés, ou inclut des caractères spéciaux (accents, &, =) dans les paramètres sans encodage.
Solution : Vérifie que l'URL commence bien par http:// ou https://. Pour les paramètres contenant des espaces ou des caractères spéciaux, enveloppe chaque paramètre dans ENCODERURL() avant de le concaténer : =SERVICEWEB("https://api.exemple.com/search?q="&ENCODERURL(A1)).
Erreur #CONNEXION! : serveur inaccessible
Le serveur est inaccessible depuis ton réseau : connexion internet coupée, pare-feu d'entreprise bloquant les requêtes, serveur en maintenance ou URL incorrecte.
Solution : Teste l'URL directement dans ton navigateur pour vérifier qu'elle fonctionne. Si tu es sur un réseau d'entreprise, contacte le service informatique pour autoriser les requêtes HTTP sortantes depuis Excel. Utilise SIERREUR pour gérer l'erreur proprement dans le fichier.
Cellule tronquée : réponse dépassant 32 767 caractères
SERVICEWEB est limitée à 32 767 caractères (limite d'une cellule Excel). Les API qui retournent de grandes listes ou des réponses volumineuses dépassent facilement cette limite.
Solution : Filtre les données côté serveur en ajoutant des paramètres à l'URL (pagination, filtres, champs spécifiques). Pour les grandes réponses, Power Query est la bonne solution : il n'a pas de limite de taille et gère nativement JSON et XML.
SERVICEWEB vs Power Query vs RTD : quelle méthode pour importer des données web ?
Garde SERVICEWEB quand tu veux une requête web qui vit dans une cellule et se rafraîchit au recalcul, sans quitter tes formules : taux de change, petite réponse XML ou JSON sous les 32 767 caractères. Dès que la réponse gonfle ou que la structure se complique, passe à Power Query, qui n'a pas de limite de taille et parse nativement le JSON.
RTD ne joue pas dans la même cour : il te faut un serveur dédié, mais en échange tu obtiens un flux poussé en continu, là où SERVICEWEB attend sagement ton F9.
| Méthode | Type de données | Rafraîchissement | Limite | Compétence requise |
|---|---|---|---|---|
| SERVICEWEB | XML, JSON, texte | Au recalcul (F9) | 32 767 caractères | Formules Excel |
| Power Query | Tout format | Manuel ou planifié | Illimitée | Interface Power Query |
| RTD | Données temps réel | Automatique (push) | Dépend du serveur | Serveur RTD requis |
Questions fréquentes sur la fonction SERVICEWEB
SERVICEWEB fonctionne-t-elle dans Excel Online ?
Non, SERVICEWEB est disponible uniquement dans Excel pour Windows et Mac (version bureau). Pour Excel Online, utilise 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 et ne permet pas d'envoyer des en-têtes d'authentification personnalisés.
Comment traiter une réponse JSON avec SERVICEWEB ?
SERVICEWEB retourne le JSON brut sous forme de texte. Pour des valeurs simples, utilise CHERCHE pour localiser la clé et STXT pour extraire la valeur. Pour des structures complexes, Power Query est plus adapté : il parse nativement le JSON et te permet de naviguer dans l'arborescence.
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, utilise Power Query ou filtre les données côté serveur via les paramètres de l'API.
Comment gérer les erreurs de connexion proprement ?
Enveloppe SERVICEWEB dans SIERREUR pour gérer les échecs de connexion : =SIERREUR(SERVICEWEB(url);"Connexion échouée"). Teste ensuite si la réponse commence par un message d'erreur avec SI et GAUCHE pour protéger les cellules dépendantes.
SERVICEWEB peut-elle envoyer des données (requête POST) ?
Non, SERVICEWEB supporte uniquement les requêtes GET. Pour envoyer des données ou appeler des APIs qui nécessitent POST, tu dois utiliser Power Automate, VBA (avec la bibliothèque XMLHTTP), ou un script Office.
Pour aller plus loin
Bloqué sur une formule Excel ?
Pose ta question à notre assistant Excel IA, il te sort la bonne formule en quelques secondes.
Essayer l'assistant IAGratuit · 10 questions par mois
