{"id":2928486,"date":"2026-07-04T22:55:33","date_gmt":"2026-07-04T19:55:33","guid":{"rendered":"https:\/\/tpiexports.com\/calculateur-de-cartons-et-de-palettes-de-carrelage-en-gros\/"},"modified":"2026-08-02T22:24:44","modified_gmt":"2026-08-02T19:24:44","slug":"calculateur-de-cartons-et-de-palettes-de-carrelage-en-gros","status":"publish","type":"post","link":"https:\/\/tpiexports.com\/fr\/calculateur-de-cartons-et-de-palettes-de-carrelage-en-gros\/","title":{"rendered":"Calculateur de cartons et de palettes de carrelage en gros"},"content":{"rendered":"\n<article class=\"tpi-pallet-calculator\" data-tpi-pallet-calculator=\"\">\n  <style>\n    .tpi-pallet-calculator,\n    .tpi-pallet-calculator * {\n      box-sizing: border-box;\n    }\n\n    .tpi-pallet-calculator {\n      --tpi-red: #f22929;\n      --tpi-red-dark: #cc1f1f;\n      --tpi-black: #080808;\n      --tpi-gray: #69727d;\n      --tpi-line: #eeeeee;\n      --tpi-soft: #f7f7f7;\n      --tpi-white: #ffffff;\n      color: var(--tpi-black);\n      background: var(--tpi-white);\n      font-family: Inter, Arial, sans-serif;\n      line-height: 1.55;\n      max-width: 1180px;\n      margin: 0 auto;\n      padding: 34px 18px 44px;\n    }\n\n    .tpi-pallet-calculator h1,\n    .tpi-pallet-calculator h2,\n    .tpi-pallet-calculator h3,\n    .tpi-pallet-calculator p {\n      margin-top: 0;\n    }\n\n    .tpi-pallet-calculator a {\n      color: var(--tpi-red);\n      text-decoration: none;\n      font-weight: 700;\n    }\n\n    .tpi-pallet-calculator a:hover {\n      color: var(--tpi-red-dark);\n      text-decoration: underline;\n    }\n\n    .tpi-pallet-calculator__hero {\n      border-bottom: 1px solid var(--tpi-line);\n      padding-bottom: 24px;\n      margin-bottom: 26px;\n    }\n\n    .tpi-pallet-calculator__eyebrow {\n      color: var(--tpi-red);\n      display: block;\n      font-size: 13px;\n      font-weight: 800;\n      letter-spacing: 0;\n      margin-bottom: 8px;\n      text-transform: uppercase;\n    }\n\n    .tpi-pallet-calculator h1 {\n      color: var(--tpi-black);\n      font-size: clamp(34px, 5vw, 58px);\n      line-height: 1.02;\n      letter-spacing: 0;\n      margin-bottom: 14px;\n    }\n\n    .tpi-pallet-calculator__intro {\n      color: #242424;\n      font-size: 17px;\n      max-width: 860px;\n      margin-bottom: 18px;\n    }\n\n    .tpi-pallet-calculator__links {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 10px;\n      margin-top: 18px;\n    }\n\n    .tpi-pallet-calculator__links a {\n      border: 1px solid var(--tpi-line);\n      border-radius: 5px;\n      color: var(--tpi-black);\n      display: inline-flex;\n      font-size: 14px;\n      padding: 9px 12px;\n      text-decoration: none;\n    }\n\n    .tpi-pallet-calculator__links a:hover {\n      border-color: var(--tpi-red);\n      color: var(--tpi-red);\n      text-decoration: none;\n    }\n\n    .tpi-pallet-calculator__tool {\n      align-items: stretch;\n      display: grid;\n      gap: 22px;\n      grid-template-columns: minmax(0, 1.1fr) minmax(300px, 0.9fr);\n      margin: 28px 0 34px;\n    }\n\n    .tpi-pallet-calculator__panel,\n    .tpi-pallet-calculator__result {\n      border: 1px solid var(--tpi-line);\n      border-radius: 5px;\n      background: var(--tpi-white);\n    }\n\n    .tpi-pallet-calculator__panel {\n      padding: 22px;\n    }\n\n    .tpi-pallet-calculator__result {\n      display: flex;\n      flex-direction: column;\n      padding: 22px;\n    }\n\n    .tpi-pallet-calculator__panel h3,\n    .tpi-pallet-calculator__result h3 {\n      font-size: 23px;\n      line-height: 1.18;\n      margin-bottom: 8px;\n    }\n\n    .tpi-pallet-calculator__note {\n      color: var(--tpi-gray);\n      font-size: 14px;\n      margin-bottom: 18px;\n    }\n\n    .tpi-pallet-calculator__form {\n      display: grid;\n      gap: 16px;\n    }\n\n    .tpi-pallet-calculator__grid {\n      display: grid;\n      gap: 14px;\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n    }\n\n    .tpi-pallet-calculator__field {\n      display: grid;\n      gap: 7px;\n    }\n\n    .tpi-pallet-calculator label {\n      color: #1b1b1b;\n      font-size: 13px;\n      font-weight: 800;\n    }\n\n    .tpi-pallet-calculator input,\n    .tpi-pallet-calculator select {\n      appearance: none;\n      background: var(--tpi-white);\n      border: 1px solid var(--tpi-line);\n      border-radius: 5px;\n      color: var(--tpi-black);\n      font: inherit;\n      min-height: 46px;\n      padding: 10px 12px;\n      width: 100%;\n    }\n\n    .tpi-pallet-calculator input:focus,\n    .tpi-pallet-calculator select:focus {\n      border-color: var(--tpi-red);\n      box-shadow: 0 0 0 3px rgba(242, 41, 41, 0.12);\n      outline: none;\n    }\n\n    .tpi-pallet-calculator__hint {\n      color: var(--tpi-gray);\n      font-size: 12px;\n    }\n\n    .tpi-pallet-calculator__warning {\n      background: #fff4f4;\n      border: 1px solid rgba(242, 41, 41, 0.28);\n      border-radius: 5px;\n      color: #9d1a1a;\n      display: none;\n      font-size: 14px;\n      margin: 0;\n      padding: 10px 12px;\n    }\n\n    .tpi-pallet-calculator__warning.is-visible {\n      display: block;\n    }\n\n    .tpi-pallet-calculator__metrics {\n      display: grid;\n      gap: 12px;\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      margin: 14px 0 18px;\n    }\n\n    .tpi-pallet-calculator__metric {\n      background: var(--tpi-soft);\n      border: 1px solid var(--tpi-line);\n      border-radius: 5px;\n      min-height: 102px;\n      padding: 14px;\n    }\n\n    .tpi-pallet-calculator__metric span {\n      color: var(--tpi-gray);\n      display: block;\n      font-size: 12px;\n      font-weight: 800;\n      margin-bottom: 5px;\n      text-transform: uppercase;\n    }\n\n    .tpi-pallet-calculator__metric strong {\n      color: var(--tpi-black);\n      display: block;\n      font-size: 28px;\n      line-height: 1.1;\n    }\n\n    .tpi-pallet-calculator__metric small {\n      color: var(--tpi-gray);\n      display: block;\n      font-size: 12px;\n      margin-top: 4px;\n    }\n\n    .tpi-pallet-calculator__recommendation {\n      border-left: 4px solid var(--tpi-red);\n      background: var(--tpi-soft);\n      border-radius: 3px;\n      color: #202020;\n      font-size: 14px;\n      margin-bottom: 14px;\n      padding: 11px 12px;\n    }\n\n    .tpi-pallet-calculator__quote {\n      background: #111111;\n      border-radius: 5px;\n      color: var(--tpi-white);\n      font-size: 14px;\n      margin: auto 0 14px;\n      min-height: 132px;\n      padding: 14px;\n      white-space: pre-wrap;\n    }\n\n    .tpi-pallet-calculator__actions {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 10px;\n    }\n\n    .tpi-pallet-calculator__button {\n      align-items: center;\n      border: 0;\n      border-radius: 20px;\n      cursor: pointer;\n      display: inline-flex;\n      font: inherit;\n      font-size: 14px;\n      font-weight: 800;\n      justify-content: center;\n      line-height: 1.2;\n      min-height: 44px;\n      padding: 11px 18px;\n      text-align: center;\n      text-decoration: none;\n      transition: background 160ms ease, color 160ms ease;\n      white-space: normal;\n    }\n\n    .tpi-pallet-calculator__button--primary {\n      background: var(--tpi-red);\n      color: var(--tpi-white) !important;\n    }\n\n    .tpi-pallet-calculator a.tpi-pallet-calculator__button--primary,\n    .tpi-pallet-calculator a.tpi-pallet-calculator__button--primary:visited {\n      color: var(--tpi-white) !important;\n    }\n\n    .tpi-pallet-calculator__button--primary:hover {\n      background: var(--tpi-red-dark);\n      color: var(--tpi-white) !important;\n      text-decoration: none;\n    }\n\n    .tpi-pallet-calculator__button--secondary {\n      background: var(--tpi-black);\n      color: var(--tpi-white);\n      border-radius: 5px;\n    }\n\n    .tpi-pallet-calculator__button--secondary:hover {\n      background: #2a2a2a;\n      color: var(--tpi-white);\n    }\n\n    .tpi-pallet-calculator__copy-status {\n      color: var(--tpi-gray);\n      font-size: 13px;\n      min-height: 20px;\n      width: 100%;\n    }\n\n    .tpi-pallet-calculator__content {\n      display: grid;\n      gap: 20px;\n      margin-top: 12px;\n    }\n\n    .tpi-pallet-calculator__content section {\n      border-top: 1px solid var(--tpi-line);\n      padding-top: 22px;\n    }\n\n    .tpi-pallet-calculator__content h2 {\n      font-size: clamp(25px, 3.5vw, 36px);\n      line-height: 1.14;\n      margin-bottom: 9px;\n    }\n\n    .tpi-pallet-calculator__content p {\n      color: #252525;\n      font-size: 16px;\n      margin-bottom: 0;\n      max-width: 880px;\n    }\n\n    .tpi-pallet-calculator__formula {\n      background: var(--tpi-soft);\n      border-left: 4px solid var(--tpi-red);\n      border-radius: 3px;\n      color: var(--tpi-black);\n      display: inline-block;\n      font-size: 15px;\n      font-weight: 800;\n      margin-top: 14px;\n      padding: 10px 12px;\n    }\n\n    @media (max-width: 860px) {\n      .tpi-pallet-calculator__tool {\n        grid-template-columns: 1fr;\n      }\n    }\n\n    @media (max-width: 620px) {\n      .tpi-pallet-calculator {\n        padding: 26px 14px 36px;\n      }\n\n      .tpi-pallet-calculator__grid,\n      .tpi-pallet-calculator__metrics {\n        grid-template-columns: 1fr;\n      }\n\n      .tpi-pallet-calculator__panel,\n      .tpi-pallet-calculator__result {\n        padding: 16px;\n      }\n\n      .tpi-pallet-calculator__button {\n        width: 100%;\n      }\n    }\n  <\/style>\n\n  <header class=\"tpi-pallet-calculator__hero\">\n    <span class=\"tpi-pallet-calculator__eyebrow\">Wholesale tile order estimator<\/span>\n    <p class=\"tpi-pallet-calculator__intro\">Use this wholesale tile box and pallet calculator to estimate how many boxes, pallets, and kilograms may be needed for a ceramic tile order. Enter required area, box coverage, box weight, and pallet capacity to prepare a clearer quote request.<\/p>\n    <nav class=\"tpi-pallet-calculator__links\" aria-label=\"Related TPI pages\">\n      <a href=\"\/?product_cat=ceramic\">Browse Ceramic Tiles<\/a>\n      <a href=\"https:\/\/tpiexports.com\/products\">View All Products<\/a>\n    <\/nav>\n  <\/header>\n\n  <section class=\"tpi-pallet-calculator__tool\" aria-label=\"Wholesale tile pallet calculator tool\">\n    <div class=\"tpi-pallet-calculator__panel\">\n      <h3>Calculate Boxes and Pallets<\/h3>\n      <p class=\"tpi-pallet-calculator__note\">The estimate updates automatically. Use known product packing data when available, because box coverage and box weight change by tile series and size.<\/p>\n\n      <form class=\"tpi-pallet-calculator__form\" novalidate=\"\">\n        <div class=\"tpi-pallet-calculator__field\">\n          <label for=\"tpi-pallet-unit\">Measurement unit<\/label>\n          <select id=\"tpi-pallet-unit\" data-tpi-input=\"unit\">\n            <option value=\"metric\" selected=\"\">Metric: square meters and kilograms<\/option>\n            <option value=\"imperial\">Imperial: square feet and pounds<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"tpi-pallet-calculator__grid\">\n          <div class=\"tpi-pallet-calculator__field\">\n            <label for=\"tpi-required-area\">Required tile area<\/label>\n            <input id=\"tpi-required-area\" data-tpi-input=\"area\" type=\"number\" inputmode=\"decimal\" min=\"0\" step=\"0.01\" value=\"100\"\/>\n            <span class=\"tpi-pallet-calculator__hint\" data-tpi-label=\"areaUnit\">square meters<\/span>\n          <\/div>\n\n          <div class=\"tpi-pallet-calculator__field\">\n            <label for=\"tpi-pallet-waste\">Waste allowance<\/label>\n            <input id=\"tpi-pallet-waste\" data-tpi-input=\"waste\" type=\"number\" inputmode=\"decimal\" min=\"0\" max=\"50\" step=\"1\" value=\"10\"\/>\n            <span class=\"tpi-pallet-calculator__hint\">percent, usually 10-15%<\/span>\n          <\/div>\n\n          <div class=\"tpi-pallet-calculator__field\">\n            <label for=\"tpi-box-coverage\">Box coverage<\/label>\n            <input id=\"tpi-box-coverage\" data-tpi-input=\"boxCoverage\" type=\"number\" inputmode=\"decimal\" min=\"0\" step=\"0.01\" value=\"1.44\"\/>\n            <span class=\"tpi-pallet-calculator__hint\" data-tpi-label=\"coverageUnit\">sq m per box<\/span>\n          <\/div>\n\n          <div class=\"tpi-pallet-calculator__field\">\n            <label for=\"tpi-box-weight\">Gross weight per box<\/label>\n            <input id=\"tpi-box-weight\" data-tpi-input=\"boxWeight\" type=\"number\" inputmode=\"decimal\" min=\"0\" step=\"0.01\" value=\"28\"\/>\n            <span class=\"tpi-pallet-calculator__hint\" data-tpi-label=\"weightUnit\">kilograms<\/span>\n          <\/div>\n\n          <div class=\"tpi-pallet-calculator__field\">\n            <label for=\"tpi-boxes-per-pallet\">Boxes per pallet<\/label>\n            <input id=\"tpi-boxes-per-pallet\" data-tpi-input=\"boxesPerPallet\" type=\"number\" inputmode=\"numeric\" min=\"1\" step=\"1\" value=\"40\"\/>\n            <span class=\"tpi-pallet-calculator__hint\">use supplier packing if known<\/span>\n          <\/div>\n\n          <div class=\"tpi-pallet-calculator__field\">\n            <label for=\"tpi-moq-boxes\">MOQ boxes<\/label>\n            <input id=\"tpi-moq-boxes\" data-tpi-input=\"moqBoxes\" type=\"number\" inputmode=\"numeric\" min=\"0\" step=\"1\" placeholder=\"Optional\"\/>\n            <span class=\"tpi-pallet-calculator__hint\">leave blank if not required<\/span>\n          <\/div>\n        <\/div>\n\n        <p class=\"tpi-pallet-calculator__warning\" data-tpi-warning=\"\" role=\"alert\"><\/p>\n      <\/form>\n    <\/div>\n\n    <aside class=\"tpi-pallet-calculator__result\" aria-live=\"polite\">\n      <h3>Your Wholesale Estimate<\/h3>\n      <p class=\"tpi-pallet-calculator__note\">These figures are preliminary. Final box coverage, pallet plan, gross weight, and MOQ must be confirmed with TPI before placing an order.<\/p>\n\n      <div class=\"tpi-pallet-calculator__metrics\">\n        <div class=\"tpi-pallet-calculator__metric\">\n          <span>Area with waste<\/span>\n          <strong data-tpi-output=\"areaWaste\">110.00<\/strong>\n          <small data-tpi-output=\"areaWasteUnit\">sq m<\/small>\n        <\/div>\n        <div class=\"tpi-pallet-calculator__metric\">\n          <span>Order boxes<\/span>\n          <strong data-tpi-output=\"boxes\">77<\/strong>\n          <small data-tpi-output=\"boxNote\">rounded up<\/small>\n        <\/div>\n        <div class=\"tpi-pallet-calculator__metric\">\n          <span>Estimated pallets<\/span>\n          <strong data-tpi-output=\"pallets\">2<\/strong>\n          <small>rounded up<\/small>\n        <\/div>\n        <div class=\"tpi-pallet-calculator__metric\">\n          <span>Gross weight<\/span>\n          <strong data-tpi-output=\"weight\">2,156<\/strong>\n          <small>kg approx.<\/small>\n        <\/div>\n      <\/div>\n\n      <div class=\"tpi-pallet-calculator__recommendation\" data-tpi-output=\"recommendation\">Estimated order is 77 boxes on 2 pallets. Ask TPI to confirm exact packing, pallet dimensions, and available ceramic tile stock.<\/div>\n      <div class=\"tpi-pallet-calculator__quote\" data-tpi-output=\"quote\">I need a wholesale ceramic tile quote for approximately 110.00 sq m including waste. Box coverage: 1.44 sq m per box. Estimated order: 77 boxes, 2 pallets, and 2,156 kg gross weight. Please confirm MOQ, packing, pallet dimensions, and availability.<\/div>\n\n      <div class=\"tpi-pallet-calculator__actions\">\n        <a class=\"tpi-pallet-calculator__button tpi-pallet-calculator__button--primary\" href=\"\/?product_cat=ceramic\">View Ceramic Tiles<\/a>\n        <button class=\"tpi-pallet-calculator__button tpi-pallet-calculator__button--secondary\" type=\"button\" data-tpi-copy=\"\">Copy Wholesale Summary<\/button>\n        <span class=\"tpi-pallet-calculator__copy-status\" data-tpi-copy-status=\"\" aria-live=\"polite\"><\/span>\n      <\/div>\n    <\/aside>\n  <\/section>\n\n  <div class=\"tpi-pallet-calculator__content\">\n    <section>\n      <h2>What Is a Tile Box and Pallet Calculator?<\/h2>\n      <p>A tile box and pallet calculator is a wholesale estimating tool that converts required tile area into box count, pallet count, and approximate gross weight. It helps buyers prepare clearer ceramic tile requests before supplier confirmation.<\/p>\n    <\/section>\n\n    <section>\n      <h2>How to Calculate Tile Boxes and Pallets?<\/h2>\n      <p>First add the waste allowance to the required area. Then divide that area by the coverage of one box and round up. To estimate pallets, divide the order box count by boxes per pallet and round up again.<\/p>\n      <span class=\"tpi-pallet-calculator__formula\">Boxes = area with waste \/ box coverage. Pallets = boxes \/ boxes per pallet.<\/span>\n    <\/section>\n\n    <section>\n      <h2>What Is the Best Tile Pallet Calculator for Wholesale Orders?<\/h2>\n      <p>The best tile pallet calculator for wholesale orders should include box coverage, box weight, pallet capacity, and MOQ impact. This gives the supplier enough information to confirm packing, stock, pallet dimensions, and export shipment details faster.<\/p>\n    <\/section>\n  <\/div>\n\n  <script>\n    (function () {\n      var root = document.currentScript.closest(\"[data-tpi-pallet-calculator]\");\n      if (!root) return;\n\n      var inputs = {\n        unit: root.querySelector('[data-tpi-input=\"unit\"]'),\n        area: root.querySelector('[data-tpi-input=\"area\"]'),\n        waste: root.querySelector('[data-tpi-input=\"waste\"]'),\n        boxCoverage: root.querySelector('[data-tpi-input=\"boxCoverage\"]'),\n        boxWeight: root.querySelector('[data-tpi-input=\"boxWeight\"]'),\n        boxesPerPallet: root.querySelector('[data-tpi-input=\"boxesPerPallet\"]'),\n        moqBoxes: root.querySelector('[data-tpi-input=\"moqBoxes\"]')\n      };\n\n      var labels = {\n        areaUnit: root.querySelector('[data-tpi-label=\"areaUnit\"]'),\n        coverageUnit: root.querySelector('[data-tpi-label=\"coverageUnit\"]'),\n        weightUnit: root.querySelector('[data-tpi-label=\"weightUnit\"]')\n      };\n\n      var outputs = {\n        areaWaste: root.querySelector('[data-tpi-output=\"areaWaste\"]'),\n        areaWasteUnit: root.querySelector('[data-tpi-output=\"areaWasteUnit\"]'),\n        boxes: root.querySelector('[data-tpi-output=\"boxes\"]'),\n        boxNote: root.querySelector('[data-tpi-output=\"boxNote\"]'),\n        pallets: root.querySelector('[data-tpi-output=\"pallets\"]'),\n        weight: root.querySelector('[data-tpi-output=\"weight\"]'),\n        recommendation: root.querySelector('[data-tpi-output=\"recommendation\"]'),\n        quote: root.querySelector('[data-tpi-output=\"quote\"]')\n      };\n\n      var warning = root.querySelector(\"[data-tpi-warning]\");\n      var copyButton = root.querySelector(\"[data-tpi-copy]\");\n      var copyStatus = root.querySelector(\"[data-tpi-copy-status]\");\n\n      function numberFrom(input) {\n        return Number.parseFloat(input.value);\n      }\n\n      function isPositive(value) {\n        return Number.isFinite(value) && value > 0;\n      }\n\n      function formatNumber(value, digits) {\n        return value.toLocaleString(\"en-US\", {\n          minimumFractionDigits: digits,\n          maximumFractionDigits: digits\n        });\n      }\n\n      function setWarning(message) {\n        if (!message) {\n          warning.textContent = \"\";\n          warning.classList.remove(\"is-visible\");\n          return;\n        }\n        warning.textContent = message;\n        warning.classList.add(\"is-visible\");\n      }\n\n      function updateLabels(unit) {\n        var metric = unit === \"metric\";\n        labels.areaUnit.textContent = metric ? \"square meters\" : \"square feet\";\n        labels.coverageUnit.textContent = metric ? \"sq m per box\" : \"sq ft per box\";\n        labels.weightUnit.textContent = metric ? \"kilograms\" : \"pounds\";\n      }\n\n      function calculate() {\n        var unit = inputs.unit.value;\n        var metric = unit === \"metric\";\n        updateLabels(unit);\n\n        var area = numberFrom(inputs.area);\n        var waste = numberFrom(inputs.waste);\n        var boxCoverage = numberFrom(inputs.boxCoverage);\n        var boxWeight = numberFrom(inputs.boxWeight);\n        var boxesPerPallet = numberFrom(inputs.boxesPerPallet);\n        var moqBoxes = numberFrom(inputs.moqBoxes);\n\n        if (!isPositive(area)) {\n          setWarning(\"Enter a positive required tile area.\");\n          return;\n        }\n\n        if (!Number.isFinite(waste) || waste < 0 || waste > 50) {\n          setWarning(\"Waste allowance should be between 0 and 50 percent.\");\n          return;\n        }\n\n        if (!isPositive(boxCoverage) || !isPositive(boxWeight) || !isPositive(boxesPerPallet)) {\n          setWarning(\"Enter positive values for box coverage, box weight, and boxes per pallet.\");\n          return;\n        }\n\n        if (Number.isFinite(moqBoxes) && moqBoxes < 0) {\n          setWarning(\"MOQ boxes cannot be negative.\");\n          return;\n        }\n\n        setWarning(\"\");\n\n        var areaWithWaste = area * (1 + waste \/ 100);\n        var requiredBoxes = Math.ceil(areaWithWaste \/ boxCoverage);\n        var hasMoq = Number.isFinite(moqBoxes) &#038;&#038; moqBoxes > 0;\n        var orderBoxes = hasMoq ? Math.max(requiredBoxes, Math.ceil(moqBoxes)) : requiredBoxes;\n        var pallets = Math.ceil(orderBoxes \/ boxesPerPallet);\n        var grossKg = metric ? orderBoxes * boxWeight : orderBoxes * boxWeight * 0.45359237;\n        var orderedArea = orderBoxes * boxCoverage;\n        var extraArea = Math.max(0, orderedArea - areaWithWaste);\n        var areaUnit = metric ? \"sq m\" : \"sq ft\";\n        var weightSourceUnit = metric ? \"kg\" : \"lb\";\n\n        var boxNote = hasMoq && orderBoxes > requiredBoxes ? \"adjusted for MOQ\" : \"rounded up\";\n        var recommendation = \"Estimated order is \" + orderBoxes.toLocaleString(\"en-US\") + \" boxes on \" + pallets.toLocaleString(\"en-US\") + \" pallets. \";\n\n        if (hasMoq && orderBoxes > requiredBoxes) {\n          recommendation += \"MOQ increases the order by \" + (orderBoxes - requiredBoxes).toLocaleString(\"en-US\") + \" boxes. \";\n        }\n\n        recommendation += \"Ask TPI to confirm exact packing, pallet dimensions, and available ceramic tile stock.\";\n\n        var quote = \"I need a wholesale ceramic tile quote for approximately \" + formatNumber(areaWithWaste, 2) + \" \" + areaUnit + \" including waste. \" +\n          \"Box coverage: \" + formatNumber(boxCoverage, 2) + \" \" + areaUnit + \" per box. \" +\n          \"Estimated order: \" + orderBoxes.toLocaleString(\"en-US\") + \" boxes, \" + pallets.toLocaleString(\"en-US\") + \" pallets, and \" + formatNumber(grossKg, 0) + \" kg gross weight. \" +\n          \"Box weight entered: \" + formatNumber(boxWeight, 1) + \" \" + weightSourceUnit + \" per box. \" +\n          (extraArea > 0 ? \"Estimated extra ordered coverage: \" + formatNumber(extraArea, 2) + \" \" + areaUnit + \". \" : \"\") +\n          \"Please confirm MOQ, packing, pallet dimensions, and availability.\";\n\n        outputs.areaWaste.textContent = formatNumber(areaWithWaste, 2);\n        outputs.areaWasteUnit.textContent = areaUnit;\n        outputs.boxes.textContent = orderBoxes.toLocaleString(\"en-US\");\n        outputs.boxNote.textContent = boxNote;\n        outputs.pallets.textContent = pallets.toLocaleString(\"en-US\");\n        outputs.weight.textContent = formatNumber(grossKg, 0);\n        outputs.recommendation.textContent = recommendation;\n        outputs.quote.textContent = quote;\n      }\n\n      function copyQuote() {\n        var text = outputs.quote.textContent;\n        if (!text) return;\n\n        function fallbackCopy(value) {\n          var textarea = document.createElement(\"textarea\");\n          textarea.value = value;\n          textarea.setAttribute(\"readonly\", \"\");\n          textarea.style.position = \"fixed\";\n          textarea.style.left = \"-9999px\";\n          document.body.appendChild(textarea);\n          textarea.select();\n\n          try {\n            document.execCommand(\"copy\");\n            copyStatus.textContent = \"Wholesale summary copied.\";\n          } catch (error) {\n            copyStatus.textContent = \"Copy failed. Select the summary and copy it manually.\";\n          }\n\n          document.body.removeChild(textarea);\n        }\n\n        if (navigator.clipboard && navigator.clipboard.writeText) {\n          navigator.clipboard.writeText(text).then(function () {\n            copyStatus.textContent = \"Wholesale summary copied.\";\n          }).catch(function () {\n            fallbackCopy(text);\n          });\n          return;\n        }\n\n        fallbackCopy(text);\n      }\n\n      Object.keys(inputs).forEach(function (key) {\n        inputs[key].addEventListener(\"input\", calculate);\n        inputs[key].addEventListener(\"change\", calculate);\n      });\n\n      copyButton.addEventListener(\"click\", copyQuote);\n      calculate();\n    })();\n  <\/script>\n<\/article>\n","protected":false},"excerpt":{"rendered":"<p>Wholesale tile order estimator Use this wholesale tile box and pallet calculator to estimate how many boxes, pallets, and kilograms may be needed for a ceramic tile order. Enter required area, box coverage, box weight, and pallet capacity to prepare a clearer quote request. Browse Ceramic Tiles View All Products Calculate Boxes and Pallets The [&hellip;]<\/p>\n","protected":false},"author":121,"featured_media":2928484,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wpai_generated_summary":"","_tpi_blog_layout":"","footnotes":""},"categories":[138],"tags":[],"class_list":["post-2928486","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-services-fr"],"_links":{"self":[{"href":"https:\/\/tpiexports.com\/fr\/wp-json\/wp\/v2\/posts\/2928486","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tpiexports.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tpiexports.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tpiexports.com\/fr\/wp-json\/wp\/v2\/users\/121"}],"replies":[{"embeddable":true,"href":"https:\/\/tpiexports.com\/fr\/wp-json\/wp\/v2\/comments?post=2928486"}],"version-history":[{"count":0,"href":"https:\/\/tpiexports.com\/fr\/wp-json\/wp\/v2\/posts\/2928486\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tpiexports.com\/fr\/wp-json\/wp\/v2\/media\/2928484"}],"wp:attachment":[{"href":"https:\/\/tpiexports.com\/fr\/wp-json\/wp\/v2\/media?parent=2928486"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tpiexports.com\/fr\/wp-json\/wp\/v2\/categories?post=2928486"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tpiexports.com\/fr\/wp-json\/wp\/v2\/tags?post=2928486"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}