Accessibilité : rendre un site utilisable par tous

Se connecter pour s'inscrire

WCAG 2.2, RGAA, navigation clavier, audit et déclaration

Concevoir et corriger des interfaces accessibles selon la WCAG 2.2 et le RGAA : textes alternatifs, structure et sémantique, contraste, navigation clavier, focus, ARIA, formulaires, audit reproductible et déclaration d'accessibilité. L'objectif n'est pas de rendre le site « pour les handicapés » mais de corriger les défauts de conception qui pénalisent tout le monde.

  1. Public cible

    Débutants, étudiants et professionnels qui souhaitent acquérir une pratique structurée dans ce domaine.

  2. Objectifs

    Comprendre les notions essentielles et les appliquer dans un projet vérifiable.

  3. Prérequis

    Aucune connaissance préalable n’est strictement obligatoire ; les prérequis détaillés sont précisés dans les ateliers.

  4. Niveau

    Tous niveaux

  5. Ressources

    • Documentation officielle et références citées dans les ateliers.
    • Exercices, examens et projet de synthèse du catalogue.
  6. Validation des compétences

    La validation repose sur les évaluations actives et les livrables pratiques du cours.

  7. Besoins techniques

    Un ordinateur, un navigateur et les outils indiqués dans le premier atelier sont suffisants pour commencer.

Exercices, examens et projets

Accessibilité : cadre, POUR et obligations légales

Exercice

Atelier audit d'accessibilité

Auditer une page réelle, corriger les écarts bloquants et rédiger la déclaration.

Obligatoire Consulter
Projet

Mise en conformité RGAA

Traiter les écarts de niveau A et B d'un parcours complet, avec rapport de conformité et déclaration.

Livrables :

  • Rapport d'audit avec la répartition des écarts par critère
  • Corrections des écarts de niveau A et B
  • Déclaration d'accessibilité datée
Obligatoire Consulter

Percevoir : alternatives, structure, contraste

Exercice

Atelier audit d'accessibilité

Auditer une page réelle, corriger les écarts bloquants et rédiger la déclaration.

Obligatoire Consulter
Projet

Mise en conformité RGAA

Traiter les écarts de niveau A et B d'un parcours complet, avec rapport de conformité et déclaration.

Livrables :

  • Rapport d'audit avec la répartition des écarts par critère
  • Corrections des écarts de niveau A et B
  • Déclaration d'accessibilité datée
Obligatoire Consulter

Opérer : clavier, focus, ARIA, formulaires

Exercice

Atelier audit d'accessibilité

Auditer une page réelle, corriger les écarts bloquants et rédiger la déclaration.

Obligatoire Consulter
Projet

Mise en conformité RGAA

Traiter les écarts de niveau A et B d'un parcours complet, avec rapport de conformité et déclaration.

Livrables :

  • Rapport d'audit avec la répartition des écarts par critère
  • Corrections des écarts de niveau A et B
  • Déclaration d'accessibilité datée
Obligatoire Consulter

Mesurer : audit RGAA, déclaration, maintien

Exercice

Atelier audit d'accessibilité

Auditer une page réelle, corriger les écarts bloquants et rédiger la déclaration.

Obligatoire Consulter
Projet

Mise en conformité RGAA

Traiter les écarts de niveau A et B d'un parcours complet, avec rapport de conformité et déclaration.

Livrables :

  • Rapport d'audit avec la répartition des écarts par critère
  • Corrections des écarts de niveau A et B
  • Déclaration d'accessibilité datée
