<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Charly Duguey</title>
    <description>The latest articles on DEV Community by Charly Duguey (@cduguey).</description>
    <link>https://dev.to/cduguey</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4157343%2F9f0a3052-810f-4a46-a939-f1752bd87dec.png</url>
      <title>DEV Community: Charly Duguey</title>
      <link>https://dev.to/cduguey</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cduguey"/>
    <language>en</language>
    <item>
      <title>Calculer un prix au m avec les DVF : moyenne tronquée, mutations et communes fusionnées</title>
      <dc:creator>Charly Duguey</dc:creator>
      <pubDate>Fri, 02 Oct 2026 12:11:15 +0000</pubDate>
      <link>https://dev.to/cduguey/calculer-un-prix-au-m2-avec-les-dvf-moyenne-tronquee-mutations-et-communes-fusionnees-282o</link>
      <guid>https://dev.to/cduguey/calculer-un-prix-au-m2-avec-les-dvf-moyenne-tronquee-mutations-et-communes-fusionnees-282o</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;En bref&lt;/strong&gt; : pour calculer un prix au mètre carré honnête avec les DVF, trois choix comptent plus que le code : calculer commune par commune, moyenner après avoir écarté les extrêmes, et ne jamais afficher un chiffre précis sur un échantillon trop mince.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;J'ai construit un estimateur immobilier pour la Normandie à partir des DVF, la base publique des ventes réellement signées. Voici les choix de calcul que j'ai faits, et trois pièges qui faussent les prix si on les ignore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pourquoi les ventes réelles plutôt que les annonces
&lt;/h2&gt;

&lt;p&gt;Les DVF (Demandes de valeurs foncières) sont publiées par l'administration fiscale et ouvertes sur &lt;a href="https://www.data.gouv.fr/fr/datasets/demandes-de-valeurs-foncieres/" rel="noopener noreferrer"&gt;data.gouv.fr&lt;/a&gt;. Chaque ligne donne une vente signée devant notaire : localisation, type de bien, surface, prix. Une annonce affiche le prix qu'un vendeur espère. Les DVF affichent le prix qu'un acheteur a payé.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trois choix de calcul
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Commune par commune.&lt;/strong&gt; Entre le littoral, l'agglomération de Caen et le Bocage, les prix au mètre carré n'ont rien à voir. Une moyenne départementale mélange des marchés différents, donc je ne calcule jamais à cette échelle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Une moyenne tronquée à 10 %, pas une médiane.&lt;/strong&gt; Une vente entre proches ou un bien atypique fausse une moyenne brute, donc j'écarte les ventes les plus basses et les plus hautes avant de moyenner. Je n'ai pas pris la médiane parce que le marché affiche des moyennes, et qu'elle sort anormalement basse sur les appartements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Une fenêtre de deux ans, et un seuil.&lt;/strong&gt; Les prix se calculent sur deux ans de ventes. Pour les appartements, je masque le prix sous dix ventes : un chiffre sur trois transactions serait une illusion de précision.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Trois pièges
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Une vente, plusieurs lignes.&lt;/strong&gt; Dans les DVF, une même vente peut apparaître sur plusieurs lignes, une par lot ou par parcelle. Sans regroupement par identifiant de mutation (&lt;code&gt;id_mutation&lt;/code&gt;), on compte la même vente plusieurs fois et on fausse la moyenne.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Les communes fusionnées.&lt;/strong&gt; Aunay-sur-Odon a fusionné en 2017 dans Les Monts d'Aunay. Elle n'existe plus seule dans les codes communes, mais son marché reste isolable par le code postal 14260. Sur 2023-2024, cela donne 1 468 €/m² pour les maisons (63 ventes) et 1 458 €/m² pour les appartements (13 ventes). Réserve : ce code postal inclut quelques hameaux voisins. C'est un bon repère, pas strictement Aunay-sur-Odon seul.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Les petites communes.&lt;/strong&gt; Aunay-sur-Odon, c'est environ 38 ventes par an : la marge d'erreur est large. Plutôt que d'afficher un prix précis, je resserre ou j'élargis la fourchette selon le nombre de ventes enregistrées.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ce que ça ne remplace pas
&lt;/h2&gt;

&lt;p&gt;Une estimation en ligne donne une fourchette de départ. Elle ne voit pas la luminosité, le vis-à-vis, l'état de la toiture ou le bruit du voisinage. Une visite sur place reste nécessaire pour fixer le prix.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aller plus loin
&lt;/h2&gt;

