WebAvancé

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.

ABC
1AB
21VilleParis
32URL API=CONCAT("https://api.meteo.fr/weather?city=";B1)
43Réponse XML=SERVICEWEB(B2)
54Température=FILTRAGEXML(B3;"//temperature")
Résultat :<weather>...</weather> puis 22°C

Exemple 2 : API de taux de change

Récupération des taux de change depuis une API publique.

ABC
1AB
21Devise sourceEUR
32Devise cibleUSD
43Réponse API=SERVICEWEB("https://api.exchangerate.host/latest?base="&A1)
54Taux EUR/USD=FILTRAGEXML(B3;"//rate[@code='USD']")
Résultat :1.0854

Exemple 3 : API JSON avec extraction texte

Extraction de valeurs depuis une réponse JSON avec des fonctions texte.

ABC
1AB
21JSON brut=SERVICEWEB("https://api.exemple.com/data")
32Position "price"=CHERCHE("price":;A1)+8
43Fin valeur=CHERCHE(",";A1;B2)
54Prix extrait=STXT(A1;B2;B3-B2)
Résultat :Extraction manuelle de valeur JSON

Exemple 4 : URL dynamique avec paramètres

Construction d'une URL avec plusieurs paramètres de cellules.

ABC
1AB
21Code postal75001
32Typerestaurant
43Clé APIabc123
54Résultat=SERVICEWEB("https://api.local/search?zip="&B1&"&type="&B2&"&key="&B3)
Résultat :Recherche locale personnalisée

Exemple 5 : Gestion des erreurs

Protection contre les erreurs de connexion ou d'API.

ABC
1AB
21URLhttps://api.exemple.com/data
32Appel sécurisé=SIERREUR(SERVICEWEB(A1);"Erreur de connexion")
43Validation=SI(GAUCHE(B2;5)="Erreur";"Vérifier l'URL";"OK")
54Données=SI(B3="OK";FILTRAGEXML(B2;"//valeur");"N/A")
Résultat :Gestion robuste des erreurs

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éthodeType de donnéeRafraîchissementLimite
SERVICEWEBXML, JSON, texteAu recalcul32K caractères
Power QueryTout formatManuel/PlanifiéIllimité
RTDTemps réelAutomatique (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