<?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%3APopulation_de_France%2FDonn%C3%A9es</id>
	<title>Module:Population de France/Données - 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%3APopulation_de_France%2FDonn%C3%A9es"/>
	<link rel="alternate" type="text/html" href="https://wiki.aknotl.fr/index.php?title=Module:Population_de_France/Donn%C3%A9es&amp;action=history"/>
	<updated>2026-08-10T06:17:36Z</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:Population_de_France/Donn%C3%A9es&amp;diff=493&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:Population_de_France/Donn%C3%A9es&amp;diff=493&amp;oldid=prev"/>
		<updated>2021-07-24T10:39:31Z</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-492:rev-493 --&gt;
&lt;/table&gt;</summary>
		<author><name>Theau 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.aknotl.fr/index.php?title=Module:Population_de_France/Donn%C3%A9es&amp;diff=492&amp;oldid=prev</id>
		<title>Infobox&gt;Od1n : vraisemblablement une coquille</title>
		<link rel="alternate" type="text/html" href="https://wiki.aknotl.fr/index.php?title=Module:Population_de_France/Donn%C3%A9es&amp;diff=492&amp;oldid=prev"/>
		<updated>2019-08-10T21:19:38Z</updated>

		<summary type="html">&lt;p&gt;vraisemblablement une coquille&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
  Sous-module de Module:Tableau population d&amp;#039;article de commune de France contenant&lt;br /&gt;
  les fonctions de génération des notes associées à des données de population&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
p.outils = require(&amp;quot;Module:Population de France/Outils&amp;quot;)&lt;br /&gt;
p.constantes = require(&amp;quot;Module:Population de France/Constantes&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  fonction de chargement des données, via module de données&lt;br /&gt;
  retourne la structure de données (ou nil si échec de chargement)&lt;br /&gt;
  et en seconde valeur true si les données sont complètes, un numéro d&amp;#039;erreur sinon&lt;br /&gt;
--]]&lt;br /&gt;
function p.charge_donnees(nom)&lt;br /&gt;
	-- cache accès fonction (pour performances)&lt;br /&gt;
	local mwTrim = mw.text.trim&lt;br /&gt;
&lt;br /&gt;
	-- vérification&lt;br /&gt;
	if ((nom == nil) or (nom == &amp;quot;&amp;quot;)) then&lt;br /&gt;
		return nil, 1&lt;br /&gt;
	end&lt;br /&gt;
	local donnees = &amp;quot;Module:Données/&amp;quot; .. nom .. &amp;quot;/évolution population&amp;quot;&lt;br /&gt;
	-- données présentes ?&lt;br /&gt;
	local etat, data = pcall(require, donnees)&lt;br /&gt;
	if (etat == false) then&lt;br /&gt;
		return nil, 2&lt;br /&gt;
	end&lt;br /&gt;
	data.module = donnees&lt;br /&gt;
