2025 : Une nouvelle ambition pour MDS.   Découvrez bientôt notre stratégie et nos innovations. En attendant, explorez notre vision

” C’est au travers de leurs conseils pragmatiques, les contenus et logiciels innovants ainsi qu’une approche pédagogique, que notre équipe vous transmet son expertise et nos valeurs d’engagement à vos cotés”
Elodie Royer
CEO
Solutions avancées en ligne

Vous souhaitez nous rejoindre ?

Travailler chez My Data Solution, c’est être au contact de commerciaux, juristes-consultants ou experts de la cyber-sécurité aux compétences, aux origines et à la culture variées.

Notre communauté c’est aussi notre réseau

Notre Réseau

Numérique Responsable

My Data Solution tant dans son quotidien qu’avec sa suite logicielle, vise à utiliser les technologies de manière éthique et respectueuse de l’environnement, afin de réduire son empreinte écologique et contribuer au développement de solutions durables pour le futur.

Chaque année, nous participons à un “grand nettoyage” de nos données et sommes ambassadeurs du Digital World Clean Up Day .

Mydatasolution.fr-_5

Obtenez une concession de My Data Solution

Pour accompagner nos clients, nous mettons en place des équipes pluridisciplinaires avec :

Vous êtes consultant / DPO indépendant : vous voulez faire partie de notre communauté et bénéficier, comme vos pairs, de nos nombreux avantages
N’attendez plus : demandez votre concession My Data Solution ?
Les bénéfices pour vous :

Participez à notre prochain webinaire

Vous souhaitez en savoir plus sur le Règlement général sur la protection des données (RGPD) et sur les moyens de mettre en place une stratégie de conformité efficace ? Nous vous invitons à participer à nos webinaires RGPD !

(function() { function initMdsAudit() { var form = document.querySelector('.mds-audit form.elementor-form'); if (!form) return; var ids = ['q1','q2','q3','q4','q5','q6','q7','q8','q9','q10']; function calcScore() { var total = 0; ids.forEach(function(id) { var input = form.querySelector('input[name="form_fields[' + id + ']"]:checked'); if (input && input.value) { var val = parseInt(input.value, 10); if (!isNaN(val)) total += val; } }); var hidden = form.querySelector('input[name="form_fields[score_total]"]'); if (hidden) hidden.value = total; var out = document.querySelector('#mds-score'); if (out) { out.textContent = total + '/100'; out.classList.remove('mds-score-low','mds-score-mid','mds-score-high'); if (total < 30) out.classList.add('mds-score-low'); else if (total < 70) out.classList.add('mds-score-mid'); else out.classList.add('mds-score-high'); } var msg = ''; if (total < 30) { msg = '

Risque élevé de non-conformité.
Les fondamentaux manquent (registre, bases légales, sécurité). Demandez un audit express gratuit et un plan d’action priorisé.

'; } else if (total < 70) { msg = '

Conformité partielle.
Plusieurs zones critiques subsistent (sécurité, contrats). Recevez un plan d’action et une estimation d’effort.

'; } else if (total < 85) { msg = '

Bonne conformité.
Quelques optimisations restantes (sensibilisation, audits). Visez le niveau d’excellence.

'; } else { msg = '

Conformité avancée.
Excellent niveau. Nous vous aidons à maintenir & valoriser cet avantage.

'; } var reco = document.querySelector('#mds-reco'); if (reco) reco.innerHTML = msg; } form.addEventListener('change', calcScore); form.addEventListener('keyup', calcScore); // Elementor ré-injecte le DOM entre les steps → on observe var observer = new MutationObserver(calcScore); observer.observe(form, {subtree: true, childList: true}); calcScore(); } // Le popup peut arriver après chargement → petit polling function waitForForm() { var tries = 0; var iv = setInterval(function() { if (document.querySelector('.mds-audit form.elementor-form')) { clearInterval(iv); initMdsAudit(); } else if (++tries > 20) { clearInterval(iv); } }, 300); } document.addEventListener('DOMContentLoaded', waitForForm); })(); /* === MDS – Progress bar for multi-step === */ (function () { function getForm() { return document.querySelector('.mds-popup .elementor-form'); } function getBar() { return document.querySelector('.mds-popup .mds-progress__bar'); } function updateProgress() { var form = getForm(), bar = getBar(); if (!form || !bar) return; var steps = form.querySelectorAll('.e-form__step'); if (!steps.length) { bar.style.width = '100%'; return; } // repère le step visible (Elementor masque les autres) var visibleIndex = 0; steps.forEach(function (s, i) { var hidden = s.classList.contains('elementor-hidden') || getComputedStyle(s).display === 'none'; if (!hidden) visibleIndex = i; }); var pct = Math.round(((visibleIndex + 1) / steps.length) * 100); bar.style.width = pct + '%'; } function boot() { var form = getForm(); if (!form) { setTimeout(boot, 300); return; } updateProgress(); // clic sur Next/Previous form.addEventListener('click', function (e) { if (e.target.closest('button')) setTimeout(updateProgress, 30); }); // si Elementor ré-injecte le DOM, on recalcule var mo = new MutationObserver(updateProgress); mo.observe(form, { attributes: true, childList: true, subtree: true }); } document.addEventListener('DOMContentLoaded', boot); })();