<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.aknotl.fr/index.php?action=history&amp;feed=atom&amp;title=Module%3AD%C3%A9mographie</id>
	<title>Module:Démographie - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.aknotl.fr/index.php?action=history&amp;feed=atom&amp;title=Module%3AD%C3%A9mographie"/>
	<link rel="alternate" type="text/html" href="https://wiki.aknotl.fr/index.php?title=Module:D%C3%A9mographie&amp;action=history"/>
	<updated>2026-08-10T06:13:37Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.aknotl.fr/index.php?title=Module:D%C3%A9mographie&amp;diff=483&amp;oldid=prev</id>
		<title>Theau 2 : 1 version importée</title>
		<link rel="alternate" type="text/html" href="https://wiki.aknotl.fr/index.php?title=Module:D%C3%A9mographie&amp;diff=483&amp;oldid=prev"/>
		<updated>2021-07-24T10:39:17Z</updated>

		<summary type="html">&lt;p&gt;1 version importée&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 24 juillet 2021 à 10:39&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;fr&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Aucune différence)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wiki_aknotl:diff:1.41:old-482:rev-483 --&gt;
&lt;/table&gt;</summary>
		<author><name>Theau 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.aknotl.fr/index.php?title=Module:D%C3%A9mographie&amp;diff=482&amp;oldid=prev</id>
		<title>Infobox&gt;Zebulon84 : ajout font-family avoir une largeur de police à peu près constante, ce qui n&#039;était pas le cas sur Ubuntu et dérivé avec Firefox, qui utilise par défaut DejaVu Sans, bien plus large que Arial utilisée sur Windows et Liberation Sans utilisée par Chromium</title>
		<link rel="alternate" type="text/html" href="https://wiki.aknotl.fr/index.php?title=Module:D%C3%A9mographie&amp;diff=482&amp;oldid=prev"/>
		<updated>2018-08-26T12:55:53Z</updated>

		<summary type="html">&lt;p&gt;ajout font-family avoir une largeur de police à peu près constante, ce qui n&amp;#039;était pas le cas sur Ubuntu et dérivé avec Firefox, qui utilise par défaut DejaVu Sans, bien plus large que Arial utilisée sur Windows et Liberation Sans utilisée par Chromium&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
  Module reprenant les fonctionnalités du modèle Démographie.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local p = {} -- le module&lt;br /&gt;
&lt;br /&gt;
-- le module chartes (centralisation des styles)&lt;br /&gt;
local data = require &amp;quot;Module:Chartes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-- liste des paramètres reconnus (valeur = nom de la variable)&lt;br /&gt;
p.parametres = {&lt;br /&gt;
  [&amp;quot;titre&amp;quot;] = &amp;quot;titre&amp;quot;,&lt;br /&gt;
  [&amp;quot;charte&amp;quot;] = &amp;quot;charte&amp;quot;,&lt;br /&gt;
  [&amp;quot;colonnes&amp;quot;] = &amp;quot;colonnes&amp;quot;,&lt;br /&gt;
  [&amp;quot;notes&amp;quot;] = &amp;quot;notes&amp;quot;,&lt;br /&gt;
  [&amp;quot;source&amp;quot;] = &amp;quot;source&amp;quot;,&lt;br /&gt;
  [&amp;quot;sources&amp;quot;] = &amp;quot;sources&amp;quot;,&lt;br /&gt;
  [&amp;quot;flottant&amp;quot;] = &amp;quot;flottant&amp;quot;,&lt;br /&gt;
  [&amp;quot;largeur-tableau&amp;quot;] = &amp;quot;largeur_tableau&amp;quot;,&lt;br /&gt;
  [&amp;quot;sansdoublescomptes&amp;quot;] = &amp;quot;sansdoublescomptes&amp;quot;,&lt;br /&gt;
  [&amp;quot;enquêteannuelle&amp;quot;] = &amp;quot;enqueteannuelle&amp;quot;,&lt;br /&gt;
  [&amp;quot;marge-interlignes&amp;quot;] = &amp;quot;marge_interlignes&amp;quot;,&lt;br /&gt;
  [&amp;quot;taille-police&amp;quot;] = &amp;quot;taille_police&amp;quot;,&lt;br /&gt;
  [&amp;quot;hauteur-lignes&amp;quot;] = &amp;quot;hauteur_lignes&amp;quot;,&lt;br /&gt;
  [&amp;quot;hyperliens-années&amp;quot;] = &amp;quot;hyperliens_annees&amp;quot;,&lt;br /&gt;
  [&amp;quot;années-fond&amp;quot;] = &amp;quot;annees_fond&amp;quot;,&lt;br /&gt;
  [&amp;quot;population-fond&amp;quot;] = &amp;quot;population_fond&amp;quot;,&lt;br /&gt;
  [&amp;quot;notes-fond&amp;quot;] = &amp;quot;notes_fond&amp;quot;,&lt;br /&gt;
  [&amp;quot;style-notes&amp;quot;] = &amp;quot;style_notes&amp;quot;,&lt;br /&gt;
  -- pour permettre les paramètres &amp;quot;depuis Lua&amp;quot;&lt;br /&gt;
  [&amp;quot;largeur_tableau&amp;quot;] = &amp;quot;largeur_tableau&amp;quot;,&lt;br /&gt;
  [&amp;quot;marge_interlignes&amp;quot;] = &amp;quot;marge_interlignes&amp;quot;,&lt;br /&gt;
  [&amp;quot;taille_police&amp;quot;] = &amp;quot;taille_police&amp;quot;,&lt;br /&gt;
  [&amp;quot;hauteur_lignes&amp;quot;] = &amp;quot;hauteur_lignes&amp;quot;,&lt;br /&gt;
  [&amp;quot;hyperliens_annees&amp;quot;] = &amp;quot;hyperliens_annees&amp;quot;,&lt;br /&gt;
  [&amp;quot;hyperliens_années&amp;quot;] = &amp;quot;hyperliens_annees&amp;quot;,&lt;br /&gt;
  [&amp;quot;années_fond&amp;quot;] = &amp;quot;annees_fond&amp;quot;,&lt;br /&gt;
  [&amp;quot;annees_fond&amp;quot;] = &amp;quot;annees_fond&amp;quot;,&lt;br /&gt;
  [&amp;quot;population_fond&amp;quot;] = &amp;quot;population_fond&amp;quot;,&lt;br /&gt;
  [&amp;quot;notes_fond&amp;quot;] = &amp;quot;notes_fond&amp;quot;,&lt;br /&gt;
  [&amp;quot;style_notes&amp;quot;] = &amp;quot;style_notes&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- le nom de la catégorie d&amp;#039;erreur (pour simplifier les changements)&lt;br /&gt;
p.categorie_erreur = &amp;quot;Page avec une erreur d&amp;#039;utilisation du modèle Démographie&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-- le titre par défaut (pour simplifier les changements) → plus utilisé : il n&amp;#039;y a plus de titre par défaut&lt;br /&gt;
p.titre_par_defaut = &amp;quot;Évolution démographique&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Fonction exportée reprenant le fonctionnement de {{m|Charte de couleur}}&lt;br /&gt;
&lt;br /&gt;
  Fonction devenue inutile (voir Module:Chartes), maintenue pour compatibilité éventuelle&lt;br /&gt;
  question : est-il possible de tester un appel à une fonction précise ?&lt;br /&gt;
--]]&lt;br /&gt;
function p.charte_de_couleur(frame)&lt;br /&gt;
    local pframe = frame:getParent()&lt;br /&gt;