&lt;p&gt;Les données sont recalculées à chaque nouvelle publication des DVF, en général deux fois par an. Le détail des critères d'ajustement, de la fourchette et de l'indice de confiance est décrit sur la &lt;a href="https://estimation-normandie.fr/methode-estimation-dvf/" rel="noopener noreferrer"&gt;méthode de calcul détaillée d'Estimation Normandie&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opendata</category>
      <category>data</category>
      <category>realestate</category>
      <category>french</category>
    </item>
    <item>
      <title>J'ai audité mon propre site sur les 106 critères du RGAA : ce que l'outil trouve seul, et ce qu'il rate</title>
      <dc:creator>Charly Duguey</dc:creator>
      <pubDate>Fri, 02 Oct 2026 12:07:38 +0000</pubDate>
      <link>https://dev.to/cduguey/jai-audite-mon-propre-site-sur-les-106-criteres-du-rgaa-ce-que-loutil-trouve-seul-et-ce-quil-3ami</link>
      <guid>https://dev.to/cduguey/jai-audite-mon-propre-site-sur-les-106-criteres-du-rgaa-ce-que-loutil-trouve-seul-et-ce-quil-3ami</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;En bref&lt;/strong&gt; : j'ai audité mon site sur les 106 critères du RGAA. 71 applicables, 71 conformes. Mais un script ne juge que 24 critères sur 106, et le chiffre ne vaut rien sans sa méthode.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Le 14 septembre 2026, j'ai audité mon propre site WordPress (thème enfant Blocksy) sur les 106 critères du RGAA 4.1, le référentiel français construit sur WCAG 2.1. Résultat : 71 critères applicables, 71 conformes, 35 non applicables, soit 100 %. Le détail est dans ma &lt;a href="https://www.charlyduguey.fr/accessibilite/" rel="noopener noreferrer"&gt;déclaration d'accessibilité&lt;/a&gt;, avec ses limites.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ce que ce 100 % ne dit pas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Aucun test avec un lecteur d'écran réel.&lt;/strong&gt; Je me suis appuyé sur l'arbre d'accessibilité du navigateur, pas sur l'interprétation d'un lecteur.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C'est un audit interne.&lt;/strong&gt; Je suis l'auteur du site et de l'audit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;35 critères sont non applicables&lt;/strong&gt; : le site n'a ni vidéo, ni son, ni cadre, ni CAPTCHA, ni document à télécharger. Un site client en aura, son taux sera plus dur à tenir.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  La méthode
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;20 pages&lt;/strong&gt; : les 5 pages obligatoires, 12 pages représentatives, et 3 tirées au hasard parmi les 55 du plan du site (tirage reproductible).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outils&lt;/strong&gt; : Chromium piloté par Playwright (1366 par 900 pixels, puis 320 pixels de large avec un zoom à 200 %), le validateur du W3C et deux scripts maison.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Répartition&lt;/strong&gt; : un script juge seul 24 critères, je tranche les 82 autres à la main à partir des preuves relevées.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Le script mesure&lt;/th&gt;
&lt;th&gt;Il ne sait pas juger&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;présence d'un texte alternatif&lt;/td&gt;
&lt;td&gt;si ce texte décrit vraiment l'image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;contraste, focus visible&lt;/td&gt;
&lt;td&gt;l'ordre de lecture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;intitulés de liens, titres, repères&lt;/td&gt;
&lt;td&gt;le comportement au lecteur d'écran&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;zoom à 200 %, lecture à 320 px&lt;/td&gt;
&lt;td&gt;les messages de correction de saisie&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;étiquettes de champs, lien d'évitement&lt;/td&gt;
&lt;td&gt;l'espacement du texte&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Un rapport à 100 % sur les 24 critères mesurés ne veut donc jamais dire « conforme ». C'est la logique de l'&lt;a href="https://www.charlyduguey.fr/audit-accessibilite-rgaa/" rel="noopener noreferrer"&gt;audit d'accessibilité RGAA&lt;/a&gt; que je propose : les critères mesurés par l'outil, puis la vérification à la main, avec un rapport priorisé.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quatre pièges de mesure
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;focus()&lt;/code&gt; en boucle ment.&lt;/strong&gt; Le style natif dépend de &lt;code&gt;:focus-visible&lt;/code&gt;, inactif sur un focus programmatique. J'ai testé à la vraie touche Tab, sur 45 arrêts par page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;La cascade CSS ne se déduit pas du fichier.&lt;/strong&gt; Blocksy repose la couleur de bordure des champs par une variable après mes règles. Seuls les outils de développement disent quelle règle gagne.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le contraste se calcule sur des couches composées.&lt;/strong&gt; Une pellicule blanche à 5 % sur du bleu nuit n'est pas du blanc : sans composition, mon outil annonçait 1:1 sur du texte lisible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le cache sert des copies différentes.&lt;/strong&gt; Deux visites d'affilée ne renvoyaient pas la même feuille de style. Je demande chaque page sous une adresse jamais mise en cache.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Ce que l'audit a trouvé sur mon site
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Contraste (3.2, 3.3)&lt;/strong&gt; : bordure des champs à 1,24:1, passée à 3,47:1 ; numéro des cartes de 3,81:1 à 5,34:1.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lien d'évitement (12.7)&lt;/strong&gt; : il pointait vers une ancre inexistante.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Menu (10.13)&lt;/strong&gt; : le panneau s'ouvrait au survol et ne se refermait pas. La touche Échap le masque maintenant.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Langue (8.7)&lt;/strong&gt; : les messages d'erreur du formulaire s'affichaient en anglais.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structure (8.9, 9.3)&lt;/strong&gt; : une fausse liste faite de sauts de ligne est devenue une vraie liste de description.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code (8.2)&lt;/strong&gt; : zéro erreur au validateur du W3C, contre sept par page le matin même.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  À retenir
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Un script ne remplace pas l'audit : il en couvre moins d'un quart.&lt;/li&gt;
&lt;li&gt;Un taux ne se cite jamais sans les critères non applicables ni la réserve du lecteur d'écran.&lt;/li&gt;
&lt;li&gt;La collecte se rejoue à volonté, mais la grille porte des jugements humains.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si l'audit trouve des défauts comme ceux-ci sur un site, la &lt;a href="https://www.charlyduguey.fr/mise-en-conformite-rgaa/" rel="noopener noreferrer"&gt;mise en conformité RGAA&lt;/a&gt; consiste à les corriger un par un, puis à re-mesurer.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>webdev</category>
      <category>testing</category>
      <category>a11y</category>
    </item>
  </channel>
</rss>
