{"id":13429,"date":"2026-11-05T01:08:07","date_gmt":"2026-11-05T01:08:07","guid":{"rendered":"https:\/\/aiper.com\/blogs\/?page_id=13429"},"modified":"2026-11-12T04:43:11","modified_gmt":"2026-11-12T04:43:11","slug":"calculateur-chaux-pelouse","status":"publish","type":"page","link":"https:\/\/aiper.com\/blogs\/fr\/calculateur-chaux-pelouse\/","title":{"rendered":"Calculateur de chaux pour pelouse"},"content":{"rendered":"\n<style>#lawn-tool{max-width:960px;margin:24px auto;color:#243746}#lawn-tool *{box-sizing:border-box}#lawn-tool .fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:18px}#lawn-tool label{display:block;font-weight:600}#lawn-tool input,#lawn-tool textarea{display:block;width:100%;padding:12px;border:1px solid #9aacb5;border-radius:8px;margin-top:6px;font:inherit}#lawn-tool button{padding:12px 20px;margin:18px 10px 10px 0;border:2px solid #1ecad3;border-radius:8px;background:#1ecad3;color:#1a202c;cursor:pointer;font:inherit}#lawn-tool button[type=reset],#lawn-tool #copy-area{background:white}#lawn-tool button:focus-visible,#lawn-tool input:focus-visible,#lawn-tool textarea:focus-visible{outline:3px solid #9486f7;outline-offset:3px;color:#1a202c}#lawn-tool button:active{color:#1a202c}#lawn-tool .result{background:#edf7f8;border-left:4px solid #1ecad3;padding:18px;margin:16px 0;overflow-wrap:anywhere}#lawn-tool svg{width:100%;height:300px;border:1px solid #b8cbd2}#lawn-tool a{color:#08778b}<\/style><div id=\"lawn-tool\" lang=\"fr\"><p>Convertissez une recommandation d\u2019analyse de sol en quantit\u00e9 de produit avec des valeurs neutralisantes comparables.<\/p><form data-mode=\"lime\"><div class=\"fields\"><label>Surface de pelouse (m\u00b2)<input name=\"area\" type=\"number\" min=\"0\" step=\"any\" required value=\"100\"><\/label><label>Dose recommand\u00e9e par l\u2019analyse (kg par 100 m\u00b2)<input name=\"lab\" type=\"number\" min=\"0\" step=\"any\" required value=\"\"><\/label><label>Valeur neutralisante de r\u00e9f\u00e9rence de l\u2019analyse (%)<input name=\"reference\" type=\"number\" min=\"0\" step=\"any\" required value=\"100\"><\/label><label>Valeur neutralisante du produit sur la m\u00eame base (%)<input name=\"product\" type=\"number\" min=\"0\" step=\"any\" required value=\"90\"><\/label><label>Masse de votre sac (kg)<input name=\"bag\" type=\"number\" min=\"0\" step=\"any\" required value=\"20\"><\/label><label>Limite par application selon l\u2019\u00e9tiquette ou le laboratoire (kg par 100 m\u00b2 ; 0 sans fractionnement)<input name=\"cap\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><\/div><button type=\"submit\">Calculer<\/button><button type=\"reset\">R\u00e9initialiser<\/button><\/form><div class=\"result\" role=\"status\" aria-live=\"polite\">Saisissez vos mesures et lancez le calcul.<\/div><h2>M\u00e9thode de calcul<\/h2><p>Utilisez une analyse de sol r\u00e9cente ; la seule diff\u00e9rence de pH ne permet pas de calculer une dose. Dose de produit = recommandation \u00d7 valeur de r\u00e9f\u00e9rence \u00f7 valeur du produit. Comparez des pourcentages sur la m\u00eame base : ECCE avec ECCE ou CCE avec CCE. V\u00e9rifiez si la recommandation tient d\u00e9j\u00e0 compte du produit. Le CCE seul ne d\u00e9crit ni la finesse ni la vitesse d\u2019action. Pour un ENP en livres par tonne ou une base incertaine, demandez au laboratoire des pourcentages compatibles. Les sacs sont arrondis pour l\u2019achat uniquement ; appliquez la masse calcul\u00e9e. La limite fournie par l\u2019\u00e9tiquette ou le laboratoire permet d\u2019estimer des fractions \u00e9gales. Respectez leurs d\u00e9lais et consignes d\u2019incorporation ; aucun intervalle n\u2019est invent\u00e9. 1 lb par 1 000 pieds carr\u00e9s vaut environ 0,48824 kg par 100 m\u00b2.<\/p><h2>Unit\u00e9s et donn\u00e9es<\/h2><p>Remplacez les exemples par vos mesures. 1 pied = 0,3048 m ; 1 pied carr\u00e9 = 0,09290304 m\u00b2 ; 1 pouce = 25,4 mm ; 1 gallon am\u00e9ricain = 3,785411784 litres. Utilisez la m\u00eame devise pour tous les prix. Un prix nul masque le budget facultatif.<\/p><h2>Guides pour la pelouse<\/h2><ul><li><a href=\"https:\/\/aiper.com\/blogs\/fr\/pelouse-a-t-elle-besoin-de-chaux-ph\/\">Votre pelouse a-t-elle besoin de chaux ? (et le r\u00f4le du pH)<\/a><\/li><li><a href=\"https:\/\/aiper.com\/blogs\/fr\/comment-corriger-sol-acide\/\">Comment corriger un sol acide : dosage de chaux et bon moment<\/a><\/li><\/ul><h2>Autres outils pour la pelouse<\/h2><p><a href=\"https:\/\/aiper.com\/blogs\/fr\/calculateur-gazon-en-rouleaux\/\">calculateur de gazon en rouleaux<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/fr\/calculateur-surface-pelouse\/\">calculateur de surface de pelouse<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/fr\/calculateur-arrosage-pelouse-duree\/\">calculateur d\u2019arrosage et de dur\u00e9e des arroseurs<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/fr\/calculateur-zones-arrosage\/\">calculateur de zones d\u2019arrosage<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/fr\/calculateur-cout-tonte-pelouse\/\">calculateur de co\u00fbt de tonte<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/fr\/calculateur-temps-tonte\/\">calculateur de temps de tonte<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/fr\/calculateur-irrigation-goutte-a-goutte\/\">calculateur d\u2019irrigation goutte \u00e0 goutte<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/fr\/calculateur-semences-gazon\/\">calculateur de semences de gazon<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/fr\/calculateur-engrais-pelouse\/\">calculateur d\u2019engrais pour pelouse<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/fr\/outils\/\">Outils<\/a><\/p><p><a href=\"https:\/\/content.ces.ncsu.edu\/soil-acidity-and-liming-basic-information-for-farmers-and-gardeners\">R\u00e9f\u00e9rence technique<\/a><\/p><p>1 lb = 0.45359237 kg; 1 mph = 1.609344 km\/h; 1 in = 2.54 cm.<\/p><\/div><script>\/* SI units internally; no external services or weather assumptions. *\/\nfunction calculateLawn(mode,v){\n const n=k=>{if(v[k]===undefined||String(v[k]).trim()==='')throw Error(\"Saisissez toutes les mesures requises.\");let x=Number(v[k]);if(!Number.isFinite(x)||x<0)throw Error(\"Utilisez des valeurs finies et positives ou nulles.\");return x;};\n const p=k=>{let x=n(k);if(x<=0)throw Error(\"Cette mesure doit \u00eatre sup\u00e9rieure \u00e0 z\u00e9ro.\");return x;};\n const percent=k=>{let x=n(k);if(x>=100)throw Error(\"Le pourcentage doit \u00eatre inf\u00e9rieur \u00e0 100.\");return x\/100;};\n let o;\n if(mode==='sod'){\n  let a=p('area'),w=n('waste');if(w>100)throw Error(\"Les pertes doivent \u00eatre comprises entre 0 et 100 %.\");\n  let q=a*(1+w\/100);o={required:q,pieces:Math.ceil(q\/p('piece')-1e-10),pallets:Math.ceil(q\/p('pallet')-1e-10)};\n  if(n('price')>0)o.budget=q*n('price');\n }else if(mode==='watering'){\n  let depth=Math.max(0,n('target')-n('rain')),minutes=depth\/p('rate')*60,water=p('area')*depth;\n  o={depth,minutes,litres:water};if(n('price')>0)o.budget=water\/1000*n('price');\n }else if(mode==='zone'){\n  let heads=p('heads');if(!Number.isInteger(heads))throw Error(\"Le nombre d\u2019arroseurs doit \u00eatre entier.\");\n  let capacity=Math.floor(p('flow')*(1-percent('reserve'))\/p('nozzle'));\n  if(p('pressure')<p('required'))throw Error(\"La pression de service est inf\u00e9rieure au minimum requis.\");\n  if(capacity<1)throw Error(\"Le d\u00e9bit ne suffit pas pour une buse avec cette r\u00e9serve.\");\n  o={capacity,zones:Math.ceil(heads\/capacity)};\n }else if(mode==='area'){\n  let polygons=JSON.parse(v.polygons);if(!Array.isArray(polygons)||!polygons.length)throw Error(\"Saisissez les polygones mesur\u00e9s.\");\n  let total=0;\n  for(let poly of polygons){\n   let pts=poly.points;if(!Array.isArray(pts)||pts.length<3)throw Error(\"Chaque polygone exige au moins trois sommets.\");\n   for(let pt of pts)if(!Array.isArray(pt)||pt.length!==2||!pt.every(x=>typeof x==='number'&&Number.isFinite(x)))throw Error(\"Chaque sommet exige deux coordonn\u00e9es finies.\");\n   \/\/ Reject crossings, touching edges, repeated vertices and degenerate edges.\n   let cross=(a,b,c)=>(b[0]-a[0])*(c[1]-a[1])-(b[1]-a[1])*(c[0]-a[0]);\n   let on=(a,b,c)=>Math.abs(cross(a,b,c))<1e-9&&c[0]>=Math.min(a[0],b[0])-1e-9&&c[0]<=Math.max(a[0],b[0])+1e-9&&c[1]>=Math.min(a[1],b[1])-1e-9&&c[1]<=Math.max(a[1],b[1])+1e-9;\n   for(let i=0;i<pts.length;i++)for(let j=i+1;j<pts.length;j++){\n    if(pts[i][0]===pts[j][0]&&pts[i][1]===pts[j][1])throw Error(\"Ne r\u00e9p\u00e9tez pas les sommets.\");\n    if(j===i+1||i===0&&j===pts.length-1)continue;\n    let a=pts[i],b=pts[(i+1)%pts.length],c=pts[j],d=pts[(j+1)%pts.length];\n    if(cross(a,b,c)*cross(a,b,d)<0&&cross(c,d,a)*cross(c,d,b)<0||on(a,b,c)||on(a,b,d)||on(c,d,a)||on(c,d,b))throw Error(\"Les c\u00f4t\u00e9s ne doivent ni se croiser ni se toucher.\");\n   }\n   let a=Math.abs(pts.reduce((s,p,i)=>s+p[0]*pts[(i+1)%pts.length][1]-pts[(i+1)%pts.length][0]*p[1],0))\/2;\n   if(a<=0)throw Error(\"La surface du polygone doit \u00eatre positive.\");\n   if(poly.exclude!==undefined&&typeof poly.exclude!=='boolean')throw Error(\"L\u2019exclusion doit \u00eatre vraie ou fausse.\");\n   total+=poly.exclude?-a:a;\n  }\n  if(total<=0)throw Error(\"La surface nette doit \u00eatre positive.\");o={area:total,sqft:total\/0.09290304};\n }else if(mode==='mowing-cost'){\n  let area=p('area'),frequency=p('frequency'),weeks=p('weeks');\n  if(frequency>7||weeks>52.1775)throw Error(\"Utilisez au maximum 7 passages par semaine et 52,1775 semaines par an.\");\n  let obstacle=n('obstacle');if(obstacle>100)throw Error(\"La majoration doit \u00eatre comprise entre 0 et 100 %.\");\n  let visit=Math.max(n('minimum'),n('base')+area\/100*n('rate')+n('edging'))*(1+obstacle\/100),visits=Math.ceil(frequency*weeks-1e-10);\n  o={visits};if(visit>0)Object.assign(o,{visit,month:visit*frequency*52.1775\/12,season:visit*visits});\n }else if(mode==='mowing-time'){\n  let area=p('area'),width=p('width')\/100,speed=p('speed')*1000,overlap=percent('overlap'),eff=p('efficiency')\/100;\n  if(eff>1)throw Error(\"L\u2019efficacit\u00e9 ne doit pas d\u00e9passer 100 %.\");\n  let productivity=width*(1-overlap)*speed*eff,minutes=area\/productivity*60;\n  o={effective:width*(1-overlap)*100,productivity,minutes,total:minutes+n('extra')};\n }else if(mode==='lime'){\n  let area=p('area'),rate=n('lab'),reference=p('reference'),product=p('product');\n  if(reference>200||product>200)throw Error(\"Les valeurs neutralisantes doivent \u00eatre des pourcentages au plus \u00e9gaux \u00e0 200.\");\n  let adjusted=rate*reference\/product,total=area\/100*adjusted;\n  o={adjusted,total,bags:Math.ceil(total\/p('bag')-1e-10)};\n  let cap=n('cap');if(cap>0){let passes=Math.max(1,Math.ceil(adjusted\/cap-1e-10));o.passes=total>0?passes:0;o.perpass=total>0?total\/passes:0;}\n }else if(mode==='drip'){\n  let length=p('length'),spacing=p('spacing'),lines=p('lines');\n  if(!Number.isInteger(lines))throw Error(\"Le nombre de lignes doit \u00eatre entier.\");\n  \/\/ Assumes the first emitter is one spacing from the inlet, not at x=0.\n  let emitters=Math.floor(length\/spacing+1e-10);if(emitters<1)throw Error(\"Chaque ligne doit comporter au moins un goutteur.\");\n  let flow=emitters*p('emitter'),capacity=p('supply')*60*(1-percent('reserve')),linesPerZone=Math.floor(capacity\/flow);\n  if(linesPerZone<1)throw Error(\"Le d\u00e9bit ne suffit pas pour une ligne compl\u00e8te.\");\n  let minutes=n('litres')\/p('emitter')*60,zones=Math.ceil(lines\/linesPerZone);\n  o={emitters,totalemitters:emitters*lines,flow:flow*lines\/60,linesperzone:linesPerZone,zones,minutes,totalminutes:minutes*zones,water:emitters*lines*n('litres')};\n }else throw Error(\"Calculateur inconnu.\");\n if(Object.values(o).some(x=>!Number.isFinite(x)))throw Error(\"Les mesures d\u00e9passent la plage prise en charge.\");\n return o;\n}\nif(typeof module!=='undefined')module.exports=calculateLawn;\n\n(()=>{const root=document.getElementById('lawn-tool'),form=root.querySelector('form'),result=root.querySelector('.result'),labels={\"adjusted\": \"Dose de produit ajust\u00e9e (kg par 100 m\u00b2)\", \"total\": \"Quantit\u00e9 totale de produit (kg)\", \"bags\": \"Sacs entiers\", \"passes\": \"Nombre minimal d\u2019applications selon votre limite\", \"perpass\": \"Produit par application \u00e9gale sur toute la surface (kg)\"};let last=null;\nfunction polygons(text){return text.trim().split(\/\\n\\s*\\n\/).map(block=>{let rows=block.trim().split(\/\\n\/),exclude=\/^[-\u2013\u2014]$\/.test(rows[0].trim());if(exclude)rows.shift();return {exclude,points:rows.map(row=>{let parts=row.trim().split(\/\\s*,\\s*\/);if(parts.length!==2||parts.some(p=>!p.trim()))throw Error(\"Saisissez une coordonn\u00e9e x,y par ligne.\");return parts.map(Number);})};});}\nform.addEventListener('submit',e=>{e.preventDefault();last=null;try{let v=Object.fromEntries(new FormData(form));let polys;if(form.dataset.mode==='area'){polys=polygons(v.coordinates);v.polygons=JSON.stringify(polys);}let out=calculateLawn(form.dataset.mode,v);result.replaceChildren();for(let [key,value]of Object.entries(out)){let p=document.createElement('p');p.textContent=labels[key]+': '+value.toLocaleString(\"fr\",{maximumFractionDigits:3});result.append(p);}if(polys){let svg=root.querySelector('#area-diagram'),all=polys.flatMap(p=>p.points),xs=all.map(p=>p[0]),ys=all.map(p=>p[1]),minx=Math.min(...xs),miny=Math.min(...ys),w=Math.max(...xs)-minx,h=Math.max(...ys)-miny;svg.replaceChildren();svg.setAttribute('viewBox',[minx-1,miny-1,w+2,h+2].join(' '));for(let poly of polys){let shape=document.createElementNS('http:\/\/www.w3.org\/2000\/svg','polygon');shape.setAttribute('points',poly.points.map(p=>p.join(',')).join(' '));shape.setAttribute('fill',poly.exclude?'#fff':'#b4e8c1');shape.setAttribute('stroke','#147e91');shape.setAttribute('stroke-width',Math.max(w,h)\/200);svg.append(shape);}last=out.area;root.querySelector('#copy-area').disabled=false;}}\ncatch(err){result.textContent=err.message;if(root.querySelector('#copy-area'))root.querySelector('#copy-area').disabled=true;}});\nform.addEventListener('reset',()=>{last=null;result.textContent=\"Saisissez vos mesures et lancez le calcul.\";let svg=root.querySelector('#area-diagram');if(svg)svg.replaceChildren();let b=root.querySelector('#copy-area');if(b)b.disabled=true;});\nlet copy=root.querySelector('#copy-area');if(copy)copy.addEventListener('click',async()=>{if(last===null)return;try{await navigator.clipboard.writeText(String(last));result.append(document.createTextNode(\" Surface copi\u00e9e en m\u00b2.\"));}catch(e){result.append(document.createTextNode(\" Copier la surface manuellement : \"+last+' m\u00b2.'));}});\n})();\n(()=>{let r=document.getElementById('lawn-tool');r.querySelector('form').addEventListener('input',()=>{r.querySelector('.result').textContent=\"Saisissez vos mesures et lancez le calcul.\";let b=r.querySelector('#copy-area');if(b)b.disabled=true;let s=r.querySelector('#area-diagram');if(s)s.replaceChildren();});})();<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Convertissez une recommandation d\u2019analyse de sol en quantit\u00e9 de produit avec des valeurs neutralisantes comparables. Surface de pelouse (m\u00b2)Dose recommand\u00e9e par l\u2019analyse (kg par 100 m\u00b2)Valeur neutralisante de r\u00e9f\u00e9rence de l\u2019analyse (%)Valeur neutralisante du produit sur la m\u00eame base (%)Masse de votre sac (kg)Limite par application selon l\u2019\u00e9tiquette ou le laboratoire (kg par 100 m\u00b2 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"aiper_reading_time":2,"aiper_last_reviewed":"","aiper_reviewer":0,"aiper_related_ids":[],"aiper_layout":"","footnotes":""},"class_list":["post-13429","page","type-page","status-publish","hentry"],"lang":"fr","translations":{"fr":13429,"es":13430,"de":13428,"en":13427},"_links":{"self":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/13429","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/comments?post=13429"}],"version-history":[{"count":1,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/13429\/revisions"}],"predecessor-version":[{"id":13445,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/13429\/revisions\/13445"}],"wp:attachment":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/media?parent=13429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}