Fonction FILTRE.XMLExtraire des données XML avec XPath
La fonction FILTRE.XML (FILTERXML en anglais) permet d'extraire des valeurs spécifiques d'un contenu XML en utilisant une expression XPath. C'est un outil puissant pour traiter des données structurées provenant de services web ou d'exports XML.
Combinée avec SERVICEWEB qui récupère des données d'une URL, FILTRE.XML permet de créer des connexions dynamiques à des API XML directement dans Excel.
Syntaxe de la fonction FILTRE.XML
=FILTRE.XML(xml; xpath)FILTRE.XML parse le contenu XML et retourne la valeur correspondant à l'expression XPath.
Comprendre chaque paramètre
xml
(obligatoire)Une chaîne de texte au format XML valide. Peut être une référence de cellule contenant du XML ou le résultat de SERVICEWEB().
xpath
(obligatoire)L'expression XPath pour localiser l'élément voulu. Exemples courants :
//element: tous les éléments de ce nom/root/child: chemin absolu//element[1]: premier élément//element/@attribut: valeur d'un attribut//element[condition]: avec filtre
Exemples pratiques
Exemple 1 – Extraire un titre d'un XML simple
Tu as une cellule A1 contenant du XML et tu veux extraire le titre du livre.
Contenu de A1 :
<livre><titre>Excel Avancé</titre><auteur>Jean</auteur></livre>L'expression XPath //titre trouve l'élément titre n'importe où dans le XML.
| A | B | |
|---|---|---|
| 1 | Formule | Résultat |
| 2 | =FILTRE.XML(A1; "//titre") | Excel Avancé |
| 3 | =FILTRE.XML(A1; "//auteur") | Jean |
=FILTRE.XML(A1; "//titre")Exemple 2 – Extraire un attribut
Tu veux récupérer la valeur d'un attribut dans un élément XML.
Contenu XML :
<produit id="SKU123" prix="29.99">Clavier</produit>Le @ permet d'accéder aux attributs d'un élément.
| A | B | |
|---|---|---|
| 1 | Formule | Résultat |
| 2 | =FILTRE.XML(A1; "//produit/@id") | SKU123 |
| 3 | =FILTRE.XML(A1; "//produit/@prix") | 29.99 |
| 4 | =FILTRE.XML(A1; "//produit") | Clavier |
=FILTRE.XML(A1; "//produit/@id")Exemple 3 – Combiner avec SERVICEWEB
Tu récupères un flux RSS et tu extrais le titre du premier article.
SERVICEWEB récupère le XML, FILTRE.XML extrait les données.
| A | B | |
|---|---|---|
| 1 | Description | Formule |
| 2 | Récupérer le XML | =SERVICEWEB("https://exemple.com/rss") |
| 3 | Extraire le titre | =FILTRE.XML(A1; "//item[1]/title") |
=FILTRE.XML(SERVICEWEB(url); "//item[1]/title")Astuce : [1] sélectionne le premier élément, [2] le deuxième, etc. Sans indice, tu obtiens le premier par défaut.
Aide-mémoire XPath
| Expression | Signification |
|---|---|
| / | Racine du document |
| // | N'importe où dans le document |
| @ | Attribut |
| [n] | n-ième élément (commence à 1) |
| [last()] | Dernier élément |
| text() | Contenu texte de l'élément |
Erreurs fréquentes
Erreur #VALEUR! – XML invalide
Le contenu XML n'est pas bien formé (balises non fermées, caractères invalides). Vérifie la structure du XML avec un validateur en ligne.
Erreur #VALEUR! – XPath ne trouve rien
L'expression XPath ne correspond à aucun élément. Vérifie les noms d'éléments (sensibles à la casse) et la structure du XML.
Questions fréquentes
Qu'est-ce que XPath ?
XPath (XML Path Language) est un langage de requête pour naviguer dans des documents XML. Il utilise une syntaxe de chemin similaire aux chemins de fichiers. Par exemple, '//livre/titre' sélectionne tous les éléments 'titre' qui sont enfants d'éléments 'livre' n'importe où dans le document.
Quelle version d'Excel supporte FILTRE.XML ?
FILTRE.XML (FILTERXML) est disponible depuis Excel 2013. C'est une fonction relativement ancienne par rapport aux autres fonctions XML. Elle fonctionne dans Excel 2013, 2016, 2019, 2021 et Excel 365.
Puis-je extraire plusieurs valeurs avec FILTRE.XML ?
FILTRE.XML retourne une seule valeur par défaut (la première correspondance). Pour extraire plusieurs valeurs, tu peux l'utiliser avec des indices XPath comme '//item[1]', '//item[2]', etc., ou combiner avec des fonctions matricielles dans les versions récentes d'Excel.
Comment gérer les espaces de noms XML ?
FILTRE.XML a des limitations avec les espaces de noms (namespaces). Pour les XML avec espaces de noms, tu devras peut-être utiliser des chemins XPath génériques comme '//*[local-name()="element"]' qui ignorent les préfixes d'espace de noms.
FILTRE.XML peut-elle parser du HTML ?
FILTRE.XML est conçue pour du XML valide et bien formé. Le HTML classique n'est souvent pas du XML valide (balises non fermées, attributs sans guillemets). Pour du XHTML strict ou du HTML5 bien formé, cela peut fonctionner. Sinon, utilise plutôt IMPORTXML dans Google Sheets ou Power Query dans Excel pour parser du HTML.
Fonctions similaires
Maîtrise les données web
Tu connais maintenant FILTRE.XML ! Rejoins Le Dojo Club pour découvrir toutes les fonctions de traitement de données web.
Essayer pendant 30 jours