&lt;br /&gt;
    -- les deux paramètres&lt;br /&gt;
    local nom = mw.ustring.lower(mw.text.trim(pframe.args[1] or &amp;quot;&amp;quot;))&lt;br /&gt;
    local code = mw.ustring.lower(mw.text.trim(pframe.args[2] or &amp;quot;&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    return data.charte_m(&amp;quot;geographie&amp;quot;, &amp;quot;secondaire&amp;quot;, code, &amp;quot;non&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Insert une catégorie d&amp;#039;erreur&lt;br /&gt;
--]]&lt;br /&gt;
p.liste_erreurs = {}&lt;br /&gt;
p.liste_cats = {}&lt;br /&gt;
function p.erreur(message, cle)&lt;br /&gt;
    table.insert(p.liste_erreurs, message)&lt;br /&gt;
    table.insert(p.liste_cats, cle)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Fonction de récupération d&amp;#039;un paramètre nommé.&lt;br /&gt;
--]]&lt;br /&gt;
function p.lit_parametre(nom, pasvide)&lt;br /&gt;
    if (type(nom) ~= &amp;quot;string&amp;quot;) then&lt;br /&gt;
        return nil -- pas un paramètre nommé&lt;br /&gt;
    end&lt;br /&gt;
    local temp = p.frame.args[nom] or p.pframe.args[nom] -- du modèle, puis de l&amp;#039;article&lt;br /&gt;
    if (temp ~= nil) then&lt;br /&gt;
        if (pasvide) then&lt;br /&gt;
            temp = mw.text.trim(temp)&lt;br /&gt;
            if (temp == &amp;quot;&amp;quot;) then&lt;br /&gt;
                return nil&lt;br /&gt;
            else&lt;br /&gt;
                return temp&lt;br /&gt;
            end&lt;br /&gt;
        else&lt;br /&gt;
            return mw.text.trim(temp)&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_snack_value(t, v, ...)&lt;br /&gt;
	if v and type(t) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		return get_snack_value(t[v], ...)&lt;br /&gt;
	elseif v then&lt;br /&gt;
		return nil&lt;br /&gt;
	else&lt;br /&gt;
		return t&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Fonction de récupération des données de Wikidata.&lt;br /&gt;
