Accéder au contenu principalAccéder à la navigationAccéder au pied de page
Page d'accueil IncluddyPage d'accueil Includdy
  • FAQ
  • Blog
  • Glossaire
  • Contact
Includdy

Rendons le web accessible à tous

Produit

  • Scan automatique
  • Correction guidée
  • Collaboration

Ressources

  • FAQ
  • Blog
  • Glossaire
  • Plan du site

Légal

  • CGU
  • CGV
  • Mentions légales
  • Politique de confidentialité

© 2026 Includdy. Tous droits réservés.

  1. Accueil
  2. Glossaire
  3. Tableau de données

Tableau de données


Un tableau de données est un élément HTML qui organise des informations en lignes et en colonnes, où chaque cellule entretient une relation logique avec ses en-têtes. Contrairement à un tableau de mise en forme (utilisé pour disposer des éléments visuellement), un tableau de données exige un balisage sémantique (balises <th>, attribut scope, élément <caption>) pour que les lecteurs d'écran restituent le contexte de chaque valeur.


Un lecteur d'écran parcourt un tableau cellule par cellule, ligne par ligne. Quand il tombe sur « 120 € », il ne peut pas regarder en haut de la colonne pour comprendre ce que ce montant représente. Il a besoin que le code HTML lui dise : « cette cellule appartient à la colonne T1 et à la ligne Nord ». C'est toute la différence entre un tableau de données et une grille de cellules muettes.

#Données ou mise en forme : la distinction qui change tout

Le RGAA consacre sa thématique 5 aux tableaux et distingue deux catégories.

Un tableau de données contient des informations structurées en deux dimensions (colonnes et lignes) où les relations entre les cellules ont un sens. Un tableau de tarifs, un emploi du temps : ce sont des tableaux de données.

Un tableau de mise en forme utilise <table> uniquement pour disposer des éléments sur la page. Aucune relation logique entre lignes et colonnes. Le W3C/WAI recommande de lui attribuer role="presentation" pour que les technologies d'assistance l'ignorent.

Confondre les deux est l'erreur la plus répandue. Un tableau de mise en forme avec des <th> force le lecteur d'écran à annoncer des en-têtes fictifs. Un tableau de données sans <th> prive l'utilisateur de tout contexte.

#Le balisage minimum

Un tableau de données accessible repose sur trois éléments :

<table>
  <caption>Ventes trimestrielles par région</caption>
  <thead>
    <tr>
      <th scope="col">Région</th>
      <th scope="col">T1</th>
      <th scope="col">T2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Nord</th>
      <td>120 €</td>
      <td>145 €</td>
    </tr>
  </tbody>
</table>

<caption> identifie le tableau. <th> déclare les en-têtes. scope précise la direction (colonne ou ligne). Sans ces trois éléments, le lecteur d'écran restitue des valeurs orphelines.

#Le piège du tableau « visuellement correct »

Beaucoup de développeurs mettent leurs en-têtes dans des <td> stylés en gras. Le rendu visuel est identique. Pour un lecteur d'écran, ces cellules restent des cellules de données ordinaires. Aucune association n'est créée avec les valeurs en dessous. Ce que MDN documente clairement : c'est la sémantique HTML, pas le style CSS, qui détermine le comportement des technologies d'assistance.

#En résumé

Un tableau de données a des en-têtes (<th> avec scope), un titre (<caption>) et aucun role="presentation". Si votre tableau n'a pas besoin d'en-têtes pour être compris, c'est probablement un tableau de mise en forme, et il n'a pas besoin d'être un <table>.

Retour au glossaire

Partagez cet article

Partagez cet article

Pour aller plus loin

Tableau de données complexe

Un tableau de données complexe est un tableau HTML dont certains en-têtes ne couvrent pas toute leur ligne ou colonne, typiquement à cause de cellules fusionnées ou de sous-groupes d'en-têtes. L'attribut scope ne suffit plus : il faut associer chaque cellule à ses en-têtes via les attributs id et headers. Quand c'est possible, scinder le tableau en plusieurs tableaux simples reste la meilleure solution.

En-tête de colonne ou de ligne

Dans un tableau de données, un en-tête de colonne ou de ligne est la cellule qui sert d'intitulé aux autres cellules de cette colonne ou de cette ligne. En HTML, c'est la balise <th> qui remplit ce rôle. Sans elle, un lecteur d'écran restitue les cellules sans contexte : l'utilisateur entend des valeurs sans savoir à quoi elles correspondent.

Tableau de mise en forme

Un tableau de mise en forme est un élément HTML <table> détourné de sa fonction d'origine pour disposer visuellement des éléments sur la page. Il ne contient aucune relation logique entre lignes et colonnes. Pour éviter que les lecteurs d'écran ne l'annoncent comme un vrai tableau, il doit porter l'attribut role="presentation" ou role="none" et ne contenir aucune balise sémantique de tableau de données (<th>, <caption>, scope).