WebAvancé

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

1

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().

2

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.

AB
1FormuleRésultat
2=FILTRE.XML(A1; "//titre")Excel Avancé
3=FILTRE.XML(A1; "//auteur")Jean
Formule :=FILTRE.XML(A1; "//titre")
Résultat :Excel Avancé

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.

AB
1FormuleRésultat
2=FILTRE.XML(A1; "//produit/@id")SKU123
3=FILTRE.XML(A1; "//produit/@prix")29.99
4=FILTRE.XML(A1; "//produit")Clavier
Formule :=FILTRE.XML(A1; "//produit/@id")
Résultat :SKU123

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.

AB
1DescriptionFormule
2Récupérer le XML=SERVICEWEB("https://exemple.com/rss")
3Extraire le titre=FILTRE.XML(A1; "//item[1]/title")
Formule :=FILTRE.XML(SERVICEWEB(url); "//item[1]/title")
Résultat :Premier article du flux

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

ExpressionSignification
/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