--]]&lt;br /&gt;
function p.valeur_wikidata(pm)&lt;br /&gt;
	local id = mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
	if mw.wikibase.isValidEntityId(p.pframe.args.wikidata) then&lt;br /&gt;
		id = p.pframe.args.wikidata&lt;br /&gt;
	elseif not id then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	local popProp = mw.wikibase.getAllStatements( id, &amp;#039;P1082&amp;#039; )&lt;br /&gt;
	if not popProp or #popProp == 0 then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	for _, statement in ipairs( popProp ) do&lt;br /&gt;
		local pop = get_snack_value(statement, &amp;#039;mainsnak&amp;#039;, &amp;#039;datavalue&amp;#039;, &amp;#039;value&amp;#039;, &amp;#039;amount&amp;#039;)&lt;br /&gt;
		local date_table = get_snack_value(statement, &amp;#039;qualifiers&amp;#039;, &amp;#039;P585&amp;#039;, 1, &amp;#039;datavalue&amp;#039;, &amp;#039;value&amp;#039; )&lt;br /&gt;
		if pop and date_table and date_table.precision &amp;gt; 8 and statement.rank ~= &amp;#039;deprecated&amp;#039; then&lt;br /&gt;
			local an = tonumber(date_table.time:match(&amp;#039;^%+(%d%d%d%d)&amp;#039;))&lt;br /&gt;
			if an then&lt;br /&gt;
				pm[an] = pop:match(&amp;#039;%d+&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Fonction de tri de la table&lt;br /&gt;
--]]&lt;br /&gt;
function p.mysort(el1, el2)&lt;br /&gt;
    if (el1 == nil) then&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
    if (el2 == nil) then&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
    if (el1[1] &amp;lt; el2[1]) then&lt;br /&gt;
        return true&lt;br /&gt;
    else&lt;br /&gt;
        return false&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Supprime le premier retour à la ligne (éventuel) de forme &amp;lt;br/&amp;gt;&lt;br /&gt;
--]]&lt;br /&gt;
function p.sans_nl(texte)&lt;br /&gt;
    if (texte == nil or texte == &amp;quot;&amp;quot; or type(texte) ~= &amp;quot;string&amp;quot;) then&lt;br /&gt;
        return texte&lt;br /&gt;
    end&lt;br /&gt;
    return mw.ustring.gsub(texte, &amp;quot;[&amp;lt;][bB][rR][ ]*[/][&amp;gt;]&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Fonction principale&lt;br /&gt;
  reçoit une table des paramètres (pm) issus de l&amp;#039;appel&lt;br /&gt;
--]]&lt;br /&gt;
function p.demographie_m(pm)&lt;br /&gt;
    -- titre par défaut&lt;br /&gt;
    --[[&lt;br /&gt;
    if (pm.titre == &amp;quot;off&amp;quot; or pm.titre == &amp;quot;non&amp;quot;) then&lt;br /&gt;
        pm.titre = nil&lt;br /&gt;
    elseif (pm.titre == nil) then&lt;br /&gt;
        pm.titre = p.titre_par_defaut&lt;br /&gt;
    end&lt;br /&gt;
    --]]&lt;br /&gt;
    -- modification : maintenant le titre est réellement optionnel&lt;br /&gt;
    if (pm.titre == &amp;quot;&amp;quot;) then&lt;br /&gt;
        pm.titre = nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- valeur marge interlignes&lt;br /&gt;
    if (pm.marge_interlignes == nil) then&lt;br /&gt;
        pm.marge_interlignes = &amp;quot;5px&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        -- les valeurs trop petites&lt;br /&gt;
        if (pm.marge_interlignes == &amp;quot;0&amp;quot; or pm.marge_interlignes == &amp;quot;0em&amp;quot; or pm.marge_interlignes == &amp;quot;0.1em&amp;quot; or pm.marge_interlignes == &amp;quot;0px&amp;quot; or&lt;br /&gt;
             pm.marge_interlignes == &amp;quot;1px&amp;quot; or pm.marge_interlignes == &amp;quot;2px&amp;quot; or pm.marge_interlignes == &amp;quot;3px&amp;quot; or pm.marge_interlignes == &amp;quot;4px&amp;quot;) then&lt;br /&gt;
            pm.marge_interlignes = &amp;quot;5px&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- valeur effective du flottant&lt;br /&gt;
    local vflottant = &amp;#039;margin: 0 auto&amp;#039; -- valeur par défaut&lt;br /&gt;
    if (mw.ustring.lower(pm.flottant or &amp;quot;&amp;quot;) == &amp;quot;gauche&amp;quot;) then&lt;br /&gt;
        vflottant = &amp;#039;float:left; margin: 0 1em 1em 0&amp;#039;&lt;br /&gt;
    elseif (mw.ustring.lower(pm.flottant or &amp;quot;&amp;quot;) == &amp;quot;droite&amp;quot;) then&lt;br /&gt;
        vflottant = &amp;#039;float:right; margin: 0 0 1em 1em&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if (pm.hauteur_lignes == nil) then&lt;br /&gt;
        pm.hauteur_lignes = &amp;quot;&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        pm.hauteur_lignes = &amp;quot;line-height:&amp;quot; .. pm.hauteur_lignes .. &amp;quot;;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    pm.taille_police = (pm.taille_police or &amp;quot;100%&amp;quot;) -- valeur par défaut taille police&lt;br /&gt;
    if (pm.notes_fond ~= nil) then&lt;br /&gt;
        pm.notes_fond = &amp;quot;background: &amp;quot; .. pm.notes_fond .. &amp;quot;;&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        pm.notes_fond = &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    local parenthese = false&lt;br /&gt;
    if (pm.style_notes == &amp;quot;gauche&amp;quot;) then&lt;br /&gt;
        pm.style_notes = &amp;#039;border: 1px solid #aaa; text-align:left;&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        pm.style_notes = &amp;#039;border: 0; border-width: 0;&amp;#039;&lt;br /&gt;
        parenthese = true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- valeur par défaut lien&lt;br /&gt;
    if (pm.hyperliens_annees == nil) then&lt;br /&gt;
        pm.hyperliens_annees = false&lt;br /&gt;
    else&lt;br /&gt;
       -- validation valeur&lt;br /&gt;
        if (pm.hyperliens_annees == &amp;quot;on&amp;quot; or pm.hyperliens_annees == &amp;quot;oui&amp;quot;) then&lt;br /&gt;
            pm.hyperliens_annees = true&lt;br /&gt;
        else&lt;br /&gt;
            pm.hyperliens_annees = false -- toute valeur autre que &amp;quot;on&amp;quot; = &amp;quot;off&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    -- valeurs par défaut des colonnes&lt;br /&gt;
    local colonnes_par_defaut&lt;br /&gt;
    if (pm.colonnes == nil) then&lt;br /&gt;
        colonnes_par_defaut = true&lt;br /&gt;
        pm.colonnes = 9&lt;br /&gt;
    else&lt;br /&gt;
        pm.colonnes = tonumber(pm.colonnes) -- pour que ce soit un nombre&lt;br /&gt;
    end&lt;br /&gt;
    -- on valide les colonnes&lt;br /&gt;
    if (type(pm.colonnes) ~= &amp;quot;number&amp;quot; or pm.colonnes &amp;lt; 1) then&lt;br /&gt;
        -- colonne erronée : erreur&lt;br /&gt;
        p.erreur(&amp;quot;La valeur du paramètre &amp;#039;&amp;#039;colonnes&amp;#039;&amp;#039; (&amp;quot; .. (pm.colonnes or &amp;quot;&amp;lt;pas un nombre&amp;gt;&amp;quot;) .. &amp;quot;) n&amp;#039;est pas valide&amp;quot;, &amp;quot;nombre de colonnes&amp;quot;)&lt;br /&gt;
        pm.colonnes = 9&lt;br /&gt;
    end&lt;br /&gt;
    -- largeur par défaut : 5.4em * colonnes&lt;br /&gt;
    local largeur_tableau_par_defaut&lt;br /&gt;
    if (pm.largeur_tableau == nil) then&lt;br /&gt;
        largeur_tableau_par_defaut = true&lt;br /&gt;
        pm.largeur_tableau = pm.colonnes*5.4 .. &amp;quot;em&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    if (pm.charte == nil) then&lt;br /&gt;
        pm.charte = &amp;quot;défaut&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        -- on valide la charte&lt;br /&gt;
        pm.charte = mw.ustring.lower(pm.charte)&lt;br /&gt;
    end&lt;br /&gt;
    -- on récupère les couleurs de la charte sauf si indiquées&lt;br /&gt;
    local coul_annees = (pm.annees_fond or data.charte_m(&amp;quot;geographie&amp;quot;, &amp;quot;secondaire&amp;quot;, pm.charte , &amp;quot;oui&amp;quot;))&lt;br /&gt;
    local coul_valeurs = (pm.population_fond or nil) -- valeur par défaut = rien&lt;br /&gt;
&lt;br /&gt;
    if (coul_valeurs == nil) then&lt;br /&gt;
        coul_valeurs = &amp;quot;&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        coul_valeurs = &amp;#039;style=&amp;quot;background:&amp;#039; .. coul_valeurs .. &amp;#039;;&amp;quot;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- extraction des éléments de la table, rangés dans une &amp;quot;vraie&amp;quot; table pour les trier&lt;br /&gt;
    local tbl = {}&lt;br /&gt;
    for annee, valeur in pairs(pm) do&lt;br /&gt;
        -- il y a aussi les paramètres nommés dans cette table, qu&amp;#039;on laisse&lt;br /&gt;
        if (type(annee) == &amp;quot;number&amp;quot;) then&lt;br /&gt;
            table.insert(tbl, {annee,valeur})&lt;br /&gt;
        else&lt;br /&gt;
            -- on profite de cette boucle pour vérifier les paramètres qui n&amp;#039;existent pas&lt;br /&gt;
            local tst = p.parametres[annee]&lt;br /&gt;
            if (tst == nil) then&lt;br /&gt;
                -- cas particulier : les paramètres sous la forme &amp;quot;XXXX notes&amp;quot; et &amp;quot;XXXX unité&amp;quot; sont acceptés&lt;br /&gt;
                local tst = mw.ustring.match(annee, &amp;quot;^[0-9]+ notes$&amp;quot;) or mw.ustring.match(annee, &amp;quot;^[0-9]+ unité$&amp;quot;) or mw.ustring.match(annee, &amp;quot;^[0-9]+ affichage$&amp;quot;) or mw.ustring.match(annee, &amp;quot;^_&amp;quot;)&lt;br /&gt;
                -- autre : on ignore également les paramètres vides (pb de transmission d&amp;#039;autres modèles)&lt;br /&gt;
                local temp = mw.text.trim(annee)&lt;br /&gt;
                if (tst == nil and temp ~= &amp;quot;&amp;quot;) then -- pas un paramètre connu ni XXXX notes → erreur&lt;br /&gt;
                    p.erreur(&amp;quot;Le paramètre &amp;#039;&amp;#039;&amp;gt;&amp;gt;&amp;quot; .. annee .. &amp;quot;&amp;lt;&amp;lt;&amp;#039;&amp;#039; (&amp;quot; .. mw.ustring.len(annee) .. &amp;quot;/&amp;quot; .. mw.ustring.len(temp) .. &amp;quot;) est inconnu&amp;quot;, &amp;quot;paramètre inconnu&amp;quot;)&lt;br /&gt;
                    -- on ignore simplement ce champs&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    -- tri de la table&lt;br /&gt;
    table.sort(tbl, p.mysort)&lt;br /&gt;
&lt;br /&gt;
    -- cette fois on parcours la structure des infos&lt;br /&gt;
    local ret = &amp;quot;&amp;quot;&lt;br /&gt;
    local odebug = &amp;quot;&amp;quot; -- sortie de debug&lt;br /&gt;
&lt;br /&gt;
    -- on parcours les données (années) pour générer la table structurée&lt;br /&gt;
    local col = 1&lt;br /&gt;
    local ligne = 1&lt;br /&gt;
    local struct = {}&lt;br /&gt;
    table.insert(struct, {}) -- on crée la première ligne&lt;br /&gt;
    local total = 0 -- compte du nombre total&lt;br /&gt;
    local pos = 1&lt;br /&gt;
    while (tbl[pos] ~= nil) do&lt;br /&gt;
        annee = tbl[pos][1]&lt;br /&gt;
        valeur = tbl[pos][2]&lt;br /&gt;
        pos = pos + 1&lt;br /&gt;
        -- il y a aussi les paramètres nommés dans cette table, qu&amp;#039;on laisse&lt;br /&gt;
        if (type(annee) == &amp;quot;number&amp;quot; and not (annee == 1 and (valeur == nil or valeur == &amp;quot;&amp;quot;))) then -- protection : un paramètre non nommé vaudra &amp;quot;1&amp;quot;&lt;br /&gt;
            -- nettoyage de la valeur&lt;br /&gt;
            local v = mw.text.trim(valeur or &amp;quot;&amp;quot;)&lt;br /&gt;
            -- on insert dans la ligne en cours&lt;br /&gt;
            table.insert(struct[ligne], { annee, v })&lt;br /&gt;
&lt;br /&gt;
            -- suivant&lt;br /&gt;
            total = total + 1&lt;br /&gt;
            col = col + 1&lt;br /&gt;
            -- fin de la ligne ?&lt;br /&gt;
            if (col &amp;gt; pm.colonnes) then&lt;br /&gt;
                col = 1&lt;br /&gt;
                ligne = ligne + 1&lt;br /&gt;
                table.insert(struct, {})&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    -- aucune entrée ? erreur.&lt;br /&gt;
    if (total == 0) then&lt;br /&gt;
        p.erreur(&amp;quot;Aucune année fournie au modèle&amp;quot;, &amp;quot;absence d&amp;#039;années&amp;quot;)&lt;br /&gt;
        -- on insert une donnée fictive&lt;br /&gt;
        tbl[1] = { 1970, 0 }&lt;br /&gt;
    end&lt;br /&gt;
    -- cas particulier : si les données arrivent pile à la dernière colonne on a alors&lt;br /&gt;
    -- une nouvelle ligne vide, pour rien. On l&amp;#039;enlève si c&amp;#039;est le cas&lt;br /&gt;
    if (struct[ligne] ~= nil and struct[ligne][1] == nil) then&lt;br /&gt;
        struct[ligne] = nil&lt;br /&gt;
        ligne = ligne - 1&lt;br /&gt;
    end&lt;br /&gt;
    -- on traite la largeur&lt;br /&gt;
    if (colonnes_par_defaut == true and ligne == 1 and total &amp;lt; pm.colonnes) then&lt;br /&gt;
        pm.colonnes = total  -- restriction du nombre de colonnes au nombre réel d&amp;#039;éléments&lt;br /&gt;
        -- il faut aussi recalculer la largeur totale : on fait le rapport entre 9 (ancien) et le nouveau nombre de colonnes&lt;br /&gt;
        if (largeur_tableau_par_defaut == true) then&lt;br /&gt;
            -- uniquement si l&amp;#039;utilisateur n&amp;#039;a pas fixé la taille&lt;br /&gt;
            pm.largeur_tableau = pm.colonnes*5.4 .. &amp;quot;em&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- on récupère le &amp;quot;langage&amp;quot; courant pour utiliser formatnum&lt;br /&gt;
    local lang = mw.language.getContentLanguage()&lt;br /&gt;
&lt;br /&gt;
    -- on récupère le namespace&lt;br /&gt;
    -- local ttl = mw.title.getCurrentTitle().namespace&lt;br /&gt;
    -- on force le namespace à &amp;quot;non encyclopédique&amp;quot; pour avoir systématiquement les messages d&amp;#039;erreur&lt;br /&gt;
    local ttl = 1  -- 1 ou autre chose, mais pas pas 0. Il faudrait si on conserve ça virer le code qui teste cette valeur (plus propre)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    -- création du div principal&lt;br /&gt;
    ret = ret .. &amp;#039;&amp;lt;div style=&amp;quot;overflow:hidden; width: &amp;#039; .. pm.largeur_tableau .. &amp;#039;; &amp;#039; .. vflottant .. &amp;#039;; padding:0 1px; text-align:center; font-family: Liberation Sans, Arial, sans-serif;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
    ligne = 1&lt;br /&gt;
    -- boucle sur les lignes&lt;br /&gt;
    while (struct[ligne] ~= nil) do&lt;br /&gt;
        -- une ligne à faire, on crée le tableau&lt;br /&gt;
        if (ligne == 1) then&lt;br /&gt;
            ret = ret .. &amp;#039;&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;table-layout:fixed;width:100%;text-align:center;margin-top: 1px; &amp;#039; .. pm.hauteur_lignes .. &amp;#039;margin-bottom: 0;font-size:&amp;#039; .. pm.taille_police .. &amp;#039;;&amp;quot;&amp;gt;\n&amp;#039;&lt;br /&gt;
        else&lt;br /&gt;
            ret = ret .. &amp;#039;&amp;lt;table class=&amp;quot;wikitable&amp;quot; style=&amp;quot;table-layout:fixed;width:100%;text-align:center;margin-top:&amp;#039; .. pm.marge_interlignes .. &amp;#039;; &amp;#039; .. pm.hauteur_lignes .. &amp;#039;margin-bottom: 0;font-size:&amp;#039; .. pm.taille_police .. &amp;#039;;&amp;quot;&amp;gt;\n&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
        -- si titre présent on l&amp;#039;ajoute : visible si 1ère ligne, caché sinon&lt;br /&gt;
        if (pm.titre ~= nil and pm.titre ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
            if (ligne == 1) then&lt;br /&gt;
                ret = ret .. &amp;#039;&amp;lt;caption style=&amp;quot;margin-bottom:&amp;#039; .. pm.marge_interlignes .. &amp;#039;;&amp;quot;&amp;gt;&amp;#039; .. pm.titre .. &amp;#039;&amp;lt;/caption&amp;gt;&amp;#039;&lt;br /&gt;
            else&lt;br /&gt;
                ret = ret .. &amp;#039;&amp;lt;caption class=&amp;quot;hidden&amp;quot;&amp;gt;&amp;#039; .. pm.titre .. &amp;quot;, suite (&amp;quot; .. ligne-1 .. &amp;#039;)&amp;lt;/caption&amp;gt;&amp;#039;&lt;br /&gt;
            end&lt;br /&gt;
        else&lt;br /&gt;
            -- titre par défaut, caché&lt;br /&gt;
            ret = ret .. &amp;#039;&amp;lt;caption class=&amp;quot;hidden&amp;quot;&amp;gt;&amp;#039; .. p.titre_par_defaut .. &amp;#039; (ligne &amp;#039; .. ligne .. &amp;#039;)&amp;lt;/caption&amp;gt;&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
        -- parcours des colonnes pour insérer les années&lt;br /&gt;
        col = 1&lt;br /&gt;
        ret = ret .. &amp;quot;&amp;lt;tr&amp;gt;\n&amp;quot;&lt;br /&gt;
        while (struct[ligne][col] ~= nil) do&lt;br /&gt;
            -- présence de AAAA affichage ?&lt;br /&gt;
            local temp = pm[struct[ligne][col][1] .. &amp;quot; affichage&amp;quot;]&lt;br /&gt;
            if (temp ~= nil) then&lt;br /&gt;
                -- on affiche l&amp;#039;élément indiqué à la place&lt;br /&gt;
                ret = ret .. &amp;#039;&amp;lt;th scope=&amp;quot;col&amp;quot; style=&amp;quot;background-color: &amp;#039; .. coul_annees .. &amp;#039;;&amp;quot;&amp;gt;&amp;#039; .. temp .. &amp;#039;&amp;lt;/th&amp;gt;\n&amp;#039;&lt;br /&gt;
            else&lt;br /&gt;
                if (pm.hyperliens_annees) then&lt;br /&gt;
                    ret = ret .. &amp;#039;&amp;lt;th scope=&amp;quot;col&amp;quot; style=&amp;quot;background-color: &amp;#039; .. coul_annees .. &amp;#039;;&amp;quot;&amp;gt;[[&amp;#039; .. struct[ligne][col][1] .. &amp;#039;]]&amp;lt;/th&amp;gt;\n&amp;#039;&lt;br /&gt;
                else&lt;br /&gt;
                    ret = ret .. &amp;#039;&amp;lt;th scope=&amp;quot;col&amp;quot; style=&amp;quot;background-color: &amp;#039; .. coul_annees .. &amp;#039;;&amp;quot;&amp;gt;&amp;#039; .. struct[ligne][col][1] .. &amp;#039;&amp;lt;/th&amp;gt;\n&amp;#039;&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            col = col + 1&lt;br /&gt;
        end&lt;br /&gt;
        -- si on n&amp;#039;a pas terminé les colonnes on termine avec du vide&lt;br /&gt;
        if (col &amp;lt;= pm.colonnes) then&lt;br /&gt;
            while (col &amp;lt;= pm.colonnes) do&lt;br /&gt;
                ret = ret .. &amp;#039;&amp;lt;th scope=&amp;quot;col&amp;quot; style=&amp;quot;background-color: &amp;#039; .. coul_annees .. &amp;#039;;&amp;quot;&amp;gt;-&amp;lt;/th&amp;gt;\n&amp;#039;&lt;br /&gt;
                col = col + 1&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        ret = ret .. &amp;quot;&amp;lt;/tr&amp;gt;\n&amp;quot;&lt;br /&gt;
        -- parcours des colonnes pour insérer les valeurs&lt;br /&gt;
        col = 1&lt;br /&gt;
        ret = ret .. &amp;quot;&amp;lt;tr&amp;gt;\n&amp;quot;&lt;br /&gt;
        while (struct[ligne][col] ~= nil) do&lt;br /&gt;
            if (struct[ligne][col][2] == &amp;quot;&amp;quot; or struct[ligne][col][2] == nil) then&lt;br /&gt;
                ret = ret .. &amp;#039;&amp;lt;td &amp;#039; .. coul_valeurs .. &amp;#039;&amp;gt;-&amp;lt;/td&amp;gt;&amp;#039;&lt;br /&gt;
            else&lt;br /&gt;
                -- on récupère la partie numérique au début&lt;br /&gt;
                local pdeb = mw.ustring.match(struct[ligne][col][2], &amp;quot;^[0-9]*&amp;quot;)&lt;br /&gt;
                local pfin = mw.ustring.match(struct[ligne][col][2], &amp;quot;^[0-9]*(.*)$&amp;quot;)&lt;br /&gt;
                local tmp = &amp;quot;&amp;quot;&lt;br /&gt;
                -- si le début est présent il passe par formatnum&lt;br /&gt;
                if (pdeb ~= nil and pdeb ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
                    tmp = tmp .. lang:formatNum(tonumber(pdeb))&lt;br /&gt;
                end&lt;br /&gt;
                -- on ajoute la suite (éventuelle)&lt;br /&gt;
                if (pfin ~= nil and pfin ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
                    tmp = tmp .. pfin&lt;br /&gt;
                end&lt;br /&gt;
                -- si un paramètre &amp;quot;XXXX unité&amp;quot; existe on l&amp;#039;insert&lt;br /&gt;
                local unite = pm[struct[ligne][col][1] .. &amp;quot; unité&amp;quot;]&lt;br /&gt;
                if (unite ~= nil) then&lt;br /&gt;
                    tmp = tmp .. &amp;quot; &amp;quot; .. unite&lt;br /&gt;
                end&lt;br /&gt;
                -- si un paramètre &amp;quot;XXXX notes&amp;quot; existe on l&amp;#039;insert en tant que note&lt;br /&gt;
                local note = pm[struct[ligne][col][1] .. &amp;quot; notes&amp;quot;]&lt;br /&gt;
                if (note ~= nil) then&lt;br /&gt;
                    -- test : on regarde si la note est déjà une ref (pour insérer une espace ou pas avant)&lt;br /&gt;
                    local estref = mw.text.unstrip(note)&lt;br /&gt;
                    -- si &amp;#039;estref&amp;#039; == &amp;#039;&amp;#039; la note ne contient qu&amp;#039;un strip marker (ref, pre, gallery). Probablement une ref.&lt;br /&gt;
                    if (estref ~= &amp;#039;&amp;#039;) then&lt;br /&gt;
                        tmp = tmp .. &amp;quot; &amp;quot;&lt;br /&gt;
                    end&lt;br /&gt;
                    tmp = tmp .. note&lt;br /&gt;
                end&lt;br /&gt;
                ret = ret .. &amp;#039;&amp;lt;td &amp;#039; .. coul_valeurs .. &amp;#039;&amp;gt;&amp;#039; .. tmp .. &amp;#039;&amp;lt;/td&amp;gt;&amp;#039;&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            col = col + 1&lt;br /&gt;
        end&lt;br /&gt;
        -- si on n&amp;#039;a pas terminé les colonnes on termine avec du vide&lt;br /&gt;
        if (col &amp;lt;= pm.colonnes) then&lt;br /&gt;
            while (col &amp;lt;= pm.colonnes) do&lt;br /&gt;
                ret = ret .. &amp;#039;&amp;lt;td &amp;#039; .. coul_valeurs .. &amp;#039;&amp;gt;-&amp;lt;/td&amp;gt;&amp;#039;&lt;br /&gt;
                col = col + 1&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        ret = ret .. &amp;quot;&amp;lt;/tr&amp;gt;\n&amp;quot;&lt;br /&gt;
        -- fermeture table&lt;br /&gt;
        ret = ret .. &amp;quot;&amp;lt;/table&amp;gt;\n&amp;quot;&lt;br /&gt;
        ligne = ligne + 1&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- si pas encyclo + présence d&amp;#039;erreur on l&amp;#039;ajoute aux notes&lt;br /&gt;
    local erreurs = nil&lt;br /&gt;
    if (ttl ~= 0 and p.liste_erreurs[1] ~= nil) then&lt;br /&gt;
        erreurs = &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot; style=\&amp;quot;font-size: 0.9em;\&amp;quot;&amp;gt;Liste des erreurs :&amp;lt;br/&amp;gt;&amp;quot;&lt;br /&gt;
        local i = 1&lt;br /&gt;
        while (p.liste_erreurs[i] ~= nil) do&lt;br /&gt;
            erreurs = erreurs .. &amp;quot;• &amp;quot; .. p.liste_erreurs[i]&lt;br /&gt;
            if (p.liste_erreurs[i+1] ~= nil) then&lt;br /&gt;
                erreurs = erreurs .. &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
            i = i + 1&lt;br /&gt;
        end&lt;br /&gt;
        erreurs = erreurs .. &amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    -- gestion des notes et sources&lt;br /&gt;
    if (pm.notes ~= nil or pm.source ~= nil or pm.sources ~= nil or pm.sansdoublescomptes ~= nil or pm.enqueteannuelle ~= nil or erreurs ~= nil) then&lt;br /&gt;
        local pred = false&lt;br /&gt;
        ret = ret .. &amp;#039;&amp;lt;div style=&amp;quot;padding: 0.3em; margin: 6px 0; line-height: 150%; font-size: 0.9em; &amp;#039; .. pm.notes_fond .. &amp;#039; &amp;#039; .. pm.style_notes .. &amp;#039;&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
        -- le double-compte si présent&lt;br /&gt;
        if (pm.sansdoublescomptes ~= nil) then&lt;br /&gt;
            -- si présent on retire le saut de ligne&lt;br /&gt;
            pm.sansdoublescomptes = p.sans_nl(pm.sansdoublescomptes)&lt;br /&gt;
           ret = ret .. &amp;quot;Nombre retenu à partir de [[&amp;quot; .. pm.sansdoublescomptes .. &amp;quot;]] : [[Chiffres de population de la France|population sans doubles comptes]].&amp;quot;&lt;br /&gt;
           pred = true&lt;br /&gt;
        end&lt;br /&gt;
        if (pm.enqueteannuelle ~= nil) then&lt;br /&gt;
            -- si présent on retire le saut de ligne&lt;br /&gt;
            pm.enqueteannuelle = p.sans_nl(pm.enqueteannuelle)&lt;br /&gt;
            if (pred) then&lt;br /&gt;
                ret = ret .. &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
            ret = ret .. &amp;quot;[[&amp;quot; .. pm.enqueteannuelle .. &amp;quot;]] : Population provisoire (enquête annuelle).&amp;quot;&lt;br /&gt;
            pred = true&lt;br /&gt;
        end&lt;br /&gt;
        -- on ajoute les notes si présentes&lt;br /&gt;
        if (pm.notes ~= nil) then&lt;br /&gt;
            if (pred) then&lt;br /&gt;
                ret = ret .. &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
            -- si présent on retire le saut de ligne&lt;br /&gt;
            pm.notes = p.sans_nl(pm.notes)&lt;br /&gt;
            ret = ret .. pm.notes&lt;br /&gt;
            pred = true&lt;br /&gt;
        end&lt;br /&gt;
        -- sources si présentes&lt;br /&gt;
        if (pm.source ~= nil or pm.sources ~= nil) then&lt;br /&gt;
            if (pred) then&lt;br /&gt;
                ret = ret .. &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
            pred = true&lt;br /&gt;
            -- si on a source et sources on met tout dans sources&lt;br /&gt;
            if (pm.source ~= nil and pm.sources ~= nil) then&lt;br /&gt;
                pm.sources = pm.source .. &amp;quot; &amp;quot; .. pm.sources&lt;br /&gt;
                pm.source = nil&lt;br /&gt;
            end&lt;br /&gt;
            if (pm.sources ~= nil) then&lt;br /&gt;
                -- si présent on retire le saut de ligne&lt;br /&gt;
                pm.sources = p.sans_nl(pm.sources)&lt;br /&gt;
            end&lt;br /&gt;
            if (pm.source ~= nil) then&lt;br /&gt;
                -- si présent on retire le saut de ligne&lt;br /&gt;
                pm.source = p.sans_nl(pm.source)&lt;br /&gt;
            end&lt;br /&gt;
            local tmp&lt;br /&gt;
            if (pm.sources ~= nil) then&lt;br /&gt;
                tmp = &amp;quot;Sources : &amp;quot; .. pm.sources&lt;br /&gt;
            else&lt;br /&gt;
                tmp = &amp;quot;Source : &amp;quot; .. pm.source&lt;br /&gt;
            end&lt;br /&gt;
            if (parenthese) then&lt;br /&gt;
                ret = ret .. &amp;quot;(&amp;quot; .. tmp .. &amp;quot;)&amp;quot;&lt;br /&gt;
            else&lt;br /&gt;
                ret = ret .. tmp&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- on ajoute les erreurs si présentes&lt;br /&gt;
        if (erreurs ~= nil) then&lt;br /&gt;
            if (pred) then&lt;br /&gt;
                ret = ret .. &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
            ret = ret .. erreurs&lt;br /&gt;
        end&lt;br /&gt;
        -- on ferme la div des notes&lt;br /&gt;
        ret = ret .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- on ferme la div principale&lt;br /&gt;
    ret = ret .. &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- si namespace encyclo (ttl = 0) on insert les catégories d&amp;#039;erreur&lt;br /&gt;
    if (ttl == 0) then&lt;br /&gt;
        local i = 1&lt;br /&gt;
        while (p.liste_cats[i] ~= nil) do&lt;br /&gt;
            ret = ret .. &amp;quot;[[Catégorie:&amp;quot; .. p.categorie_erreur .. &amp;quot;|&amp;quot; .. p.liste_cats[i] .. &amp;quot;]]&amp;quot;&lt;br /&gt;
            i = i + 1&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- on retourne le résultat&lt;br /&gt;
    return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Fonction appelable depuis un modèle. Se contente d&amp;#039;appeler demographie_m() qui fait le&lt;br /&gt;
    traitement et est également appelable depuis un autre module&lt;br /&gt;
--]]&lt;br /&gt;
function p.demographie(frame)&lt;br /&gt;
    -- pour simplifier on stocke la frame et la pframe&lt;br /&gt;
    p.frame = frame&lt;br /&gt;
    p.pframe = frame:getParent()&lt;br /&gt;
&lt;br /&gt;
    -- pm est la table des parametres → on lit tous les paramètres référencés&lt;br /&gt;
    local pm = {}&lt;br /&gt;
    for k, v in pairs(p.parametres) do&lt;br /&gt;
        pm[v] = p.lit_parametre(k, true)&lt;br /&gt;
    end&lt;br /&gt;
    -- les paramètres numériques maintenant (les années)&lt;br /&gt;
    if require(&amp;#039;Module:Yesno&amp;#039;)(p.pframe.args.wikidata, p.pframe.args.wikidata) then&lt;br /&gt;
    	-- obtient les données de wikidata, mais les données locales auront priorité&lt;br /&gt;
    	p.valeur_wikidata(pm)&lt;br /&gt;
    	mw.logObject( pm, &amp;#039;pm&amp;#039; )&lt;br /&gt;
    end&lt;br /&gt;
    for k, v in pairs(p.pframe.args) do&lt;br /&gt;
        if (type(k) == &amp;quot;number&amp;quot;) then&lt;br /&gt;
            pm[k] = mw.text.trim(v)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    for k, v in pairs(p.frame.args) do&lt;br /&gt;
        if (type(k) == &amp;quot;number&amp;quot;) then&lt;br /&gt;
            pm[k] = mw.text.trim(v)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- on appelle (et on retourne) la fonction principale&lt;br /&gt;
    return p.demographie_m(pm)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return p -- on retourne le module&lt;/div&gt;</summary>
		<author><name>Infobox&gt;Zebulon84</name></author>
	</entry>
</feed>