Obligatoire Consulter
  1. Accessibilité : de quoi parle-t-on exactement

    1. La définition qui produit du travail, et celle qui n'en produit pas

      On entend généralement par accessibilité « la possibilité pour les personnes en situation de handicap d'utiliser un service ». La définition est exacte et elle est boite, parce qu'elle présente l'accessibilité comme une concession : on rendrait service à une catégorie de personnes, et le produit resterait ce qu'il est.

      La conséquence de cette lecture

      On corrige ce qui gêne visiblement : on ajoute des textes alternatifs sur les images, on agrandit les zones de clic, on met une couleur plus contrastée sur les boutons. On laisse le reste, parce que le reste ne se voit pas quand on n'est pas concerné : les incohérences de navigation, les champs de formulaire sans étiquette, les messages d'erreur qui disparaissent avant d'avoir pu être lus.

      L'autre définition

      L'accessibilité est une qualité du produit, au même titre que la vitesse ou la sécurité. Elle ne s'adresse pas « aux handicapés » mais à qui que ce soit, dans une situation donnée : un écran de formulaire lu sous la pluie, dans un train, avec 2 % de batterie, par quelqu'un qui a mal au poignet, sur un téléphone qu'il n'a pas choisi, avec un lecteur d'écran activé par erreur et jamais éteint depuis.

      Le mobile corrige les deux tiers des problèmes d'accessibilité d'un site. Non pas parce qu'il est « pour les handicapés », mais parce qu'un écran tactile de 6 pouces et une connexion dégradée sont la condition normale de millions de personnes qui se disent perfectly capable de regarder une page web.

      Pourquoi cette différence change le résultat

      Un budget « conformité RGAA » produit une checklist cochée et un site médiocre. Un budget « qualité produit » produit des tests sur des tâches réelles, et découvre des bugs que personne n'avait vus : un label qui n'est pas relié à son champ, une modale qui piège le focus, un message d'erreur qui ne dit pas quoi corriger.

      La question à poser en début de projet

      Pas « la page est-elle accessible ? » mais : quelles tâches doit pouvoir accomplir un utilisateur dans cette situation, et qu'est-ce qui l'en empêche aujourd'hui ? La première question appelle un audit. La seconde appelle un travail, et elle trouve ce que l'audit ne voit pas.

    2. Les quatre principes POUR et les trois niveaux qui comptent

      La WCAG 2.2 organise ses exigences autour de quatre principes — Perceivable, Operable, Understandable, Robust — déclinés en principes-directeurs, puis en critères de succès, puis en techniques qui ne sont que des exemples de mise en œuvre.

      Perceivable — l'information doit être-IT disponible

      • Ce qui est uniquement visuel a besoin d'un équivalent.
      • Ce qui est uniquement sonore a besoin d'un équivalent.
      • L'interface s'adapte au contraste et au zoom, sans perte de contenu.
      • Les relations entre les éléments (un label, un titre) sont exposed, pas seulement dessinées.

      Operable — l'interface se manipule

      • Tout est faisable au clavier, sans piège ni délai.
      • Aucun geste exige un seul point de contact : le balayage n'est pas la seule voie.
      • Le contenu ne clignote pas plus de trois fois par seconde.
      • Les titles donnent le contexte : une page qui s'ouvre dans un nouvel onglet l'annonce.

      Understandable — c'est compréhensible

      • La langue de la page est déclarée, y compris les passages dans une autre langue.
      • Chaque page a un titre qui la décrit dans le contexte du site.
      • Les erreurs sont identifiées en texte et décrites, pas signalées par une couleur seule.
      • L'aide contextuelle est disponible quand c'est nécessaire.

      Robust — ça résiste à l'interprétation

      • Le code est valide et les rôles sont exposés : les technologies d'assistance savent ce qu'est un bouton, un champ, un titre.
      • Le nom, le rôle et la valeur de chaque composant sont programmatiquement déterminables.

      Les trois niveaux de conformité, et pourquoi le second compte

      Les critères sont classés de A à AAA par niveau d'exigence. La quasi-totalité des obligations légales et des cahiers des charges demande le niveau AA.

      Deux réflexes à éviter : viser AAA pour se distinguer, et descendre à A pour livrer plus vite. AAA contient des critères très exigeants (durée de vie des messages d'erreur, pas de texte clignotant, niveau de contraste renforcé) qui ne rapportent presque rien au produit. À l'inverse, ignorer les critères A d'Operable — le clavier, la navigation — revient à livrer un site inutilisable pour une partie consistente des utilisateurs, et c'est bien plus grave qu'un manque de contraste sur un lien secondaire.

    3. Ce que la loi impose, et à qui

      L'accessibilité n'est pas une bonne pratique volunteer en France : pour un certain nombre d'acteurs, c'est une obligation légale assortie de sanctions.

      Le cas général

      La loi n° 2005-102 du 11 février 2005 pour l'égalité des droits et des chances de participation à la vie sociale impose aux services publics, aux établissements publics et aux entreprises privées obéissant à des obligations de service public une obligation d'accessibilité de leurs services de communication au public en ligne. Le principe retenu est celui de la conformité progressive : un schéma d'amélioration est attendu, avec un calendrier.

      La déclaration d'accessibilité

      Point le plus souvent manqué : ce n'est pas seulement rendre le site accessible, c'est publier une déclaration d'accessibilité. Elle doit indiquer l'état de conformité constaté, le contenu et les méthodes de l'évaluation, les écarts identifiés et leur justification, et la voie de recours en cas de difficulté. Elle doit être révisée périodiquement et à chaque évolution majeure du site.

      Le RGAA n'est pas la WCAG

      Le RGAA (Référentiel général d'amélioration de l'accessibilité, Dinum) est la déclinaison française du WCAG : il en reprend les principes en 106 critères, chacun accompagné des tests correspondants. Il permet une évaluation reproductible là où la WCAG laisse le choix des techniques.

      À la date de ce cours, la version en vigueur est le RGAA 4.1.2. La version 5 est en cours de rédaction pour une publication attendue fin 2026. Travailler avec le 4.1.2 n'est donc pas un travail provisoire : le RGAA 5 précisera ou complétera les critères du 4.1.2 sans les infirmer, et les audits réalisés avant cette publication resteront valables dix-huit mois.

      La conséquence pratique pour un projet

      Si l'acteur est concerné par l'obligation légale, il n'y a pas d'arbitrage possible entre conformité et calendrier : il y a un risque contentieux. Si le projet est un produit commercial qui vise la France, largument « accessibilité = coût » ne tient pas, parce que la sanction existe et que les grands donneurs d'ordre l'exigent dans leurs propres cahiers des charges.

    4. Ce qu'un outil automatique voit, et ce qu'il ne voit pas

      Les outils d'audit automatique ont une place, et il faut savoir précisément laquelle : ils détectent environ un quart des problèmes environ. Les trois quarts restants relèvent du jugement humain.

      Ils sont fiables sur ce qui est calculable

      • Images sans alternative ou avec une alternative vide ou inutile : fiable.
      • Contraste insuffisant calculé sur les couleurs déclarées : fiable.
      • Champs de formulaire sans étiquette reliée : très fiable.
      • Attributs ARIA invalides ou contradictoires : fiable.
      • Rôles sans nom accessible (bouton icône sans texte) : fiable.

      Ils sont aveugles sur ce qui est intentionnel

      • Un texte alternatif présent mais mauvais — il passe le contrôle automatique et décrit l'image d'une façon fausse ou inutile.
      • Un parcours cohérent ou non : l'outil vérifie des éléments isolés, jamais l'enchaînement des tâches.
      • Un message d'erreur utile ou non : il vérifie que le texte existe, pas qu'il indique quoi corriger.
      • Un ordre de tabulation qui correspond à l'ordre visuel : c'est une erreur fréquente et invisible pour l'outil.
      • Le langage : un texte écrit dans une langue approximative passe.

      Ce que « absence de rapport » ne prouve pas

      Un audit automatique qui renvoie zéro erreur ne prouve pas que la page est conforme : il prouve qu'aucun des défauts qu'il sait détecter n'a été trouvé. Entre les deux, il y a la majorité des problèmes qui font mal à un vrai utilisateur. Un audit automatique sans vérification manuelle n'est pas un audit, c'est un filtre.

      La place qui revient au test manuel

      Elle n'est pas dans « corriger les avertissements », qu'un outil fait déjà. Elle est dans deux gestes uniquement humains : naviguer au clavier, ce qui révèle les pièges de focus et les désordres de tabulation, et tester des tâches réelles sur un écran de téléphone vrai en 3G, ce qui révèle les problèmes de contraste, de taille de cible et de temps de réponse que le zoom desktop masque.

  2. Percevoir : l'information doit exister en dehors de l'image

    1. Texte alternatif : écrire ce que l'image apporte, pas ce qu'elle montre

      Le critère 1.1.1 (niveau A) exige que chaque image porteuse d'information ait une alternative textuelle. La difficulté n'est pas l'attribut : c'est de décider quoi écrire.

      Les trois questions qui décident de tout

      1. L'image est-elle décorative ? Si elle ne porte aucune information, elle prend un attribut alt="" et rien d'autre. Une bordure, une flèche décorative, un fond de section : c'est décoratif.
      2. Que apporte-t-elle que le texte voisin ne dit pas déjà ? Si le texte à côté décrit déjà l'information, l'alternative doit être brève ou vide.
      3. Que se passe-t-il si l'image ne se charge pas ? C'est le meilleur test : l'alternative doit alors rester compréhensible.

      Les trois erreurs qui reviennent

      • Le préfixe automatique — « image de », « photo de », « Capture d'écran de ». Un lecteur d'écran lit « image de » avant chaque illustration, cent fois par page, et l'information utile arrive après ce bruit.
      • La description du fichier — « DSC_4821.png ». Elle n'a aucun sens hors du poste de travail.
      • La phrase vide de contenu — « un graphique ». Un graphique de quoi ? Si l'alternative ne permet pas de comprendre la donnée, elle doit être remplacée par une description du contenu, ou par une table de données accessible.

      Les images porteuses d'information sont plus fréquentes qu'on ne croit

      Au-delà des photographies, il y a : les graphiques (le cas le plus coûteux, et le plus souvent absent), les diagrammes, les schémas d'interface dans une procédure, les logos porteurs de sens quand ils lorsqu'ils portent un lien, les formules en image, les captures d'écran de code. Une capture de code sans alternative est un contenu inaccessible : le texte qu'elle porte n'existe que comme image.

      Le cas des images purement décoratives qui sont quand même annoncées

      Une icône décorative répétée devant chaque titre de menu produit un menu lu comme « icône image Accueil, icône image Formations ». Le alt="" n'est pas un oubli : c'est ce qui rend le menu lisible. Et l'icône ne doit pas être retirée du HTML, seulement de l'annonce vocale.

      Pour les graphiques : trois niveaux de réponse

      1. Alternative courte : la conclusion en une phrase — « les ventes baissent de 40 % entre mars et juin ».
      2. Description longue : la structure de la donnée, si elle est simple.
      3. Table de données accessible en complément ou à la place du graphique, quand la donnée est chiffrée et que le lecteur doit pouvoir la parcourir.

      Le piège classique : un graphique sans alternative textuelle est un critère 1.1.1 non respecté et une perte d'information pour tout le monde, y compris les personnes voyantes qui utilisent un agrandissement. Ce n'est pas un problème d'accessibilité, c'est un problème de conception.

    2. Structure : nommer les niveaux et exposer les relations

      Le critère 1.3.1 (niveau A) — « information et relations » — est celui qui catches plus de sites que tous les autres réunis. Il demande que les relations visuelles entre contenu soient présentes dans le code.

      La hiérarchie de titres est un contracts, pas un style

      Un titre de niveau h3 sans h2 au-dessus n'est pas un détail aesthetic : il casse la navigation par titres, qui est la fonction d'assistance la plus utilisée sur un document long. Les lecteurs d'écran permettent de sauter d'un titre à l'autre, de remodeler la page en liste de titres, et de revenir à sa position après une recherche. Tout cela repose sur la hiérarchie des niveaux.

      La règle : un seul h1 par page, qui nomme le sujet, puis h2 pour les sections, h3 pour les sous-sections. Un saut de niveau est presque toujours un oubli de structure, et il se voit immédiatement.

      Les listes qui ne sont pas des listes

      Une suite de paragraphes séparés par des puces dessinées en CSS est annoncée comme une suite de paragraphes. Le lecteur d'écran ne dit pas « liste de 5 éléments », il lit cinq blocs sans signal. Pour un utilisateur qui navigue de titre en titre ou qui écoute en diagonale, la liste disparaît.

      Le cas spécifique des tableaux

      Un tableau de données est un tableau sémantique, avec caption, en-têtes de colonnes déclarés, et la relation entre les cellules. Un tableau dessiné pour la mise en page — le fameux « tableau pour diviser en deux colonnes » — est une catastrophe pour la lecture linéaire : l'ordre de lecture suit l'ordre du code, pas l'ordre visuel.

      Et il faut savoir qu'une mise en page réactive (mobile) qui transforme un tableau en cartes empilées destroys la relation entre les cellules si le balisage n'a pas été conçu pour. Les options sont connues : garder la structure de tableau et faire défiler horizontalement, ou associer explicitement chaque cellule à son en-tête.

      Lier les champs à leurs étiquettes

      Un champ de formulaire doit avoir une étiquette programmatiquement liée, par for / id. Un texte posé visuellement au-dessus du champ, sans lien dans le code, est invisible pour la technologie d'assistance : elle annonce « champ de saisie », sans dire lequel. Sur un formulaire de six champs, le résultat est un formulaire inutilisable.

      Les repères et les points de repère

      Navigation principale, contenu principal, pied de page : ce sont des repères, et les déclarer (header, nav, main, footer) permet à l'utilisateur de sauter directement à ce qui l'intéresse. C'est le critère 1.3.1 appliqué à la structure de page, et c'est ce qui fait la différence sur un site de commerce avec vingt liens de navigation avant le contenu.

    3. Contraste, couleur et zoom : la lisibilité qui se mesure

      Le contraste du texte (critère 1.4.3, niveau AA)

      Les seuils sont vérifiés avec les WCAG 2.x :

      • Texte de taille normale (moins de 18 pt, ou 14 pt en gras) : ratio d'au moins 4,5:1.
      • Texte de grande taille (18 pt et plus, ou 14 pt en gras et plus) : ratio d'au moins 3:1.

      Un point de méthode qui évite des heures perdues : un texte placé sur une image ou un dégradé n'a pas de ratio calculable, seulement un contraste local. Il faut alors contrôler la zone réellement occupée par le texte, ou ajouter un fond, ou — plus simplement — ne pas poser de texte sur une image.

      Le contraste des éléments non textuels (1.4.11, niveau AA)

      Introduit par la WCAG 2.1 : les bords de champs de formulaire, les indicateurs de focus, les icônes porteuses de sens, les graphiques doivent avoir un ratio d'au moins 3:1 avec ce qui les entoure. Cette règle attrape beaucoup de champs de formulaire, dont la bordure est souvent #ddd sur fond blanc : presque aucun ne passe.

      La couleur ne doit pas être seule porteuse de sens

      Un champ d'erreur encirclé en rouge, un texte en rouge, une icône rouge : si le signal est uniquement la couleur, il disparaît pour une personne daltonienne. Le signal doit être doublé par un texte (« Erreur : ce champ est obligatoire »), une icône identifiable, ou un motif.

      Le zoom et l'espacement (1.4.10 et 1.4.12, niveau AA)

      À 400 % de zoom — l'équivalent d'un écran de téléphone en paysage — le contenu doit rester lisible sans défilement horizontal en deux dimensions. Concrètement : pas de largeur fixe en pixels, pas de texte en taille absolue dans une zone trop petite, et des tableaux qui laissent la place au défilement plutôt que de comprimer les colonnes.

      Le critère 1.4.12 va plus loin et impose que l'espacement du texte puisse être augmenté — hauteur de ligne, espacement entre lettres et entre mots, espacement des paragraphes — sans perte de contenu ni de fonctionnalité. Les unités relatives pour les tailles de police suffisent généralement à le satisfaire.

      Le texte justifié et les listes de liens

      Le texte justifié à la ligne force des espaces irréguliers qui rendent la lecture difficile pour certaines personnes dyslexiques ou en cas de strabisme. Ce n'est pas un critère WCAG, c'est une bonne pratique de lisibilité. De même, une liste de liens — un bloc de liens dont aucun n'a de sens hors contexte — est un critère échoué en Understandable (2.4.4) : le lien doit dire où il mène.

    4. Ce qui se joue en double sensory

      Les informations purement sonores et purement visuelles demandent un équivalent (1.2.x). Trois cas à traiter systématiquement.

      Les images animées et les contenus en mouvement

      Une animation clignotante ou un défilement automatique peut provoquer une crise pour certaines personnes (critère 2.3.1, niveau A, sur trois clignotements par seconde). Le correctif est la possibilité de suspendre tout mouvement automatique de plus de cinq secondes — carrousels, défilement de texte, lecture vidéo en arrière-plan.

      La vidéo est un cas particulier : elle doit avoir une transcription ou une piste de sous-titres. Le sous-titrage des dialogues ne suffit pas — les informations purement sonores (le ton d'une alarme, un bruit qui signale un danger) doivent aussi être décrites.

      Les contenus audio et vidéo seuls

      Un contenu audio sans transcription exclut de fait les personnes sourdes et malentendantes, et pénalise durablement tout le monde dans un environnement bruyant — un train, une cuisine, un open space. La transcription n'est pas une mesure d'accessibilité, c'est une mise à disposition de contenu. Sur un site de formation, elle a une valeur pédagogique immédiate.

      Le mouvement : ce qui est en jeu

      Les animations de défilement et les effets de parallaxe provoquent des sensations de nausée et de désorientation. La WCAG ne les interdit pas, mais exige un mécanisme pour les neutraliser. Le geste « réduire les animations » présent dans les réglages système — et la règle prefers-reduced-motion côté CSS — est la mise en œuvre directe de cette exigence.

  3. Opérer : tout doit être faisable au clavier

    1. Le clavier comme mode de contrôle complet

      Le critère 2.1.1 (niveau A) impose que toute fonctionnalité soit utilisable au clavier. C'est le critère le plus discriminant du web : il échoue là où les sites ont été construits avec de la souris.

      Ce qui n'est pas faisable au clavier sans travail

      • Un élément qui n'est focusable que parce qu'on lui a mis onclick sans tabindex, ni rôle, ni gestionnaire clavier.
      • Un menu déroulant implémenté uniquement en survol : sans focus, il ne s'ouvre pas au clavier.
      • Un lien dont le href est vide ou valant #, qui exécute l'action en JavaScript : parfois focusable, parfois pas, jamais fiable.
      • Un composant sur mesure — onglet, carrousel, sélecteur de date — sans gestion du clavier : le cas le plus fréquent.

      La ligne de démarcation : bouton ou pas bouton

      Ce n'est pas une question d'apparence. Un élément est un bouton s'il déclenche une action dans la page ; c'est un lien s'il va quelque part. Beaucoup d'interfaces confondent les deux, et la confusion coûte cher : un « bouton » qui est en réalité un lien styled ne déclenche pas l'action attendue avec la touche Entrée ou Espace, et ne fait rien de ce qu'on attend d'un bouton.

      Le bon réflexe : utiliser <button> pour une action et <a href> pour une navigation, sans homotrophie d'apparence. Les deux sont focusables, les deux sont focusables au clavier — mais chacun réagit à la bonne touche et est annoncé avec le bon rôle.

      Les pièges clavier (2.1.2, niveau A)

      Un piège clavier est un composant dont le focus ne peut pas quitté au clavier. Le cas le plus grave est la modale : si le focus ne revient pas sur le déclencheur à la fermeture, l'utilisateur perd le fil de la page. Les autres pièges sont moins spectaculaires et plus fréquents : un widget de carousel où les flèches font défiler sans permettre de sortir, un menu dont la fermeture au clavier est impossible.

      La règle : toute interaction doit pouvoir être annulée avec la touche Échap, et le focus doit être ramené explicitement. Sur une modale, la séquence attendue est Échap ferme, le focus revient sur ce qui a ouvert.

    2. Focus : visible, ordonné, jamais masqué

      Le focus doit être visible (2.4.7, niveau AA)

      Un focus invisible est un piège silencieux : l'utilisateur sait qu'il a(tabulé, il ne sait pas où il est. La cause la plus fréquente n'est pas l'absence de style, c'est le outline: none posé par défaut et jamais remplacé.

      Le correctif : soit conserver le contour par défaut du navigateur, soit le remplacer par quelque chose de visible et contraste suffisant — critère 1.4.11, ratio 3:1 sur les éléments non textuels. Un indicateur custom doit aussi signaler le focus focus-visible, sans supprimer l'indicateur au survol de la souris.

      L'ordre du focus doit suivre l'ordre visuel (2.4.3, niveau A)

      C'est le critère qui échoue le plus souvent, et il n'est visible que lorsqu'on tabule. Si le tabindex est à 0 ou absent, l'ordre suit le DOM. Il faut alors que le DOM suive l'ordre visuel — ce qui est vrai sauf quand la mise en page est en CSS Grid ou Flexbox avec réordonnation, ou quand une colonne latérale est placée avant le contenu dans le HTML pour des raisons de structure.

      Le test tient en une phrase : tabuler de haut en bas doit-il donner l'ordre de lecture naturel ? Si à un moment on passe du pied de page au menu, ou d'un bouton « Suivant » au bouton « Précédent », l'ordre est faux.

      Le lien d'évitement (2.4.1, niveau A)

      Critère sous-estimé : un lien « Aller au contenu principal », le premier élément focusable de la page, visible quand il reçoit le focus. Il paraît anecdotique, il est pourtant l'un des critères les plus utiles sur un site avec une navigation de vingt liens : il évite de tabuler trente fois à chaque changement de page.

      Le focus ne doit pas être masqué (2.4.11, niveau AA)

      Introduit par la WCAG 2.2 : l'indicateur de focus ne doit pas être entièrement masqué par du contenu à défilement ou par une barre d'outils fixe. Le cas typique est un bouton d'acceptation de cookies fixe en bas de page qui recouvre le focus d'un lien situé juste au-dessus. Le critère impose que l'élément masquant puisse être déplacé — par exemple un bandeau qui se replie sur un bouton.

      Les raccourcis clavier ne doivent rien piéger (2.1.4, niveau A)

      Si l'on ajoute des raccourcis — un Ctrl+S pour sauvegarder, un / pour chercher — ils doivent pouvoir être désactivés ou remappés, et ne pas entrer en conflit avec ceux du navigateur ou de la technologie d'assistance. Un raccourci qui survit au changement de contexte capture le clavier et devient un piège.

    3. ARIA : le nom, le rôle, la valeur

      Le critère 4.1.2 (niveau A) demande que le nom, le rôle et la valeur de chaque composant soient déterminables par le code. C'est la définition du mot « robuste ».

      La première règle d'ARIA : ne rien ajouter

      « La première règle de l'utilisation d'ARIA est de ne pas utiliser ARIA. » Un élément HTML natif porte déjà son rôle, son nom et son comportement au clavier : un <button> est un bouton pour tout le monde, sans une ligne de plus. ARIA sert à compléter le HTML là où il n'a pas d'équivalent, pas à le réécrire.

      Ce que l'on peut legitimately ajouter

      • aria-label ou aria-labelledby pour nommer un composant qui n'a pas de texte visible — un bouton icône, un champ de recherche.
      • aria-expanded sur un accordéon ou un menu, pour dire s'il est ouvert.
      • aria-current sur le lien de la page courante.
      • aria-describedby pour relier un champ à son aide et à son message d'erreur.
      • role="alert" pour qu'un message d'erreur inséré dynamiquement soit annoncé.

      Les erreurs qui coûtent cher

      • Faux rôle sur un élément natif — un div en role="button" sans gestion clavier ni état : annoncé comme un bouton, inopérant au clavier. Pire que de ne rien faire.
      • Redondance — <button role="button">. Inutile et source de conflits.
      • aria-hidden sur un élément focusable — il devient invisible pour le lecteur d'écran tout en restant focusable : on crée un focus qui mène nulle part.
      • alt sur un élément non-image — un alt sur un <div> ne fait rien, et donne l'illusion d'avoir travaillé.

      Contrôler ce que la technologie d'assistance annonce vraiment

      La seule vérification qui compte se fait dans l'inspecteur d'accessibilité de la barre de développement, sur l'onglet des rôles. Si un composant n'apparaît pas dans la liste, il n'existe pas pour l'utilisateur. Cette vérification prend trente secondes et remplace la moitié des vérifications manuelles : elle dit ce que le lecteur d'écran va annoncer, au lieu de le deviner.

      Le piège à connaître : un composant peut être annoncé correctement et rester inutilisable — un bouton sans nom, un champ sans étiquette. L'ARIA donne des noms, il ne rend pas un composant fonctionnel.

    4. Formulaires et erreurs : le point de rupture des parcours

      Le formulaire est l'endroit où l'accessibilité se paie le plus cher en temps d abandons, et le plus souvent en causes perdues. Cinq exigences à ne pas négocier.

      1. Une étiquette liée à chaque champ (3.3.2, niveau A)

      Un champ a besoin d'une étiquette persistante — présente avant, pendant et après la saisie. Un placeholder qui disparaît à la première frappe est un défaut classique : il ne laisse plus rien pour identifier le champ, et il est souvent trop pâle pour passer le contraste.

      2. Les erreurs identifiées en texte (3.3.1, niveau A)

      Le message doit dire quel champ est en erreur et quoi faire pour le corriger. « Erreur de validation » ne dit rien. « Le code postal doit contenir 5 chiffres » règle le problème. L'erreur doit être associée au champ, pas seulement affichée au-dessus du formulaire.

      3. Les erreurs signalées avant ou au moment de la perte de contexte

      Une erreur validée seulement au clic sur « Envoyer », sans que le focus n'aille nulle part, oblige à relire tout le formulaire pour trouver le champ fautif. L'ARIA role="alert" sur le message d'erreur, et un déplacement du focus vers le premier champ en erreur, transforment une recherche en une confirmation.

      4. Pas d'appels redondants (3.3.7, niveau AA, WCAG 2.2)

      Critère ajouté par la WCAG 2.2 : si le même champ déclenche plusieurs fois l' announces du même message d'erreur, l'utilisateur ne comprend plus. On annonce une fois, puis on laisse l'utilisateur corriger.

      5. La taille des cibles (2.5.8, niveau AA, WCAG 2.2)

      Critère également nouveau en 2.2 : les cibles interactives font au moins 24 × 24 pixels, ou elles disposent d'un espacement suffisant. Les liens de navigation inline échappent à la règle, mais les icônes de barre d'outils, les boutons-icônes et les petites croix de fermeture y sont soumis. C'est là que l'on gagne réellement : ces cibles sont minuscules au doigt comme à la souris.

      Le temps et la cognition

      Si le formulaire a une limite de temps, elle doit être annoncée, extensible, et l'avertissement doit être possible avant expiration (critères 2.2.x). De même, une étape qui exige de mémoriser une information servie ailleurs — un code dans un e-mail à recopier — est une barrière cognitive réelle. La corriger fait partie du travail.

  4. Mesurer : audit, déclaration et maintien dans la durée

    1. L'audit RGAA, étape par étape

      Le RGAA fournit, pour chacun de ses 106 critères, une liste de tests à réaliser. La méthode est reproductible, ce qui est son avantage principal : deux evaluates personnes produisent le même résultat.

      L'ordre : ce qu'il faut savoir avant d'ouvrir le navigateur

      1. Périmètre. Quelles pages ? Un audit « du site » n'existe pas : on audite un échantillon représentatif, sinon on audite la page d'accueil et on conclut.
      2. Profil d'utilisateur. Mobile uniquement, desktop uniquement, ou les deux. L'écart entre les deux profils est souvent plus important que la liste des erreurs.
      3. Environnement de test. Navigateur, technologies d'assistance, niveau d'zoom, connexion. Un audit réalisé sur le poste du développeur en 400 % de zoom n'est pas l'usage réel.

      Les quatre phases de l'évaluation

      1. Collecte. Contenu, fonctionnalités, liste des technologies d'assistance visées.
      2. Audit automatique. Filtre, avec un rapport d'erreurs par page. On ne corrige pas encore : on mesure l'écart.
      3. Audit manuel. Les tests RGAA, paragraphe par paragraphe, avec traçabilité — pour chaque critère, la page et le résultat.
      4. Synthèse. Taux de conformité par critère, par thème et globalement, avec la liste des écarts.

      Lire un taux de conformité

      Un « 90 % de conformité » est un chiffre sans sens pris isolément, et c'est le piège le plus coûteux de la démarche. Un site à 92 % dont les 8 % d'échecs portent sur la navigation clavier et les erreurs de formulaire est inutilisable pour les personnes concernées. Un site à 75 % dont les échecs portent sur des contrastes secondaires est très utilisable.

      Ce qui compte, c'est la répartition : quels critères échouent. Un seul critère de niveau A bloquant (navigation clavier, nom accessible) pèse plus que trente écarts de contraste sur des éléments secondaires.

    2. Outillage : ce que chaque outil apporte, et son angle mort

      Les outils automatiques

      • RGAA & DevTools — extension qui liste les erreurs par critère RGAA. Utile au quotidien, pour repérer les régressions.
      • Lighthouse et son volet accessibilité — integrated à Chrome DevTools, il donne une note et une liste. Le score est un indicateur de tendance, pas une mesure de conformité : il ne couvre qu'une partie des critères et son poids ne correspond pas au niveau A / AA.
      • axe-core — la base de Lighthouse, utile en intégration continue pour bloquer une régression sur un seuil.

      Les outils de test manuel

      • Lecteur d'écran — indispensable. VoiceOver sur Mac, NVDA sous Windows. Il ne faut pas se contenter de l'ARIA Tree : il faut écouter le rendu réel, avec ses silences et ses répétitions.
      • Inspecteur d'accessibilité de DevTools — pour voir ce que la technologie d'assistance va annoncer, y compris l'arbre de rôles et les règles de nommage. Vérification de trente secondes, à faire sur chaque composant sur mesure.
      • Vérificateur de contraste — pour les textes posés sur fond coloré ou image.

      Les tests qui ne s'outillent pas

      • Le parcours au clavier, chronométré, sur les tâches réelles.
      • Le test en 400 % de zoom et en 320 px de largeur, sur un vrai téléphone en connexion dégradée.
      • La relecture des messages d'erreur par quelqu'un qui n'a pas écrit le formulaire.
      • La question « qu'est-ce que ce bouton fait ? » posée à un utilisateur réel quand le bouton ne porte qu'une icône.

      L'angle mort commun : le test en conditions dégradées

      Un audit réalisé sur le poste du développeur — grand écran, bonne connexion, souris, à 100 % de zoom — est presque toujours optimiste. Les deux situations qui font le plus de dégâts sont l'accès dégradé (3G, CPU lent) et l'usage en mobilité (une main, en marchant, au soleil). Un site peut passer 100 % des tests automatisés et s'effondrer dans ces deux cas.

    3. La déclaration d'accessibilité : ce qu'elle engage

      La déclaration n'est pas un formulaire administratif : c'est un engagement daté, et sa valeur tient entièrement à sa sincérité.

      Les quatre mentions attendues

      1. L'état de conformité constaté — « partiellement conforme », avec le nombre de pages auditées et le périmètre. « Conforme » est le seul état qui somme annoncé sans réserve ; il suppose un audit complet et sans écart.
      2. Le contenu et les méthodes de l'évaluation — pages auditées, outils utilisés, technologies d'assistance testées.
      3. Les écarts identifiés et leur justification. Pour chaque écart : sa nature, son impact, et pourquoi il n'a pas été corrigé. Un écart justifié est défendable ; un écart non signalé est un risque.
      4. La voie de recours — où déposer un signalement d'inaccessibilité, et qui le traite.

      Les trois formulations à éviter

      • « Ce site est conçu pour être accessible » — c'est une déclaration d'intention, pas un état de conformité. Elle n'apporte rien et n'engage personne.
      • « Nous nous efforçons de rendre ce site accessible » — le même problème, sous forme d'engagement creux : ni périmètre, ni méthode, ni date.
      • « 95 % conforme » — un pourcentage global sans répartition ne dit pas si le parcours principal est utilisable. Il ne dit rien.

      Ce que laDinum et le RGAA disent de l'avenir

      Le RGAA 5 est attendu fin 2026. La Dinum est explicite sur deux points qui doivent guider la rédaction dès aujourd'hui : les critères du RGAA 5 préciseront ou compléteront ceux du 4.1.2 sans les infirmer, et les déclarations d'accessibilité établies avant cette publication resteront valables 18 mois, dans la limite de trois ans à compter de leur date de publication.

      La lecture qui s'impose pour un projet en cours : il ne faut pas attendre le RGAA 5, mais il ne faut pas non plus s'y enfermer. Travailler avec le 4.1.2 dès maintenant est le bon calcul, à condition de viser le niveau AA — le niveau qui ne changera pas d'une version à l'autre, puisque le RGAA ne fixe pas de niveau AAA.

    4. Tenir dans la durée : la régression silencieuse

      Un audit ponctuel produit une photo. La question est ce qui reste trois mois plus tard, après six livraisons.

      Pourquoi ça se dégrade sans bruit

      Une régression d'accessibilité ne casse rien de visible. Une mise à jour de dépendance remplace un composant par un div : le site est identique à l'œil, et le clavier ne fonctionne plus. Un design system pose outline: none sur tous les champs pour « clean » : le focus disparaît sur cent formulaires. Un banner de consentement couvre la moitié de l'écran en bas : le critère 2.4.11 est satisfait, puis violé par le bandeau suivant. Aucun de ces changements ne déclenche une alerte, parce qu'aucun ne casse une fonctionnalité pour la majorité des utilisateurs.

      Les cinq verrous, du moins cher au plus cher

      1. Le design system interdit outline: none sans remplacement visible, et fournit l'indicateur de focus par défaut. Une règle de lint CSS suffit à le tenir.
      2. Les composants sur mesure sont vérifiés au prototypage, pas à la livraison : inspecteur d'accessibilité, parcours clavier, test en 400 % de zoom. C'est le moment le moins cher.
      3. L'audit automatique tourne à chaque livraison avec un seuil bloquant sur les erreurs de niveau A. On ne bloque pas sur un score global, on bloque sur la régression.
      4. Le parcours clavier est dans la recette : il figure dans la check-list de mise en production, avec une personne désignée. Ce qui n'est pas dans la recette n'existe pas.
      5. La déclaration est révisée à chaque évolution majeure, et à date fixe sinon. Une déclaration de plus de douze mois est une déclaration périmée.

      La question qui décide du budget

      « Est-ce qu'on fait ce travail maintenant, ou est-ce qu'on va le faire plus tard ? » La réponse qui trompe est « plus tard, ce sera moins cher ». Le vrai calcul est inverse : un écart d'accessibilité est d'autant plus cher qu'il est trouvé tard, parce qu'il a été répliqué, documenté, testé et repris dans des cas de test. Le coût d'un défaut trouvé au prototypage est d'une heure ; le même défaut trouvé à la deuxième année est un projet.

Sources et documentation de reference

Atelier guidé

Mettre une page réelle en accessibilité, et produire la déclaration qui va avec. Un écran traité jusqu'au bout vaut mieux qu'un audit de dix écrans traités à moitié.

  1. Cadrer la cible : prendre une page que vous connaissez et la cadrer : deux profils d’utilisateurs précis — et non « les handicapés » en général — et une liste de tâches réelles à accomplir.
  2. Premier passage sans outil : parcourir la page au clavier uniquement, en notant chaque point de blocage sans le corriger. Ce relevé est la preuve de l’utilité du travail.
  3. Deuxième passage avec outils : lancer un audit automatique, puis le confronter au relevé : chaque erreur restante est-elle un vrai problème ? chaque absence de rapport est-elle réellement sans problème ?
  4. Contraste, focus, formulaires : vérifier le contraste des textes, la visibilité de l’indicateur de focus, l’ordre de tabulation, et le parcours complet du formulaire de contact.
  5. Écrire la déclaration : rédiger la déclaration d’accessibilité : conformité constatée, écarts et leur justification, périmètre non évalué, date de la prochaine évaluation.

Restitution de l’atelier

  • La liste des points de blocage trouvée au premier passage, avant toute correction.
  • Le rapport d’audit automatique, avec pour chaque erreur la décision : corrigée, ou écartée avec sa raison.
  • La déclaration d’accessibilité datée, avec les écarts assumés et argumentés.
  • Une note sur ce que l’audit automatique ne voit pas : il ne juge pas si un texte alternatif est pertinent, ni si un parcours est cohérent.
Validation : Un écart justifié vaut mieux qu’une conformité annoncée et fausse. Une déclaration qui dit « partiellement conforme », avec trois écarts argumentés, est exploitable ; une déclaration qui dit « conforme » alors que le clavier se bloque sur le formulaire de contact est fausse, et elle aboutira à un signalement.

Publié le 01/10/2026