Aller au contenu principal

Qu'est-ce que la fonction IMPORTHTML ?

Définition
La fonction IMPORTHTML extrait les balises HTML <table> ou <ul>/<ol> d'une page web publique et les insère directement dans Google Sheets. Elle ne fonctionne pas dans Excel.

IMPORTHTML (même nom en anglais), réservée à Google Sheets, t'évite de copier-coller à la main une donnée publiée sur une page web à chaque fois qu'elle change. Tu la branches une fois sur la bonne page, et le tableau ou la liste que tu vises revient tout seul dans ta feuille.

Parfait pour suivre des classements, récupérer des données financières ou automatiser la collecte d'informations publiées sur le web. Les données se mettent à jour automatiquement à chaque ouverture ou recalcul du fichier.

Syntaxe

=IMPORTHTML(url; requête; index)

Clique sur un argument pour aller à son explication.

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

Comprendre chaque paramètre de la fonction IMPORTHTML

Les trois arguments s'enchaînent toujours dans le même ordre : d'abord l'url de la page, puis le type d'élément à extraire ("table" ou "list"), enfin l'index qui dit lequel prendre. Aucun n'est facultatif.

Le piège n'est pas l'ordre mais l'index : il compte les balises dans le code HTML, pas ce que tu vois à l'écran. Un tableau caché dans l'en-tête peut décaler toute la numérotation.

1

url

: l'adresse complète de la page web contenant le tableau ou la liste

Elle doit commencer par "http://" ou "https://". Tu peux la saisir directement entre guillemets dans la formule, mais le plus lisible reste de la coller dans une cellule et de la référencer.

Dans nos exemples, l'URL vit en A1 (ici https://data.excellersacademy.com/media/videos/fixtures/classement.html), le type d'élément en B1 et l'index en C1. La formule se réduit alors à =IMPORTHTML(A1;B1;C1), sans un seul guillemet à taper.

2

requête

: le type d'élément HTML à extraire

Deux valeurs possibles : "table" pour les tableaux HTML (<table>) ou "list" pour les listes à puces ou numérotées (<ul> et <ol>).

Le choix dépend de la structure de la page source. Si les données que tu veux récupérer sont dans un tableau HTML, utilise "table". Si elles sont dans une liste à puces ou numérotée, utilise "list". Placée dans une cellule (par exemple B1), la valeur s'écrit sans guillemets.

3

index

: le numéro du tableau ou de la liste à extraire, en commençant à `1` pour le premier élément de la page

Si une page contient 5 tableaux et que tu veux le 3e, utilise 3.

L'index correspond à l'ordre d'apparition dans le code HTML de la page, pas à l'ordre visuel. Les tableaux et les listes se comptent séparément : un tableau et une liste peuvent tous deux porter l'index 1. Un élément caché dans l'en-tête ou le pied de page peut décaler la numérotation.

Vrai ou faux ?
« IMPORTHTML peut récupérer n'importe quel tableau que je vois sur la page. » Faux. Elle ne lit que le HTML brut, avant l'exécution des scripts : un tableau généré en JavaScript s'affiche à l'écran mais ressort vide. Dans ce cas, vise une source au HTML statique comme Wikipédia.
Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

Comment importer un tableau d'une page web avec la fonction IMPORTHTML

Tu suis un petit classement publié sur une page web et tu aimerais le voir se mettre à jour tout seul dans Google Sheets, sans le recopier à chaque changement. La page affiche un tableau tout simple, deux colonnes Equipe et Points avec trois équipes. Plutôt que de coller ces valeurs à la main, tu ranges l'adresse de la page et les deux réglages dans trois cellules, et tu laisses la fonction IMPORTHTML faire le va-et-vient à ta place.

