FILTRXML (FILTERXML en anglais) est la fonction Excel qui te permet d'extraire des données depuis du contenu XML en utilisant des requêtes XPath. Si tu travailles avec des flux RSS, des API web ou des fichiers de configuration XML, cette fonction transforme Excel en véritable outil d'analyse de données structurées.
Combinée à SERVICEWEB, elle ouvre la porte aux données en temps réel directement dans tes feuilles : prix de marché, titres d'articles de veille, paramètres de configuration de serveurs. Fini les copier-coller manuels depuis des fichiers XML.
Syntaxe de la fonction FILTRXML
=FILTRXML(xml; xpath)FILTRXML est disponible dans Excel pour Windows et Mac. Elle n'est pas disponible dans Excel Online ni dans Google Sheets. Si ton expression XPath correspond à plusieurs éléments, la fonction retourne un tableau dynamique qui se déverse verticalement dans les cellules adjacentes (Excel 365).
Comprendre chaque paramètre de la fonction FILTRXML
FILTRXML prend deux arguments, et l'ordre compte : d'abord le xml à analyser (une chaîne, une cellule ou un appel SERVICEWEB), ensuite l'expression xpath qui dit quoi y pêcher. Aucun des deux n'est facultatif : sans XPath, la fonction ne sait pas quel nœud te rapporter.
xml
: le contenu XML que tu veux analyserÇa peut être une chaîne de texte contenant du XML valide, une référence à une cellule contenant du XML, ou le résultat d'une fonction SERVICEWEB qui récupère du XML depuis une API.
Le XML doit être parfaitement formaté : toutes les balises doivent être fermées correctement, et les caractères spéciaux doivent être échappés (< pour <, > pour >, & pour &).
Astuce : Teste toujours ton XML dans un validateur en ligne avant de l'utiliser dans FILTRXML. Un seul caractère mal placé ou une balise non fermée fait échouer toute la formule. Les outils en ligne t'identifient l'erreur de structure en quelques secondes.
xpath
: l'expression XPath qui définit ce que tu veux extraire du XMLXPath est un langage de requête pour naviguer dans les structures XML, similaire à SQL pour les bases de données.
Expressions courantes : "//item" trouve tous les éléments nommés item, "//product[@stock>0]" trouve les produits dont l'attribut stock est supérieur à 0, "//article/titre" suit un chemin précis depuis article jusqu'à titre.
Astuce : Quand tu utilises des comparaisons dans XPath (comme @prix>100), mets ton expression XPath dans une cellule séparée et référence-la dans ta formule : =FILTRXML(A1; B1). C'est plus lisible et évite les problèmes d'échappement des caractères < et > dans la barre de formule.
Exemples pratiques pas à pas
Data analyst : extraire des données depuis un flux RSS
Tu es data analyst et tu dois surveiller les derniers articles publiés sur les blogs sectoriels pour alimenter ta veille concurrentielle. Plutôt que de visiter chaque site manuellement, tu utilises leurs flux RSS.
| A | B | C | |
|---|---|---|---|
| 1 | URL flux RSS | Formule | Résultat |
| 2 | https://blog-tech.com/rss | =FILTRXML(SERVICEWEB(A2);"//item/title") | Les tendances IA 2025 |
| 3 | Cloud computing : guide complet | ||
| 4 | Cybersécurité pour PME |
=FILTRXML(SERVICEWEB(A2); "//item/title")La formule récupère le XML du flux RSS via SERVICEWEB, puis l'expression XPath en extrait tous les titres d'articles. Le tableau dynamique affiche automatiquement les résultats en cascade. Pour compléter ta veille, vise le nœud des dates de publication dans une colonne adjacente.
Astuce de pro : Ajoute "//item/link" dans une troisième colonne pour obtenir les URLs des articles et créer des hyperliens cliquables directement dans ton tableau de veille.
E-commerce manager : parser les réponses d'API produits
Tu es e-commerce manager et ton système de gestion de catalogue expose une API XML qui liste les produits. Tu veux extraire automatiquement les produits en stock pour mettre à jour ton fichier Excel de suivi.
| A | B | C | |
|---|---|---|---|
| 1 | Données XML (cellule A1) | Expression XPath | Résultat |
| 2 | <products><product stock="15">Laptop</product><product stock="0">Souris</product><product stock="8">Clavier</product></products> | //product[@stock>0] | Laptop |
| 3 | Clavier |
=FILTRXML(A1; "//product[@stock>0]")Ici, l'expression XPath ne retient que les produits dont l'attribut stock est supérieur à 0 : tu obtiens directement la liste des articles disponibles, sans tri manuel. Pour récupérer aussi les quantités, il suffit de cibler cet attribut stock dans une colonne adjacente.
Administrateur système : analyser des fichiers de configuration XML
Tu es administrateur système et tu dois extraire les paramètres de configuration depuis plusieurs fichiers XML de serveurs pour créer un tableau de bord de supervision centralisé.
| A | B | C | |
|---|---|---|---|
| 1 | Configuration XML | Paramètre | Résultat |
| 2 | <config><server><hostname>srv-prod-01</hostname><port>8080</port><status>active</status></server></config> | //hostname | srv-prod-01 |
| 3 | //port | 8080 | |
| 4 | //status | active |
=FILTRXML(A2; "//hostname")Ici, l'expression XPath cible le nœud hostname et renvoie le nom du serveur. En créant une ligne par serveur et plusieurs colonnes qui visent chacune un paramètre du même XML (nom, port, état), tu centralises les informations de dizaines de serveurs dans un seul fichier mis à jour automatiquement.
Analyste financier : récupérer des taux de change depuis une API
Tu es analyste financier et tu dois récupérer quotidiennement les taux de change depuis une API financière qui retourne du XML pour mettre à jour tes modèles de prévision.
| A | B | C | |
|---|---|---|---|
| 1 | Source données | Expression | Résultat |
| 2 | API Taux BCE | //currency[@code="USD"]/rate | 1,0845 |
| 3 | API Taux BCE | //currency[@code="GBP"]/rate | 0,8521 |
| 4 | API Taux BCE | //currency[@code="JPY"]/rate | 161,23 |
=FILTRXML(SERVICEWEB("url-api-bce"); "//currency[@code=""USD""]/rate")La combinaison de SERVICEWEB et de FILTRXML crée une connexion live vers l'API : SERVICEWEB rapporte le XML, l'expression XPath isole le taux de la devise ciblée (ici USD). Les données se rafraîchissent à chaque actualisation du classeur, et tu peux créer une ligne par devise en construisant l'XPath dynamiquement avec CONCAT.
Astuce de pro : Pour rendre les expressions XPath avec des paramètres dynamiques, utilise CONCAT : =FILTRXML(A1; CONCAT("//product[@id='"; B1; "']")) où B1 contient l'ID recherché. Ça te permet de créer des recherches paramétrables sans réécrire la formule.
Envie de t'entraîner sur de vrais exercices Excel ?
M'entraînerLes erreurs fréquentes avec la fonction FILTRXML
Avec FILTRXML, les ennuis viennent presque toujours de deux endroits : le XML lui-même ou l'expression XPath. Un #VALEUR! pointe soit une balise non fermée ou un caractère mal échappé dans le XML, soit une faute de syntaxe XPath (sensible à la casse, guillemets oubliés).
Méfie-toi aussi du résultat vide qui ne déclenche aucune erreur : c'est souvent un XML à espaces de noms (<ns:element>) que ton "//element" ne reconnaît pas.
Erreur #VALEUR! sur un XML mal formé
C'est l'erreur la plus fréquente. Le XML doit être parfaitement structuré : chaque balise ouvrante doit avoir sa balise fermante, les attributs doivent être entre guillemets, et les caractères spéciaux doivent être échappés (< pour <, > pour >, & pour &). Copier depuis Word peut introduire des caractères invisibles.
Solution : Colle ton XML dans un validateur en ligne (cherche "XML validator" sur Google) : il t'indique exactement où se trouve l'erreur de structure. Vérifie aussi l'absence de caractères invisibles ou de guillemets typographiques qui remplacent les guillemets droits.
Erreur #VALEUR! sur une expression XPath incorrecte
Une faute dans la syntaxe XPath génère cette erreur. Les erreurs courantes : oublier les guillemets autour des valeurs textuelles, utiliser de mauvais opérateurs, ou mal orthographier les noms d'éléments. XPath est sensible à la casse.
Solution : Commence par une expression simple comme "//element" pour vérifier que le XML est valide. Ajoute ensuite progressivement tes filtres et teste à chaque étape pour identifier précisément ce qui ne fonctionne pas.
Aucun résultat alors que des éléments existent
Si ton XML utilise des espaces de noms (namespace) comme <ns:element>, l'expression "//element" ne trouve rien car le préfixe de namespace fait partie du nom. C'est une cause fréquente de résultat vide silencieux.
Solution : Pour les XML avec espaces de noms, utilise "//*[local-name()='element']" au lieu de "//element". Cette syntaxe ignore les préfixes de namespace et trouve l'élément par son nom local.
Les caractères < et > dans les formules créent des conflits
Quand tu utilises des comparaisons dans XPath (comme @prix>100), Excel peut mal interpréter les chevrons dans une formule complexe imbriquée.
Solution : Mets ton expression XPath dans une cellule séparée et référence-la dans ta formule : =FILTRXML(A1; B1) où B1 contient //item[@prix>100]. C'est plus lisible, plus facile à déboguer et évite tous les problèmes d'échappement.
FILTRXML vs SERVICEWEB vs ENCODEURL
Ces trois fonctions sont complémentaires. Utilise SERVICEWEB pour récupérer le XML depuis une API, ENCODEURL pour construire l'URL si elle contient des paramètres spéciaux, et FILTRXML pour extraire les données pertinentes du XML récupéré.
| Critère | FILTRXML | SERVICEWEB | ENCODEURL |
|---|---|---|---|
| Usage principal | Parser du XML | Récupérer données web | Encoder des URLs |
| Connexion internet requise | Non | Oui | Non |
| Retourne un tableau dynamique | Oui | Non | Non |
| Filtrage avancé | Oui (XPath) | Non (retourne tout) | Non (encodage uniquement) |
| Niveau de complexité | Avancé | Débutant | Débutant |
Questions fréquentes sur la fonction FILTRXML
Dois-je connaître XPath pour utiliser FILTRXML ?
Pas besoin d'être expert. Quelques expressions de base comme //item, //product[@id>5] ou //article/titre suffisent pour 90 % des cas d'usage courants.
Tu peux apprendre au fur et à mesure en testant tes expressions directement dans Excel ou dans un testeur XPath en ligne.
FILTRXML fonctionne-t-elle avec des API web en temps réel ?
Oui. Combine FILTRXML avec SERVICEWEB pour récupérer et analyser des données XML depuis une API : =FILTRXML(SERVICEWEB("url-api"); "//prix").
Les données se mettent à jour automatiquement à chaque actualisation du classeur. C'est très puissant pour automatiser la récupération de données sans macro ni connexion externe.
Quelle est la limite de taille XML que FILTRXML peut traiter ?
FILTRXML gère des fichiers XML jusqu'à environ 1 Mo sans problème notable. Au-delà, les performances se dégradent progressivement.
Pour des fichiers plus volumineux, Power Query est mieux adapté car il est conçu pour l'ingestion et la transformation de données de grande taille.
Comment extraire plusieurs valeurs simultanément ?
FILTRXML retourne automatiquement un tableau dynamique avec Excel 365. Si ton expression XPath trouve 10 éléments, tu obtiens 10 résultats qui se déversent verticalement dans les cellules sous ta formule.
Une seule formule suffit pour extraire une liste entière. Si une cellule adjacente est occupée, Excel affiche l'erreur de déversement #DEBORDEMENT! : libère les cellules en dessous.
FILTRXML fonctionne-t-elle avec les flux RSS ?
Oui. Les flux RSS sont du XML standard. Tu peux extraire les titres d'articles avec =FILTRXML(SERVICEWEB("url-rss"); "//item/title"), les liens avec "//item/link", et les dates avec "//item/pubDate".
C'est parfait pour créer une veille automatisée dans Excel qui se rafraîchit à l'ouverture du fichier.
Pour aller plus loin
Les fonctions similaires : SERVICEWEB, ENCODEURL, CONCAT, SUBSTITUE, STXT
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