&lt;br /&gt;
	-- on vérifie la présence des données nécessaires&lt;br /&gt;
	-- données communes&lt;br /&gt;
	if ((data[&amp;quot;nom&amp;quot;] == nil) or (data[&amp;quot;division&amp;quot;] == nil)) then&lt;br /&gt;
		return data, 3&lt;br /&gt;
	end&lt;br /&gt;
	-- division prise en charge ?&lt;br /&gt;
	if (p.constantes.divisions[data[&amp;quot;division&amp;quot;]] == nil) then&lt;br /&gt;
		return data, 4&lt;br /&gt;
	end&lt;br /&gt;
	-- superficie présente ?&lt;br /&gt;
	if ((data[&amp;quot;superficie&amp;quot;] == nil) or (tonumber(data[&amp;quot;superficie&amp;quot;]) == nil)) then&lt;br /&gt;
		return data, 4&lt;br /&gt;
	end&lt;br /&gt;
	data[&amp;quot;superficie&amp;quot;] = tonumber(data[&amp;quot;superficie&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
	-- données spécifiques (selon la division)&lt;br /&gt;
	-- spécifiques aux communes&lt;br /&gt;
	if ((data[&amp;quot;division&amp;quot;] == &amp;quot;commune&amp;quot;) or (data[&amp;quot;division&amp;quot;] == &amp;quot;commune en DROM&amp;quot;) or&lt;br /&gt;
		(data[&amp;quot;division&amp;quot;] == &amp;quot;commune en COM1&amp;quot;) or (data[&amp;quot;division&amp;quot;] == &amp;quot;commune nouvelle&amp;quot;) or&lt;br /&gt;
		(data[&amp;quot;division&amp;quot;] == &amp;quot;commune en COM2&amp;quot;) or (data[&amp;quot;division&amp;quot;] == &amp;quot;commune en COM3&amp;quot;) or&lt;br /&gt;
		(data[&amp;quot;division&amp;quot;] == &amp;quot;commune déléguée&amp;quot;) or (data[&amp;quot;division&amp;quot;] == &amp;quot;ancienne commune&amp;quot;) or&lt;br /&gt;
		(data[&amp;quot;division&amp;quot;] == &amp;quot;commune associée&amp;quot;)) then&lt;br /&gt;
		if ((data[&amp;quot;nom-dep&amp;quot;] == nil) and (data[&amp;quot;division&amp;quot;] ~= &amp;quot;commune en DROM&amp;quot;)) then&lt;br /&gt;
			return data, 5  -- obligatoire, sauf pour DROM&lt;br /&gt;
		end&lt;br /&gt;
		if (data[&amp;quot;insee&amp;quot;] == nil) then&lt;br /&gt;
			return data, 5&lt;br /&gt;
		end&lt;br /&gt;
		if (data[&amp;quot;recens-prem&amp;quot;] == nil) then&lt;br /&gt;
			return data, 5&lt;br /&gt;
		end&lt;br /&gt;
		if (data[&amp;quot;recens-prem&amp;quot;] ~= &amp;quot;annuel&amp;quot;) then&lt;br /&gt;
			if (tonumber(data[&amp;quot;recens-prem&amp;quot;]) == nil) then&lt;br /&gt;
				return data, 5  -- vaut annuel ou une année&lt;br /&gt;
			end&lt;br /&gt;
			data[&amp;quot;recens-prem&amp;quot;] = tonumber(data[&amp;quot;recens-prem&amp;quot;]) -- en cas de &amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- pour les autres il faut un recens-prem = annuel&lt;br /&gt;
		data[&amp;quot;recens-prem&amp;quot;] = &amp;quot;annuel&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	-- À FAIRE pour les autres&lt;br /&gt;
	&lt;br /&gt;
	-- on &amp;quot;calcule&amp;quot; les données qui peuvent être reconstruites&lt;br /&gt;
	if (data[&amp;quot;nom-wp&amp;quot;] == nil) then&lt;br /&gt;
		-- reconstruction du wikilien&lt;br /&gt;
		local nom = data.nom:gsub( &amp;#039; %(.+&amp;#039;, &amp;#039;&amp;#039; )&lt;br /&gt;
		if nom == data.nom then&lt;br /&gt;
			data[&amp;quot;nom-wp&amp;quot;] = &amp;#039;[[&amp;#039; .. nom .. &amp;#039;]]&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			data[&amp;quot;nom-wp&amp;quot;] = &amp;#039;[[&amp;#039; .. data.nom .. &amp;#039;|&amp;#039; .. nom .. &amp;#039;]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- le type (permet de regrouper toutes les communes)&lt;br /&gt;
	data[&amp;quot;type&amp;quot;] = p.constantes.divisions[data[&amp;quot;division&amp;quot;]]&lt;br /&gt;
	-- données calculées&lt;br /&gt;
	local nb = 0  -- nombre d&amp;#039;années dans les données&lt;br /&gt;
	local mmin = -1  -- min/max des années avec référence&lt;br /&gt;
	local mmax = -1&lt;br /&gt;
	local pmin = -1  -- population min/max&lt;br /&gt;
	local pmax = -1&lt;br /&gt;
	local premier = -1  -- première et dernière année&lt;br /&gt;
	local dernier = -1&lt;br /&gt;
	-- on reconstruit les valeurs min/max/nb&lt;br /&gt;
	for annee, pop in pairs(data) do&lt;br /&gt;
		if (type(annee) == &amp;quot;number&amp;quot;) then&lt;br /&gt;
			nb = nb + 1&lt;br /&gt;
			if (pop[&amp;quot;ref&amp;quot;] ~= nil) then&lt;br /&gt;
				if (annee &amp;gt; mmax) then&lt;br /&gt;
					mmax = annee&lt;br /&gt;
				end&lt;br /&gt;
				if ((mmin == -1) or (annee &amp;lt; mmin)) then&lt;br /&gt;
					mmin = annee&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			vpop = tonumber(mwTrim(pop[&amp;quot;pop&amp;quot;]))&lt;br /&gt;
			if (vpop &amp;gt; pmax) then&lt;br /&gt;
				pmax = vpop&lt;br /&gt;
			end&lt;br /&gt;
			if (vpop &amp;gt; 0) then -- on ne compte pas &amp;quot;-1&amp;quot; qui indique &amp;quot;pas de valeur&amp;quot;&lt;br /&gt;
				if ((pmin == -1) or (vpop &amp;lt; pmin)) then&lt;br /&gt;
					pmin = vpop&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			-- idem premier/dernier&lt;br /&gt;
			if (annee &amp;gt; dernier) then&lt;br /&gt;
				dernier = annee&lt;br /&gt;
			end&lt;br /&gt;
			if ((premier == -1) or (annee &amp;lt; premier)) then&lt;br /&gt;
				premier = annee&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if (mmin ~= -1) then&lt;br /&gt;
		data[&amp;quot;minref&amp;quot;] = mmin&lt;br /&gt;
	end&lt;br /&gt;
	if (mmax ~= -1) then&lt;br /&gt;
		data[&amp;quot;maxref&amp;quot;] = mmax&lt;br /&gt;
	end&lt;br /&gt;
	if (pmin ~= -1) then&lt;br /&gt;
		data[&amp;quot;popmin&amp;quot;] = pmin&lt;br /&gt;
	end&lt;br /&gt;
	if (pmax ~= -1) then&lt;br /&gt;
		data[&amp;quot;popmax&amp;quot;] = pmax&lt;br /&gt;
	end&lt;br /&gt;
	if (premier ~= -1) then&lt;br /&gt;
		data[&amp;quot;premier&amp;quot;] = premier&lt;br /&gt;
	end&lt;br /&gt;
	if (dernier ~= -1) then&lt;br /&gt;
		data[&amp;quot;dernier&amp;quot;] = dernier&lt;br /&gt;
	end&lt;br /&gt;
	data[&amp;quot;nombre&amp;quot;] = nb-1&lt;br /&gt;
&lt;br /&gt;
	-- on retourne les données&lt;br /&gt;
	return data, true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Calcule la variation de population (en %, signé, arrondi à 2 digits)&lt;br /&gt;
  sur les 5 dernières années, ou nil si pas trouvé / problème&lt;br /&gt;
--]]&lt;br /&gt;
function p.variation(data)&lt;br /&gt;
	-- vérifications&lt;br /&gt;
	if (data == nil) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if ((data[&amp;quot;dernier&amp;quot;] == nil) or (data[data[&amp;quot;dernier&amp;quot;]] == nil)) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	-- s&amp;#039;il n&amp;#039;y a pas 5 ans, on prend le plus ancien&lt;br /&gt;
	local cible = data[&amp;quot;dernier&amp;quot;]-5&lt;br /&gt;
	if (data[cible] == nil) then&lt;br /&gt;
		return nil&lt;br /&gt;
		-- désactivé&lt;br /&gt;
		-- cible = data[&amp;quot;premier&amp;quot;]&lt;br /&gt;
	end&lt;br /&gt;
	return p.outils.round(100*(data[data[&amp;quot;dernier&amp;quot;]][&amp;quot;pop&amp;quot;] - data[cible][&amp;quot;pop&amp;quot;]) /&lt;br /&gt;
		                  data[cible][&amp;quot;pop&amp;quot;], 2), cible&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Utilise la fonction précédente pour créer la phrase &amp;quot;en augmentation/diminution de X % par rapport à NNN&amp;quot;&lt;br /&gt;
  retourne en second paramètre +1 si augmentation, -1 si réduction, 0 si stagnation&lt;br /&gt;
--]]&lt;br /&gt;
function p.variation_texte(data)&lt;br /&gt;
	local delta, cible = p.variation(data)&lt;br /&gt;
	if (delta ~= nil) then&lt;br /&gt;
		if (delta &amp;lt; 0) then&lt;br /&gt;
			return &amp;quot;en diminution de &amp;quot; .. mw.language.getContentLanguage():formatNum(-delta) .. &amp;quot; % par rapport à &amp;quot; .. cible, -1&lt;br /&gt;
		elseif (delta &amp;gt; 0) then&lt;br /&gt;
			return &amp;quot;en augmentation de &amp;quot; .. mw.language.getContentLanguage():formatNum(delta) .. &amp;quot; % par rapport à &amp;quot; .. cible, 1&lt;br /&gt;
		else -- égal&lt;br /&gt;
			return &amp;quot;en stagnation par rapport à &amp;quot; .. cible, 0&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;
--[[&lt;br /&gt;
  Retourne une table contenant { année, population } correspondant&lt;br /&gt;
  aux données les plus récentes pour cette commune&lt;br /&gt;
--]]&lt;br /&gt;
function p.valeur_recente(data)&lt;br /&gt;
	if ((data[&amp;quot;dernier&amp;quot;] == nil) or (data[data[&amp;quot;dernier&amp;quot;]][&amp;quot;pop&amp;quot;] == nil)) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	return { data[&amp;quot;dernier&amp;quot;], data[data[&amp;quot;dernier&amp;quot;]][&amp;quot;pop&amp;quot;] }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Infobox&gt;Od1n</name></author>
	</entry>
</feed>