Les étapes
  1. 1
    Dans une cellule, écris =IMPORTHTML(.
  2. 2
    En 1er argument : clique sur la cellule où tu as collé l'adresse de la page, A1. Elle affiche https://data.excellersacademy.com/media/videos/fixtures/classement.html. Pointer la cellule plutôt que de retaper l'adresse dans la formule t'évite de jongler avec les guillemets.
  3. 3
    En 2ᵉ argument : clique sur la cellule qui fixe le type d'élément à extraire, B1. Elle contient le mot table, qui vise une balise <table> de la page et laisse les listes de côté.
  4. 4
    En 3ᵉ argument : clique sur la cellule qui donne le numéro de l'élément, C1. Elle contient 1 pour viser le premier tableau rencontré dans le code de la page. Comme la page n'en compte qu'un, ce 1 tombe forcément dessus.
  5. 5
    Ferme la parenthèse et appuie sur Entrée. La fonction lit tes trois cellules et déverse le tableau d'un seul bloc sous la formule.
Au final, ta formule devrait ressembler à ça :=IMPORTHTML(A1;B1;C1)
Explication
La fonction lit tes trois cellules et rapatrie le premier tableau de la page d'un seul bloc : la ligne d'en-tête Equipe / Points, puis Alpha (28), Beta (21) et Gamma (17). Les nombres sont reconnus comme de vrais nombres, alignés à droite, donc tu peux les additionner ou les trier sans les reconvertir. Le point clé tient dans B1 et C1 : le mot table vise une balise <table>, et l'index 1 prend le premier tableau de la page.
Exemple 2

Comment importer une liste d'une page web avec la fonction IMPORTHTML

La même page héberge aussi une liste à puces, celle des villes hôtes, juste sous le tableau. Cette fois, tu veux récupérer ces villes dans une colonne, sans toucher au reste. Le principe ne bouge pas d'un pouce par rapport au tableau : tu gardes l'URL en A1 et tu changes simplement le type d'élément à extraire pour passer des tableaux aux listes.

Les étapes
  1. 1
    Dans une cellule, écris =IMPORTHTML(.
  2. 2
    En 1er argument : clique sur la cellule qui contient l'adresse de la page, A1. Elle garde la même adresse que pour le tableau, https://data.excellersacademy.com/media/videos/fixtures/classement.html, puisque cette page héberge à la fois le tableau et la liste.
  3. 3
    En 2ᵉ argument : clique sur la cellule qui fixe le type d'élément, B1. Elle contient cette fois list à la place de table, ce qui fait basculer la fonction des tableaux vers les listes à puces et numérotées.
  4. 4
    En 3ᵉ argument : clique sur la cellule qui donne le numéro de l'élément, C1. Elle contient 1 pour la première liste de la page, et ce 1 ne vise pas le même élément que dans l'exemple du tableau, car les listes se comptent à part des tableaux.
  5. 5
    Ferme la parenthèse et appuie sur Entrée. Les trois villes se rangent les unes sous les autres dans une seule colonne : Paris, Lyon, Marseille.
Voici la formule que tu obtiens à la fin :=IMPORTHTML(A1;B1;C1)
Explication
Le mot list en B1 fait basculer la fonction des tableaux vers les listes à puces (<ul>) et numérotées (<ol>), et l'index 1 en C1 vise la première liste de la page. Tu récupères ses trois puces, une par ligne dans la colonne A : Paris, Lyon, puis Marseille. Le titre placé juste au-dessus de la liste reste dehors, car c'est un simple titre de section, pas un élément de la liste.
Exemple 3

Comment choisir le bon index avec la fonction IMPORTHTML

Le troisième réglage, l'index, ne sert vraiment que sur une page qui aligne plusieurs tableaux ou plusieurs listes : c'est lui qui désigne lequel importer. Notre page d'exemple reste volontairement simple, un seul tableau et une seule liste, mais autant comprendre comment on compte avant de tomber sur une page plus chargée où le bon numéro n'a rien d'évident.

Les étapes
  1. 1
    Dans une cellule, écris =IMPORTHTML(.
  2. 2
    En 1er argument : clique sur la cellule qui contient l'adresse de la page, A1. Elle affiche https://data.excellersacademy.com/media/videos/fixtures/classement.html. C'est la seule page où la fonction ira lire.
  3. 3
    En 2ᵉ argument : clique sur la cellule qui fixe le type d'élément, B1. Elle contient table, donc la fonction s'en tient aux balises <table> et compte les tableaux sans mêler les listes.
  4. 4
    En 3ᵉ argument : clique sur la cellule qui donne le numéro de l'élément, C1. Elle contient 1 parce que le classement est le premier tableau de la page. Tu comptes les tableaux de haut en bas en partant de 1, et un tableau et une liste peuvent porter chacun le numéro 1 sans se gêner, car les deux types se comptent séparément.
  5. 5
    Ferme la parenthèse et appuie sur Entrée. Avec 1 en C1, la fonction rapatrie l'unique tableau de la page ; réclamer un 2 reviendrait à pointer un deuxième tableau que cette page ne contient pas.
Une fois les morceaux assemblés, ta formule donne ça :=IMPORTHTML(A1;B1;C1)
Explication
Sur cette page, l'index 1 suffit dans les deux cas : il n'y a qu'un tableau et qu'une liste. L'index ne prend tout son sens que sur une page qui en aligne plusieurs, où il sert à désigner lequel importer. Tu comptes les éléments d'un même type de haut en bas en partant de 1, et tu retiens qu'un index qui n'existe pas ne renvoie pas un tableau vide mais une vraie erreur : en réclamant un 2 ici, la fonction ne trouve aucun deuxième tableau et refuse.
Exemple 4

Comment corriger l'erreur #REF! d'autorisation avec la fonction IMPORTHTML

Tu as tout écrit correctement et pourtant la cellule affiche #REF!. Pas de panique : ce n'est pas ta formule qui cloche. Au premier import d'une feuille, Google réclame un feu vert avant d'aller lire une source extérieure, et tant que tu ne l'as pas donné, l'erreur reste à l'écran. C'est une autorisation à accorder une fois, pas un bug à déboguer.

Les étapes
  1. 1
    Dans une cellule, écris =IMPORTHTML(.
  2. 2
    En 1er argument : clique sur la cellule qui contient l'adresse de la page, A1. Rien ne change côté formule par rapport aux exemples précédents. L'adresse https://data.excellersacademy.com/media/videos/fixtures/classement.html y est déjà rangée.
  3. 3
    En 2ᵉ argument : clique sur la cellule qui fixe le type d'élément, B1. Elle contient table, car tu veux de nouveau récupérer le classement.
  4. 4
    En 3ᵉ argument : clique sur la cellule qui donne le numéro de l'élément, C1. Elle contient 1 pour viser le premier tableau de la page.
  5. 5
    Ferme la parenthèse et appuie sur Entrée. Si c'est ton tout premier import dans cette feuille, la cellule affiche #REF! au lieu du tableau. Clique alors sur la cellule, valide « Autoriser l'accès », et le classement se déverse aussitôt.
En mettant tout bout à bout, tu écris :=IMPORTHTML(A1;B1;C1)
Explication
Ce #REF! n'accuse ni ta formule ni la page : il attend seulement que tu cliques sur « Autoriser l'accès », l'étape que Google impose au premier import d'une feuille. Une fois l'accès donné, la même formule affiche le tableau Equipe / Points sans que tu changes une virgule. Pense aussi au cache : IMPORTHTML ne relit pas la page en continu mais environ une fois par heure, donc une modification récente côté site peut mettre ce délai à apparaître.
Le conseil du pro
Pour repérer le bon index, ouvre la page, fais clic droit puis « Inspecter » et compte les balises table dans le code en partant du haut. L'ordre du HTML ne colle pas toujours à ce que tu vois : un tableau caché dans l'en-tête peut décaler toute la numérotation.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

Les erreurs fréquentes avec la fonction IMPORTHTML

Avec IMPORTHTML, les soucis viennent rarement de ta formule et presque toujours de la page source. Soit elle se défend contre les robots, soit elle construit ses tableaux en JavaScript après le chargement (et IMPORTHTML ne lit que le HTML brut, avant les scripts).

Le troisième cas ne vient pas de la page mais de Google Sheets : au premier import d'une feuille, il faut cliquer sur « Autoriser l'accès », et trop de formules IMPORTHTML dans le même fichier finissent par déclencher des erreurs de quota. Dans les deux cas, la cellule affiche #REF!.

Erreur lors de l'extraction des données

Le site bloque les requêtes automatiques (anti-scraping), ou il n'y a pas de tableau ou de liste à l'index spécifié. Certains sites génèrent leur contenu dynamiquement avec JavaScript, ce que IMPORTHTML ne peut pas lire.

Solution : Vérifie que l'URL est correcte et accessible depuis un navigateur standard. Essaie différentes valeurs d'index. Si le tableau apparaît visuellement mais pas dans Google Sheets, le contenu est probablement chargé dynamiquement par JavaScript : cherche une source alternative avec du HTML statique.

Le tableau est vide ou incomplet

Certains sites chargent leurs données dynamiquement avec JavaScript après le rendu initial de la page. IMPORTHTML ne lit que le HTML initial, avant l'exécution des scripts.

Solution : Cherche une source alternative dont le HTML est statique, par exemple la version mobile ou l'API publique du site. Wikipedia est une source fiable car ses tableaux sont en HTML pur.

Erreur #REF! : autorisation en attente ou quota d'imports dépassé

Deux situations donnent ce #REF!. Au tout premier import d'une feuille, Google attend que tu cliques sur « Autoriser l'accès » : tant que ce n'est pas fait, la cellule reste bloquée sur #REF!. Ensuite, si tu empiles trop de formules d'import dans le même fichier, tu peux dépasser le quota d'appels externes autorisés par feuille.

Solution : Commence par cliquer sur la cellule et valider « Autoriser l'accès » : c'est une autorisation à donner une seule fois par feuille, pas une faute de formule. Si l'erreur persiste une fois l'accès accordé, allège le fichier : regroupe tes imports sur une feuille dédiée et renvoie leurs résultats ailleurs avec de simples formules de renvoi. Évite de dépasser 10 à 15 formules IMPORTHTML par fichier.

Lucas, la mascotte du Dojo, compare deux fonctions Excel

IMPORTHTML vs IMPORTDATA vs IMPORTXML vs IMPORTFEED

Choisis IMPORTHTML quand ta donnée est déjà rangée dans un vrai <table> ou une liste à puces sur une page web : un classement, des stats publiées. Si tu veux juste un élément précis (un prix, un titre) au milieu de la page, IMPORTXML et son ciblage XPath est plus chirurgical.

IMPORTDATA s'adresse à une URL qui pointe directement vers un fichier CSV ou TSV, et IMPORTFEED se réserve aux flux RSS ou Atom pour la veille d'actualités.

FonctionCe qu'elle importeFormat sourceCas d'usage typique
IMPORTHTMLTableaux et listes HTMLPages web publiquesClassements, stats publiées sur le web
IMPORTDATAFichiers CSV ou TSVDonnées brutes (URL directe)Données opendata, exports publics
IMPORTXMLÉléments HTML ciblés via XPathXML ou HTMLExtraction chirurgicale (un prix, un titre)
IMPORTFEEDArticles et titresFlux RSS ou AtomVeille actualités et blogs
FAQ

Questions fréquentes

Non, IMPORTHTML est exclusive à Google Sheets. Dans Excel, tu peux utiliser Power Query (Données > Obtenir des données > À partir du web) pour importer des tableaux depuis internet. L'ergonomie est différente mais le résultat est similaire.

Ressources

Pour aller plus loin

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

Tout voir