Aller au contenu principal

Qu'est-ce que la fonction SERVICEWEB ?

Définition
La fonction SERVICEWEB envoie une requête HTTP GET vers l'URL fournie et retourne la réponse sous forme de texte brut dans la cellule. Elle ne supporte que les requêtes GET et est limitée à 32 767 caractères.

Tu sors SERVICEWEB (WEBSERVICE en anglais) le jour où une donnée change ailleurs que dans ton classeur, et que copier-coller à la main devient une tâche qui se répète à chaque rapport. C'est le raccourci qui te dispense d'un script externe pour aller chercher une information à jour directement depuis une cellule.

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 FILTRE.XML pour le XML ou avec CHERCHE et STXT pour le JSON, elle transforme Excel en véritable client REST.

Syntaxe

=SERVICEWEB(url)

Clique sur un argument pour aller à son explication.

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.

Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

Comprendre chaque paramètre de la fonction SERVICEWEB

1

url

: l'adresse URL complète du service web à appeler

Elle 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.

Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

Comment récupérer la réponse d'une API avec la fonction SERVICEWEB

Une facture en dollars datée du 2 janvier 2024 doit être convertie au taux de ce jour-là, et ton commissaire aux comptes voudra savoir d'où sort ce taux. Aller le chercher à la main sur un site puis le recopier, c'est une ligne de plus à justifier et une faute de frappe possible. La fonction SERVICEWEB interroge l'API directement depuis la cellule.

Les étapes
  1. 1
    Dans une cellule, écris =SERVICEWEB(.
  2. 2
    En 1er argument : clique sur la cellule qui contient l'adresse à interroger, A2. Elle porte une URL complète qui doit commencer par https:// ou http://, faute de quoi la fonction renvoie #VALEUR!. Garder l'adresse dans une cellule plutôt que de la taper entre guillemets dans la formule te permet de la changer sans rouvrir celle-ci.
  3. 3
    Ferme la parenthèse et appuie sur Entrée. La cellule reçoit alors la réponse brute du serveur, et la fonction relance l'appel à chaque recalcul de la feuille.
Au final, ta formule devrait ressembler à ça :=SERVICEWEB(A2)
Explication
La cellule reçoit la réponse du serveur telle quelle, sans mise en forme ni découpage : ici le JSON complet de l'API, taux compris. La fonction SERVICEWEB ne fait qu'une chose, aller chercher le contenu d'une adresse, et elle le fait à chaque recalcul de la feuille.
Exemple 2

Comment isoler une valeur de la réponse en combinant la fonction SERVICEWEB, la fonction STXT et la fonction CHERCHE

Le taux est bien arrivé dans ta feuille, mais il est prisonnier d'une ligne de JSON qu'Excel ne sait pas lire tout seul. Multiplier un montant par cette réponse rendrait une erreur, puisqu'il ne s'agit pas d'un nombre. Trois fonctions texte suffisent à en extraire la valeur et à la rendre calculable.

Les étapes
  1. 1
    Dans une cellule, écris =CNUM(.
  2. 2
    En 1er argument : écris tout le bloc qui isole le taux et referme-le, SUBSTITUE(STXT(A2; CHERCHE("""USD"":"; A2) + 6; 6); "."; ","). Il repère le marqueur "USD": dans la réponse, en prélève les six caractères qui le suivent et remplace leur point par une virgule, mais il rend encore du texte. Les guillemets sont triplés autour de USD parce qu'ils font partie du texte cherché, ce qui en fait la principale source de fautes de frappe.
  3. 3
    Ferme la parenthèse de la fonction CNUM et appuie sur Entrée. C'est elle qui transforme ce texte en vrai nombre, 1,0956, avec lequel tu peux enfin multiplier un montant.
Voici la formule que tu obtiens à la fin :=CNUM(SUBSTITUE(STXT(A2; CHERCHE("""USD"":"; A2) + 6; 6); "."; ","))
Explication
La réponse entière ne sert à rien tant que le taux reste noyé dedans. La fonction CHERCHE repère le marqueur "USD":, la fonction STXT prélève les six caractères qui le suivent, et la conversion finale transforme ce texte en vrai nombre 1,0956, avec lequel tu peux multiplier un montant.
Exemple 3

Comment gérer une erreur de service en combinant la fonction SERVICEWEB et la fonction SIERREUR

Un serveur tombe, un pare-feu d'entreprise bloque l'adresse, une API change de chemin : ta feuille se couvre alors d'erreurs jusque dans les totaux, et personne ne sait si le problème vient du réseau ou d'une formule. Le fichier devient illisible au pire moment. La fonction SIERREUR intercepte la panne et la remplace par un message clair.

Les étapes
  1. 1
    Dans une cellule, écris =SIERREUR(.
  2. 2
    En 1er argument : écris l'appel dont tu surveilles le résultat et referme-le, SERVICEWEB(A2). C'est lui qui s'exécute normalement tant que le service répond, et dont l'erreur éventuelle sera interceptée par la fonction.
  3. 3
    En 2ᵉ argument : saisis le texte à afficher quand l'appel échoue, "Service indisponible". Écris un message qui nomme la cause, car un simple "" masquerait la panne et laisserait croire que l'API a renvoyé une valeur vide.
  4. 4
    Ferme la parenthèse et appuie sur Entrée. La fonction SIERREUR intercepte toutes les erreurs sans distinction, si bien qu'une adresse mal écrite et un serveur en panne renvoient ici le même message ; teste l'adresse sans ce filet avant de conclure que le service est en cause.
Une fois les morceaux assemblés, ta formule donne ça :=SIERREUR(SERVICEWEB(A2); "Service indisponible")
Explication
Seule, la fonction SERVICEWEB rend #VALEUR! sur cette adresse introuvable, et cette erreur contamine toutes les cellules qui s'appuient dessus. Enveloppée dans la fonction SIERREUR, elle rend un message lisible qui dit à ton lecteur que le service n'a pas répondu, et non que son fichier est cassé.
Le conseil du pro
Si l'API te laisse choisir le format, demande du XML plutôt que du JSON. Avec FILTRE.XML et une expression XPath, tu cibles la valeur en une seule formule, là où le JSON t'oblige à un bricolage CHERCHE plus STXT bien plus fragile.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

Les 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.

Lucas, la mascotte du Dojo, compare deux fonctions Excel

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éthodeType de donnéesRafraîchissementLimiteCompétence requise
SERVICEWEBXML, JSON, texteAu recalcul (F9)32 767 caractèresFormules Excel
Power QueryTout formatManuel ou planifiéIllimitéeInterface Power Query
RTDDonnées temps réelAutomatique (push)Dépend du serveurServeur RTD requis
L’erreur fatale
SERVICEWEB tient dans une seule cellule : dès que la réponse dépasse 32 767 caractères, elle est tronquée sans le moindre message. Pour les grosses réponses d'API, bascule sur Power Query, qui n'a pas cette limite.
FAQ

Questions fréquentes

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.

Ressources

Pour aller plus loin

Continue sur ta lancée après la fonction SERVICEWEB : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.

Tout voir