{"id":21811,"date":"2026-03-10T14:52:16","date_gmt":"2026-03-10T14:52:16","guid":{"rendered":"https:\/\/residential-bandicoot-99rq.flyinghost.app\/?post_type=resources&#038;p=21811"},"modified":"2026-03-10T16:45:46","modified_gmt":"2026-03-10T16:45:46","slug":"calculateur-de-havs","status":"publish","type":"resources","link":"https:\/\/pulsarinstruments.com\/fr\/resources\/havs-calculator\/","title":{"rendered":"Calculateur HAVS"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Le calculateur HAVS est con\u00e7u pour aider les utilisateurs \u00e0 \u00e9valuer le risque de <a href=\"https:\/\/pulsarinstruments.com\/fr\/nouvelles\/quest-ce-que-le-havs\/\" data-type=\"news\" data-id=\"14321\">HAVS<\/a> en calculant le niveau d'exposition aux vibrations des outils ou des processus. Il fournit des estimations sur les points d'exposition par heure, le temps n\u00e9cessaire pour atteindre la valeur d'exposition d\u00e9clenchant l'action (VDA) et la valeur limite d'exposition (VLE), aidant ainsi les utilisateurs \u00e0 g\u00e9rer et \u00e0 limiter l'exposition aux vibrations main-bras.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si vous avez besoin d'une version hors ligne d'un calculateur HAVS, nous vous recommandons de t\u00e9l\u00e9charger le fichier <a href=\"https:\/\/www.hse.gov.uk\/vibration\/hav\/calculator-guide.htm\" target=\"_blank\" rel=\"noopener\">Calculateur HSE HAVS<\/a>.<\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <style>\n        .calculator-container {\n            font-family: Arial, sans-serif;\n            max-width: 1300px;\n            margin-top: 20px;\n            margin-bottom: 20px;\n            margin: auto;\n            border: 0 solid;\n        }\n        #vibrationTable {\n           margin-top: 20px;\n           margin-bottom: 20px;\n           border-radius: 5;\n}\n\n#key {\nmargin: 0px;\n}\n\n.input-cell input {\n    border-width: 1px;\n    border-radius: 5px;\n}\n\n        th {\n        background-color: #2E4795 !important;\n        color: #fff;\n}\n        table {\n            width: 100%;\n            border-collapse: collapse;\n        }\n        th, td {\n            border: 1px solid #ddd;\n            text-align: center;\n            padding: 10px;\n            width: 8.33%;\n            margin: auto;\n        }\n        th {\n            background-color: #f2f2f2;\n        }\n        .input-cell input {\n            width: 100%;\n            padding: 5px;\n            box-sizing: border-box;\n        }\n        button {\n            cursor: pointer;\n        }\n    .exposurePointsPerHour {\n    background-color: rgba(13,71,182,.1);\n}\n\n .timeToReachEAV {\n    background-color: rgba(13,71,182,.1);\n}\n\n.timeToReachELV {\n    background-color: rgba(13,71,182,.1);\n}\n\n.partialExposure {\n    background-color: rgba(13,71,182,.1);\n}\n.partialExposurePoints {\n    background-color: rgba(13,71,182,.1);\n}\n.calculatebutton {\nborder-radius: 10px; \npadding-left: 20px;\npadding-right: 20px;\npadding-top: 5px;\npadding-bottom: 5px; \nbackground-color: #006DFF;\ncolor: #fff;\nborder: 0 solid;\nmargin-top: 0px;\n}\n        .red-background {\n            background-color: #ff6666;\n        }\n        .orange-background {\n            background-color: #ffcc66;\n        }\n        .green-background {\n            background-color: #66cc66;\n        }\n\n#rotateDevicePrompt {\n    display: none;\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    background-color: rgba(0,0,0,0.8);\n    color: white;\n    font-size: 24px;\n    text-align: center;\n    align-items: center;\n    justify-content: center;\n    flex-direction: column;\n    z-index: 1000; \/* Make sure this is on top of other elements *\/\n}\n\n@media screen and (orientation: portrait) {\n    #rotateDevicePrompt {\n        display: flex; \/* Show the prompt only in portrait mode *\/\n    }\n\n@media screen and (max-width: 768px) { \/* Adjusts for devices with width less than 768px *\/\n        .calculator-container {\n            width: 100%; \/* Full width *\/\n            overflow-x: auto; \/* Allows table to scroll horizontally *\/\n        }\n\n        table {\n            width: auto; \/* Allows table to be only as wide as it needs to be, enabling horizontal scroll *\/\n        }\n\n        th, td {\n            padding: 5px; \/* Reduces padding *\/\n            font-size: 12px; \/* Reduces font size *\/\n        }\n\n        .input-cell input, button {\n            font-size: 12px; \/* Reduces font size *\/\n        }\n\n        \/* Hide less important columns on small screens *\/\n        .calculator-container th:nth-child(3),\n        .calculator-container td:nth-child(3),\n        .calculator-container th:nth-child(4),\n        .calculator-container td:nth-child(4) {\n            display: none;\n        }\n    }\n    \n    @media screen and (orientation: landscape) {\n.calculator-container {\n            width: 100%;    }\n}\n    <\/style>\n<\/head>\n<body>\n<div id=\"rotateDevicePrompt\">\n    <p>Veuillez tourner votre appareil en mode paysage.<\/p>\n<\/div>\n<div class=\"calculator-container\">\n    <table id=\"vibrationTable\">\n        <thead>\n            <tr>\n                <th>Nom de l'outil ou du processus<\/th>\n                <th>Ampleur des vibrations m\/s\u00b2<\/th>\n                <th>Points d'exposition par heure<\/th>\n                <th>D\u00e9lai pour atteindre la VAE<\/th>\n                <th>Temps pour atteindre la VLE<\/th>\n                <th>Dur\u00e9e d'exposition Heures<\/th>\n                <th>Dur\u00e9e d'exposition Minutes<\/th>\n                <th>Exposition partielle m\/s\u00b2 (A8)<\/th>\n                <th>Points d'exposition partielle<\/th>\n            <\/tr>\n        <\/thead>\n        <tbody>\n            <!-- Initial row -->\n            <tr data-tool-recommendation=\"\">\n                <td class=\"input-cell\"><input type=\"text\" class=\"toolName\"\/><\/td>\n                <td class=\"input-cell\"><input type=\"number\" class=\"vibrationMagnitude\" step=\"0.1\"\/><\/td>\n                <td class=\"exposurePointsPerHour\"><\/td>\n                <td class=\"timeToReachEAV\"><\/td>\n                <td class=\"timeToReachELV\"><\/td>\n                <td class=\"input-cell\"><input type=\"number\" class=\"exposureDurationHours\" step=\"0\" min=\"1\"\/><\/td>\n                <td class=\"input-cell\"><input type=\"number\" class=\"exposureDurationMinutes\" step=\"1\" min=\"1\" max=\"59\"\/><\/td>\n                <td class=\"partialExposure\"><\/td>\n                <td class=\"partialExposurePoints\"><\/td>\n            <\/tr>\n        <\/tbody>\n        <tfoot>\n            <tr>\n<td colspan=\"2\">     <button class=\"calculatebutton\" onclick=\"addTool()\">Ajouter un autre outil<\/button> <\/td>\n            \n<td colspan=\"5\" style=\"text-align: right;\"><strong>Exposition totale :<\/strong><\/td>\n                <td id=\"totalPartialExposure\">0<\/td>\n                <td id=\"totalExposurePoints\">0<\/td>\n            <\/tr>\n<tr>\n<td colspan=\"10\"> \n<p id=\"key\"><b>VAE<\/b>: Valeur d'exposition d\u00e9clenchant l'action = 2,5 m\/s\u00b2 A(8), <b>ELV<\/b>: Valeur limite d'exposition = 5 m\/s\u00b2 A(8)<\/p>\n<\/td>\n<\/tr>\n        <\/tfoot>\n    <\/table>\n<\/div>\n\n<div><p id=\"havsMessage\" style=\"text-align: center; font-weight: bold;\"><\/p> <\/div>\n<div>\n    <p id=\"havsMessage\" style=\"text-align: center; font-weight: bold;\"><\/p>\n    <p id=\"toolRecommendations\" style=\"text-align: center;\"><\/p>\n<\/div>\n\n<script>\nvar toolRecommendations = []; \/\/ Global array to store recommendations\n\ndocument.addEventListener('DOMContentLoaded', function() {\n    setupInputListeners();\n});\n    function setupInputListeners() {\n    var inputs = document.querySelectorAll('.vibrationMagnitude, .exposureDurationHours, .exposureDurationMinutes');\n    inputs.forEach(function(input) {\n        input.addEventListener('change', function() {\n            calculateExposure(input.closest('tr'));\n        });\n    });\n}\n\n\n    \/\/ Initial setup call\n    setupInputListeners();\n\n    function calculateExposure(row) {\n    var vibrationMagnitude = parseFloat(row.querySelector('.vibrationMagnitude').value) || 0;\n    \n    \/\/ Calculate Exposure Points Per Hour using the provided vibration magnitude.\n    var exposurePointsPerHour = Math.pow(vibrationMagnitude, 2) * 2;\n\nif (exposurePointsPerHour === 0) {\n        \/\/ Set timeToReachEAV and timeToReachELV to some default value or message\n        timeToReachEAV = 'N\/A'; \/\/ or some other sensible default\n        timeToReachELV = 'N\/A'; \/\/ or some other sensible default\n    } else {    \n\/\/ Calculate Time to Reach EAV and ELV in minutes.\n    var timeToReachEAV = 100 * 60 \/ exposurePointsPerHour; \/\/ For EAV of 2.5 m\/s\u00b2 (100 points)\n    var timeToReachELV = 400 * 60 \/ exposurePointsPerHour; \/\/ For ELV of 5 m\/s\u00b2 (400 points)\n\n    var exposureDurationHours = parseFloat(row.querySelector('.exposureDurationHours').value) || 0;\n    var exposureDurationMinutes = parseFloat(row.querySelector('.exposureDurationMinutes').value) || 0;\n    var exposureDurationTotalMinutes = (exposureDurationHours * 60) + exposureDurationMinutes;\n    \n    \/\/ Calculate Partial Exposure Points.\n    var partialExposurePoints = exposurePointsPerHour * exposureDurationTotalMinutes \/ 60;\n    \n    \/\/ Calculate Partial Exposure (A8) as the square root of the partial exposure points normalized to an 8-hour day.\n   var exposureDurationTotalHours = exposureDurationHours + (exposureDurationMinutes \/ 60);\n   var partialExposure = Math.sqrt((vibrationMagnitude * vibrationMagnitude * exposureDurationTotalHours) \/ 8);\n var toolName = row.querySelector('.toolName').value || 'Unnamed Tool';\n    var timeToReachELVFormatted = formatHoursAndMinutes(timeToReachELV);\n\n    if (partialExposure >= 5) {\n        var recommendation = toolName + \" has a high level of vibration (Partial Exposure: \" + partialExposure.toFixed(1) + \" m\/s\u00b2). Consider reducing usage time and ensure not to exceed its Time to Reach ELV (\" + timeToReachELVFormatted.hours + \"h \" + timeToReachELVFormatted.minutes + \"m).\";\n        row.setAttribute('data-tool-recommendation', recommendation);\n    } else {\n        row.setAttribute('data-tool-recommendation', ''); \/\/ Clear the recommendation if not relevant\n    }\n\n    \/\/ Update the table with the calculated values.\n    row.querySelector('.exposurePointsPerHour').textContent = exposurePointsPerHour.toFixed(0);\n    row.querySelector('.timeToReachEAV').textContent = formatHoursAndMinutes(timeToReachEAV).hours + 'h ' +\n                                                         formatHoursAndMinutes(timeToReachEAV).minutes + 'm';\n    row.querySelector('.timeToReachELV').textContent = formatHoursAndMinutes(timeToReachELV).hours + 'h ' +\n                                                         formatHoursAndMinutes(timeToReachELV).minutes + 'm';\n    row.querySelector('.partialExposure').textContent = partialExposure.toFixed(1);\n    row.querySelector('.partialExposurePoints').textContent = partialExposurePoints.toFixed(0);\n\n    calculateTotals();\n}\n}\n\nfunction displayToolRecommendations() {\n    var rows = document.querySelectorAll('#vibrationTable tbody tr');\n    var recommendations = [];\n\n    rows.forEach(function(row) {\n        var recommendation = row.getAttribute('data-tool-recommendation');\n        if (recommendation) {\n            recommendations.push(recommendation);\n        }\n    });\n\n    var recommendationsElement = document.getElementById('toolRecommendations');\n    var recommendationsHtml = recommendations.length > 0 ? '<strong>Tool Recommendations:<\/strong><br>' + recommendations.join('<br>') : '';\n    recommendationsElement.innerHTML = recommendationsHtml;\n}\n\nfunction formatHoursAndMinutes(totalMinutes) {\n    var hours = Math.floor(totalMinutes \/ 60);\n    var minutes = Math.round(totalMinutes % 60);\n    return { hours, minutes };\n}\n\n\n    function calculateTotals() {\n        var totalExposurePoints = 0;\n        var totalPartialExposureSquared = 0;\n\n        document.querySelectorAll('.partialExposurePoints').forEach(function(cell) {\n            var value = parseFloat(cell.textContent) || 0;\n            totalExposurePoints += value;\n        });\n\n        document.querySelectorAll('.partialExposure').forEach(function(cell) {\n            var value = parseFloat(cell.textContent) || 0;\n            totalPartialExposureSquared += value * value;\n        });\n\n        var totalPartialExposure = Math.sqrt(totalPartialExposureSquared);\n\n        var totalExposurePointsElement = document.getElementById('totalExposurePoints');\n        var totalPartialExposureElement = document.getElementById('totalPartialExposure');\n\n        totalExposurePointsElement.textContent = Math.round(totalExposurePoints).toString();\n        totalPartialExposureElement.textContent = totalPartialExposure.toFixed(1) + ' m\/s\u00b2';\n\n        \/\/ Set the background color based on the value\n        if (totalExposurePoints > 400 || totalPartialExposure >= 5) {\n            totalExposurePointsElement.className = 'red-background';\n            totalPartialExposureElement.className = 'red-background';\n        } else if (totalExposurePoints > 100 || totalPartialExposure >= 2.5) {\n            totalExposurePointsElement.className = 'orange-background';\n            totalPartialExposureElement.className = 'orange-background';\n        } else {\n            totalExposurePointsElement.className = 'green-background';\n            totalPartialExposureElement.className = 'green-background';\n        }\n    displayHAVSMessage(totalPartialExposure);\n    displayToolRecommendations();\n    }\n\n    function calculateTime(limitPoints, exposurePointsPerHour) {\n        var time = limitPoints \/ exposurePointsPerHour;\n        var hours = Math.floor(time);\n        var minutes = Math.round((time - hours) * 60);\n        return { hours, minutes };\n    }\n\n    function addTool() {\n        var tableBody = document.getElementById('vibrationTable').querySelector('tbody');\n        var newRow = tableBody.insertRow(-1);\n\n        newRow.innerHTML = `\n            <td class=\"input-cell\"><input type=\"text\" class=\"toolName\"\/><\/td>\n            <td class=\"input-cell\"><input type=\"number\" class=\"vibrationMagnitude\" step=\"0.1\"\/><\/td>\n            <td class=\"exposurePointsPerHour\"><\/td>\n            <td class=\"timeToReachEAV\"><\/td>\n            <td class=\"timeToReachELV\"><\/td>\n            <td class=\"input-cell\"><input type=\"number\" class=\"exposureDurationHours\" step=\"1\" min=\"1\"\/><\/td>\n            <td class=\"input-cell\"><input type=\"number\" class=\"exposureDurationMinutes\" step=\"1\" min=\"1\" max=\"59\"\/><\/td>\n            <td class=\"partialExposure\"><\/td>\n            <td class=\"partialExposurePoints\"><\/td>\n        `;\n        setupInputListeners();\n\n    }\n\nfunction formatTime(totalMinutes) {\n    var hours = Math.floor(totalMinutes \/ 60);\n    var minutes = Math.round(totalMinutes % 60);\n    \/\/ Ensure minutes are shown with two digits\n    minutes = minutes < 10 ? '0' + minutes : minutes;\n    return hours + \":\" + minutes;\n}\n\n    window.onload = setupInputListeners;\n\nfunction checkOrientation() {\n    if (window.innerHeight > window.innerWidth) {\n        \/\/ Show the prompt if in portrait mode\n        document.getElementById('rotateDevicePrompt').style.display = 'flex';\n    } else {\n        \/\/ Hide the prompt if in landscape mode\n        document.getElementById('rotateDevicePrompt').style.display = 'none';\n    }\n}\n\nfunction displayHAVSMessage(totalExposure) {\n    var messageElement = document.getElementById('havsMessage');\n    if (totalExposure < 2.5) {\n        messageElement.textContent = 'These are good HAVS levels, but you should still always be looking to reduce your HAVS exposure.';\n        messageElement.style.color = 'green';\n    } else if (totalExposure >= 2.5 && totalExposure < 5) {\n        messageElement.textContent = 'Alert: You are over the Action value and should be actively taking measures to reduce your employee\\'s exposure.';\n        messageElement.style.color = 'orange';\n    } else if (totalExposure >= 5) {\n        messageElement.textContent = 'Warning: Your employees are at serious risk of injury from vibration at work.';\n        messageElement.style.color = 'red';\n    }\n}\n\n\/\/ Call checkOrientation on load and on resize event\nwindow.addEventListener('load', checkOrientation);\nwindow.addEventListener('resize', checkOrientation);\nwindow.addEventListener('orientationchange', checkOrientation); \/\/ For mobile devices that support orientationchange\n<\/script>\n\n<\/body>\n<\/html>\n\n\n\n<h2 class=\"wp-block-heading\">Qu'est-ce que la VAE et la VLE ?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La VAE (valeur d'exposition d\u00e9clenchant l'action) et la VLE (valeur limite d'exposition) sont des seuils fix\u00e9s pour l'exposition aux vibrations. La VAE est le niveau au-dessus duquel les employ\u00e9s doivent \u00eatre inform\u00e9s des risques pour la sant\u00e9 et des mesures pr\u00e9ventives doivent \u00eatre prises. La VLE est la quantit\u00e9 maximale de vibrations \u00e0 laquelle un employ\u00e9 peut \u00eatre expos\u00e9 au cours d'une m\u00eame journ\u00e9e.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mesure de l'amplitude des vibrations<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L'amplitude des vibrations doit \u00eatre mesur\u00e9e \u00e0 l'aide d'un <a href=\"https:\/\/pulsarinstruments.com\/fr\/produits\/c\/appareils-de-mesure-des-vibrations\/\">appareil de mesure des vibrations du bras<\/a>. Des mesures pr\u00e9cises permettent aux employeurs de calculer l'exposition et d'assurer la conformit\u00e9 avec les r\u00e9glementations en mati\u00e8re de vibrations.<\/p>","protected":false},"template":"","resource-category":[461],"class_list":["post-21811","resources","type-resources","status-publish","hentry","resource-category-calculators"],"_links":{"self":[{"href":"https:\/\/pulsarinstruments.com\/fr\/wp-json\/wp\/v2\/resources\/21811","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pulsarinstruments.com\/fr\/wp-json\/wp\/v2\/resources"}],"about":[{"href":"https:\/\/pulsarinstruments.com\/fr\/wp-json\/wp\/v2\/types\/resources"}],"wp:attachment":[{"href":"https:\/\/pulsarinstruments.com\/fr\/wp-json\/wp\/v2\/media?parent=21811"}],"wp:term":[{"taxonomy":"resource-category","embeddable":true,"href":"https:\/\/pulsarinstruments.com\/fr\/wp-json\/wp\/v2\/resource-category?post=21811"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}