IMPORTHTML récupère un tableau ou une liste d'une page web dans votre feuille et le rafraîchit automatiquement. C'est le moyen le plus simple d'amener des données publiques, comme des classements, des tableaux de prix, des résultats sportifs ou des tableaux Wikipédia, dans un tableur sans écrire de code.
Syntaxe
=IMPORTHTML(url, query, index)
url: L'adresse de la page web, entre guillemets (ou dans une cellule), avechttps://.query: Soit"table", soit"list": le type d'élément à importer.index: Quel tableau ou quelle liste de la page, à partir de 1, dans l'ordre d'apparition dans le HTML de la page.
Exemples de base
=IMPORTHTML("https://example.com/classement", "table", 1)
Importe le premier tableau de la page. Remplacez 1 par 2 pour le deuxième tableau, et ainsi de suite.
=IMPORTHTML("https://example.com/page", "list", 1)
Importe la première liste à puces ou numérotée.
Trouver le bon index
L'index compte chaque <table> (ou liste) de la page, y compris ceux qui sont masqués ou servent à la mise en page. Il n'existe pas de moyen visuel de voir le numéro : l'approche pratique consiste donc à essayer des valeurs jusqu'à ce que le bon tableau apparaisse :
- Commencez par
1. - Augmentez le nombre jusqu'à trouver le tableau voulu.
- Si vous obtenez une erreur pour un nombre élevé, c'est que la page a moins de tableaux que cela.
À quoi ressemble le résultat
Le tableau se déverse dans les cellules en dessous et à droite, ligne d'en-tête comprise. Les nombres sont convertis en nombres quand c'est possible, mais les valeurs accompagnées de symboles monétaires, de notes de bas de page ou d'unités restent du texte. Le résultat a besoin d'espace libre ; si quelque chose bloque la zone de déversement, vous obtenez #REF!.
Formules pratiques
Choisir quelques colonnes
Utilisez QUERY sur le tableau importé, en désignant les colonnes par Col1, Col2, etc. :
=QUERY(IMPORTHTML("https://example.com/stats", "table", 1), "select Col1, Col3 where Col3 > 100", 1)
Nettoyer les nombres
Les nombres importés contiennent souvent des symboles, des marques de notes ou des séparateurs de milliers. Nettoyez-les avec REGEXREPLACE et VALUE :
=ARRAYFORMULA(IFERROR(VALUE(REGEXREPLACE(B2:B, "[^0-9.]", ""))))
Obtenir une seule cellule d'un tableau
=INDEX(IMPORTHTML("https://example.com/stats", "table", 1), 3, 2)
Renvoie la cellule de la 3e ligne et de la 2e colonne, pratique pour intégrer un seul nombre, comme un taux actuel, dans un modèle.
Construire l'URL à partir d'une cellule
=IMPORTHTML("https://example.com/equipe/" & A2, "table", 1)
Modifiez A2 et le tableau se met à jour.
Inverser l'orientation
=TRANSPOSE(IMPORTHTML("https://example.com/stats", "table", 1))
Conserver un instantané
Les données importées se rafraîchissent et la page peut changer ou disparaître. Pour conserver une copie figée, copiez les cellules et collez-les en valeurs uniquement.
Limites et rafraîchissement
- Pages publiques uniquement. La page doit être accessible sans connexion. Les pages protégées par une connexion ou un accès payant ne renvoient rien.
- HTML statique uniquement.
IMPORTHTMLlit le HTML envoyé par le serveur. Les tableaux construits ensuite par JavaScript (de nombreux tableaux de bord modernes) ne lui sont pas visibles. Si vous voyez le tableau dans votre navigateur mais queIMPORTHTMLne le trouve pas, c'est la raison probable. Cherchez une page qui sert le tableau en HTML simple, ou un lien d'API ou de CSV, et utilisezIMPORTDATAouIMPORTXML. - Fréquence de rafraîchissement. Les données importées se rafraîchissent périodiquement (environ toutes les heures), pas instantanément. Modifier la formule force une nouvelle récupération.
- Limites de requêtes. De nombreux appels à
IMPORTHTMLdans un même classeur peuvent provoquer des « Chargement... » ou des erreurs. Importez une fois dans une feuille de données et faites-y référence. - Blocage. Certains sites bloquent les requêtes automatisées, et
IMPORTHTMLrenvoie alors une erreur. - Conditions d'utilisation. Vérifiez que le site autorise cet usage de ses données.
Erreurs courantes
#N/A: « Le contenu importé est vide ». L'index du tableau n'existe pas, la page est construite avec JavaScript, ou le site a bloqué la requête.#N/Aou erreur : « Impossible de récupérer l'URL ». L'URL est erronée, le site est en panne ou bloque, ou la page demande une connexion.#VALUE!: « Le contenu de la ressource dépasse la taille maximale ». La page est trop volumineuse. Essayez une page plus légère, ou une autre source.- Une erreur sur l'argument de requête.
querydoit être exactement"table"ou"list", entre guillemets. #REF!: « Le résultat de la matrice n'a pas été développé ». Des cellules de la zone de déversement ne sont pas vides.- Mauvais tableau. L'index pointe vers un autre tableau que prévu. Essayez les numéros voisins.
- La mise en page a changé. Le site a modifié sa page, ce qui décale l'index du tableau. Revérifiez l'index quand les résultats deviennent faux.
IMPORTHTML, IMPORTXML, IMPORTDATA ou IMPORTRANGE ?
IMPORTHTML: tableaux et listes d'une page web.IMPORTXML: n'importe quel élément d'une page web ou d'un fichier XML, sélectionné avec XPath. Plus flexible, et plus technique.IMPORTDATA: un fichier CSV ou TSV depuis une URL.IMPORTRANGE: une plage d'une autre feuille Google Sheets.IMPORTFEED: flux RSS et Atom.
Questions fréquentes
Comment savoir quel numéro de tableau utiliser ? Essayez 1, 2, 3 jusqu'à ce que le bon apparaisse.
Peut-on importer plusieurs tableaux à la fois ? Un appel importe un tableau. Utilisez plusieurs formules.
Peut-on importer des pages qui demandent une connexion ? Non.
Pourquoi le tableau est-il absent alors que je le vois dans mon navigateur ? Il est probablement généré par JavaScript.
Fonctions associées
IMPORTXML: Importe des données de pages web avec XPath.IMPORTDATA: Importe un fichier CSV depuis une URL.IMPORTRANGE: Importe une plage d'un autre classeur.QUERY: Filtre et agrège les données importées.INDEX: Choisit une valeur dans le tableau importé.