---
title: "Permis théorique"
canonical: "https://permis-online.be/examen-theorique/"
source: "https://permis-online.be/examen-theorique/"
author: "Wenceslas Dasnois"
author_role: "Fondateur de Permis Online"
author_credentials: "Fondateur de l'Observatoire du Permis Belge (vérification des statistiques officielles du permis, 3 régions)"
publisher: "Permis Online"
published: "2026-09-26"
modified: "2026-09-26"
language: "fr"
image: "https://permis-online.be/wp-content/uploads/2021/02/couverture-simulations-examen.jpg"
word_count: 1117
---

# Permis théorique

---

![](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/quiz/chaussee-trottoir-accotement/q01.png)

![](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/quiz/changement-direction/q08.png)

![](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/quiz/regles-de-priorite/q02.png)

![](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/quiz/depassement/q09.png)

![](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/b5.png)

![](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/c43-50kmh.png)

![](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/b1.png)

![](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/b9.png)

Examen théorique · Permis B · Wallonie et Bruxelles

# Ton permis théorique, *du premier coup.*

Entraîne-toi sur des simulations au format du jour J : **50 questions lues à voix haute, 15 secondes pour répondre, 41 points pour réussir**. Tu vois où tu perds tes points, et tu les récupères.

[Fais le test gratuit 3 min](#test)[S’inscrire](#offre)- **4,6/5** sur Google
- **100 000** inscrits depuis 2021
- Réussi, ou ton examen remboursé

Le barème du jour J

## 9 erreurs, tu passes. *2 fautes graves, tu rates.*

À l’examen, une erreur te coûte 1 point. Une faute grave t’en coûte 5 d’un coup. Il faut 41 points sur 50. Joue avec le barème :

Erreurs1 point chacune3![](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a51.png)

Fautes graves5 points chacune0Essaie

Ton résultat

**47/50**RÉUSSILa réalité de l’examen

## Sur 100 examens, *63 finissent recalés.*

**0 %**des examens théoriques ratés en Wallonie en 2025. À Bruxelles, 59 % en 2024.

- Réussi
- Recalé

Ce que coûte un échec

**17 €**à repayer à chaque nouveau passage en Wallonie, 19 € à Bruxelles.**12 h**d’auto-école obligatoires après deux échecs, dans les trois régions.**+1**nouvelle date à réserver, et tout à réviser d’ici là.Chiffres officiels et sources dans l’[Observatoire du permis belge](/observatoire/).

Les prix

## Un seul accès. *Tu choisis la durée.*

Le contenu est le même dans les trois cas.

Le plus choisi

### À la semaine

**9,99 €**/ semaine

1,43 € / jour

Sans engagement : tu arrêtes quand tu veux.

[Commencer à la semaine](/paiement/?offre=simulations-hebdo)
### Au mois

**24,99 €**/ mois

0,83 € / jour

Sans engagement : tu arrêtes quand tu veux.

[Commencer au mois](/paiement/?offre=theorie-mensuel)
### 1 an

**99 €**/ an

0,27 € / jour

12 mois d’accès complet, à ton rythme.

[Prendre l’année](/paiement/?offre=theorie-1an)Dans les trois cas, tu as :

- **15 examens blancs**Un par chapitre de matière, au format officiel.
- **Des simulations complètes**50 questions lues à voix haute, 15 secondes chacune, un nouveau tirage à chaque fois.
- **Plus de 2 000 questions**Dans les leçons, les examens blancs et les simulations.
- **Un moniteur agréé**Sur le tchat, avec notre équipe, pour répondre à tes questions.
- ![](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a51.png)**Le barème officiel**41 sur 50 pour réussir, une faute grave coûte 5 points.
- **Chaque erreur corrigée**La bonne réponse et la leçon à revoir.
- **Ta route vers la garantie**Chaque étape cochée sur ton tableau de bord.
- **La garantie de réussite**Réussi, ou ton examen remboursé.

Les 50 leçons, leurs résumés audio et leurs quiz restent gratuits pour tout le monde.

Paiement sécuriséCarte bancaireAccès immédiat

Gratuit ou payant

## Le cours est gratuit. *La dernière ligne droite, c’est l’accès.*

Tu apprends sans rien payer. Quand l’examen approche, tu t’entraînes dans les conditions du jour J.

### Le cours *Gratuit*

- 50 leçons en 16 chapitres
- Un résumé audio de chaque leçon
- Un quiz corrigé après chaque leçon
- Deux boutons pour te faire réexpliquer un passage
- Une simulation gratuite de 25 questions

### La dernière ligne droite *Permis théorique*

- 15 examens blancs, un par chapitre de matière
- Des simulations de 50 questions, un nouveau tirage à chaque fois
- Les fautes graves comptées comme au centre d’examen
- La correction complète, avec la leçon à revoir
- Un moniteur agréé qui répond à tes questions sur le tchat
- Ta route vers la garantie, cochée étape par étape
- Réussi, ou ton examen remboursé

ExamenLa garantie

## Réussi, *ou ton examen remboursé.*

Quatre étapes jusqu’au jour J. Ton tableau de bord les coche pour toi.

1. 1ApprendreLes 50 leçons du cours, à ton rythme.*Gratuit*
2. 2VerrouillerLes 15 examens blancs réussis, chapitre par chapitre.
3. 3Te prouver5 simulations à 41 sur 50 ou plus, en étudiant sur au moins 5 jours.
4. 4Le jour JTon accès est actif le jour de ton examen. Tu y vas prêt.

### Tu as suivi les 4 étapes et tu rates quand même ? *Tu choisis.*

**17 € · 19 €**Ton examen remboursé, en Wallonie ou à Bruxelles.OU**21 jours**D’accès offerts pour le repasser.Le dossier se dépose depuis ton tableau de bord, dans les 30 jours qui suivent l’examen. Réponse en 7 jours, versement en 5 jours. Une fois par personne.

[Lire les conditions complètes](/garantie-reussite-examen-theorique/)Les avis

## Ce qu’en disent *nos élèves.*

**100 000**élèves inscrits sur Permis Online depuis 2021.

**4,6/5**Note moyenne de nos avis Google.

> « Je recommande vivement ce site. »

Anne-siata R., avis Google

> « Cours ludiques, questions bien expliquées. »

Mariama G., Trustpilot

> « Excellent service client. »

Avis Trustpilot

**Un moniteur agréé à tes côtés.**Une règle pas claire, un doute sur une correction : sur le tchat, notre équipe, épaulée par un moniteur agréé, répond à tes questions. [Lire tous les avis](/avis-permis-online/)Tes questions

## Avant de commencer.

Le cours est gratuit : qu’est-ce que je paie, exactement ?Les 50 leçons, leurs résumés audio et leurs quiz restent gratuits. L’accès Permis théorique ajoute ce qui te prépare au jour J : les 15 examens blancs, les simulations de 50 questions au barème officiel, leur correction et la garantie de réussite.Semaine, mois ou année : quelle différence ?Seulement la durée et le prix. **La semaine** : 9,99 €, soit 1,43 € par jour. **Le mois** : 24,99 €, soit 0,83 € par jour. **L’année** : 99 € payés une seule fois, soit 0,27 € par jour. Le contenu est identique.Comment j’arrête ?Depuis ton espace, sans frais. Ton accès reste ouvert jusqu’au bout de la semaine ou du mois déjà payé, puis plus rien n’est débité. L’accès d’un an est payé une seule fois : il n’y a rien à arrêter.Et si je rate l’examen ?Si tu as suivi les 4 étapes (les 50 leçons, les 15 examens blancs réussis, 5 simulations à 41 sur 50 ou plus, au moins 5 jours d’étude) et que ton accès était actif le jour de l’examen, tu choisis : ton examen remboursé (17 € en Wallonie, 19 € à Bruxelles) ou 21 jours d’accès offerts. [Les conditions complètes](/garantie-reussite-examen-theorique/)Mon examen est dans 2 jours. Ça vaut encore le coup ?Oui. Fais une simulation complète ce soir, lis chaque correction, puis refais-en une demain. En deux simulations, tu sais exactement quels thèmes retravailler avant le jour J.Ça marche sur téléphone ?Oui. Tout se passe dans ton navigateur, sur téléphone, tablette ou ordinateur, sans rien installer. Ton compte te suit d’un appareil à l’autre.C’est pour quel permis ?Le permis B (voiture), pour l’examen théorique en Wallonie et à Bruxelles.Je paie pour mon enfant. Comment ça se passe ?Indiquez l’adresse e-mail de votre enfant au moment du paiement : c’est à cette adresse qu’il recevra son accès. Le paiement se fait par carte Visa ou Mastercard. Votre carte Bancontact porte l’un de ces logos ? Elle fonctionne aussi. Pour l’accès d’un an, Bancontact seul fonctionne également.
## Le prochain « RÉUSSI », *c’est le tien.*

Des simulations au format officiel, un moniteur agréé sur le tchat, et une promesse écrite : réussi, ou ton examen remboursé.

[Je m’inscris maintenant](/paiement/?offre=simulations-hebdo)**Permis théorique**dès 9,99 € la semaine

[Voir les prix](#offre)'; } function optsHtml(q, pick) { return q.r.map(function (r, i) { return ''; }).join(''); } function topHtml(label, n, withVoice) { return '' + label + '' + (n ? '' + n + '' : '') + (withVoice ? '' : '') + ''; } var DEMO = POOL.filter(function (q) { return q.c === 'iso' && q.i && q.l !== 'age-minimum-conduire' && q.l !== 'signaux-interdiction' && q.t.length < 100 && q.r.every(function (r) { return r.length < 46; }); }); function demo() { if (!screen || running) return; if (screen.contains(d.activeElement) && d.activeElement !== screen) { demoTimer = setTimeout(demo, 6200); return; } screen.setAttribute('aria-live', 'off'); if (!DEMO.length) DEMO = POOL.slice(0, 6); var q = DEMO; demoIdx++; screen.innerHTML = topHtml('Examen théorique', 'Question ' + (7 + (demoIdx % 30)) + '/50', false) + '' + '' + 'Aperçu' + imgHtml(q) + '' + esc(q.t) + '

' + optsHtml(q, -1) + '' + '**15**Écoute la question' + '10 questions · 3 minutes · sans inscription ·

' + ''; var fg = qs('.fg', screen), sec = qs('', screen), st = qs('.pt-q-state', screen); if (reduced()) return; var t = 15; setTimeout(function () { if (running || !st.isConnected) return; st.textContent = 'À toi de répondre'; if (fg) { fg.style.transition = 'stroke-dashoffset 5s linear'; fg.style.strokeDashoffset = String(CIRC * 0.66); } var iv = setInterval(function () { if (running || !sec.isConnected) { clearInterval(iv); return; } t -= 2; sec.textContent = String(Math.max(5, t)); }, 650); setTimeout(function () { clearInterval(iv); if (running) return; var b = qsa('.pt-q-opts button', screen)[q.ok]; if (b) b.classList.add('on'); }, 3300); }, 2200); demoTimer = setTimeout(demo, 6200); } function stopDemo() { if (demoTimer) { clearTimeout(demoTimer); demoTimer = null; } } function ensureAudio() { if (au) return; try { au = new Audio(); au.preload = 'auto'; au.src = SILENCE; var p = au.play(); if (p && p.catch) p.catch(function () {}); } catch (e) { au = null; } } function stopAudio() { if (au) { try { au.onended = null; au.onerror = null; au.pause(); } catch (e) {} } } function clearTimers() { if (tick) { clearInterval(tick); tick = null; } if (safety) { clearTimeout(safety); safety = null; } if (pending) { clearTimeout(pending); pending = null; } } function start() { if (!screen || POOL.length < NB) return; stopDemo(); ensureAudio(); Q = tirage(); idx = 0; ans = []; running = true; Q.forEach(function (q) { if (q.i) { var im = new Image(); im.src = media(q.i); } }); if (screen) screen.setAttribute('aria-live', 'polite'); if (phone) phone.classList.add('live'); if (report) { report.hidden = true; report.innerHTML = ''; report.classList.remove('in'); } beacon('pt_test_start'); renderQ(); } function renderQ() { clearTimers(); stopAudio(); lock = false; var q = Q; screen.innerHTML = topHtml('Question **' + (idx + 1) + '**/' + NB, '', true) + '' + '' + imgHtml(q) + '' + esc(q.t) + '

' + optsHtml(q, -1) + '' + '**15**'; qsa('.pt-q-opts button', screen).forEach(function (b) { b.addEventListener('click', function () { choose(+b.getAttribute('data-i'), b); }); }); var vb = qs('', screen); if (vb) vb.addEventListener('click', toggleVoice); var nx = Q; if (nx && nx.i) { var im = new Image(); im.src = media(nx.i); } if (voix && q.a && au) lecture(q); else countdown(20); } function lecture(q) { phase = 'lecture'; var st = qs('', screen); if (st) st.innerHTML = 'Écoute la question'; var done = false; function go(s) { if (done || !running) return; done = true; if (safety) { clearTimeout(safety); safety = null; } countdown(s); } try { au.onended = function () { go(15); }; au.onerror = function () { go(20); }; au.src = media(q.a); var p = au.play(); if (p && p.catch) p.catch(function () { go(20); }); } catch (e) { go(20); } safety = setTimeout(function () { go(15); }, 32000); } function countdown(s) { phase = 'chrono'; var st = qs('', screen), fg = qs('.pt-q-foot .fg', screen), sec = qs('', screen); if (st) st.textContent = 'À toi de répondre'; var left = s; if (sec) sec.textContent = String(left); if (fg) { fg.style.transition = 'none'; fg.style.strokeDashoffset = '0'; fg.getBoundingClientRect(); fg.style.transition = 'stroke-dashoffset ' + s + 's linear'; fg.style.strokeDashoffset = String(CIRC); } tick = setInterval(function () { left--; if (sec) sec.textContent = String(Math.max(0, left)); if (left <= 0) { clearInterval(tick); tick = null; choose(-1, null); } }, 1000); } function toggleVoice() { voix = !voix; lset('pt_voix', voix ? 'on' : 'off'); var vb = qs('', screen); if (vb) { vb.setAttribute('aria-pressed', voix ? 'true' : 'false'); vb.innerHTML = icon(voix ? 'pt-i-sound' : 'pt-i-mute') + (voix ? 'Son' : 'Muet'); } if (!voix && phase === 'lecture') { stopAudio(); if (safety) { clearTimeout(safety); safety = null; } countdown(20); } } function choose(i, btn) { if (lock || !running) return; lock = true; clearTimers(); stopAudio(); ans = i; if (btn) btn.classList.add('on'); var st = qs('', screen); if (st && i < 0) st.textContent = 'Temps écoulé'; pending = setTimeout(function () { idx++; if (idx < NB) renderQ(); else finish(); }, i < 0 ? 700 : 340); } function stats() { var bons = 0, graves = 0, th = {}; Q.forEach(function (q, k) { var ok = ans === q.ok; if (ok) bons++; else if (q.g) graves++; var t = th[q.th] = th[q.th] || { n: 0, ok: 0 }; t.n++; if (ok) t.ok++; }); var s50 = Math.round(bons / NB * 50); return { bons: bons, graves: graves, th: th, s50: s50, pass: s50 >= 41 }; } function gaugeSvg() { var cx = 150, cy = 150, r = 118; function pt(s, rad) { var a = (150 + 240 * s / 50) * Math.PI / 180; return ; } function arc(s1, s2, rad) { var p1 = pt(s1, rad), p2 = pt(s2, rad); var large = (240 * (s2 - s1) / 50) > 180 ? 1 : 0; return 'M' + p1.toFixed(1) + ' ' + p1.toFixed(1) + ' A' + rad + ' ' + rad + ' 0 ' + large + ' 1 ' + p2.toFixed(1) + ' ' + p2.toFixed(1); } var ticks = '', lbl = ''; for (var s = 0; s <= 50; s += 5) { var big = s % 10 === 0, a = pt(s, r - 16), b = pt(s, r - (big ? 34 : 26)); ticks += ''; if (big && s !== 40 && s !== 0 && s !== 50) { var l = pt(s, r - 50); lbl += '' + s + ''; } } var l41 = pt(41, r + 18); lbl += '41'; var n0 = pt(0, r - 24); return ''; } function themeRows(th) { var rows = Object.keys(th).map(function (id) { var t = th; return { id: id, n: t.n, ok: t.ok, r: t.ok / t.n }; }); rows.sort(function (a, b) { return a.r - b.r || b.n - a.n; }); return rows.map(function (x) { var m = THEMES[x.id] || { nom: x.id }; var ico = m.ico ? '![](' + esc(SIGNS + m.ico) + ')

' : '' + icon('pt-i-car') + ''; var cls = x.r >= 0.99 ? '' : (x.r >= 0.5 ? 'mid' : 'low'); return '' + ico + '' + esc(m.nom) + '' + x.ok + '/' + x.n + ''; }).join(''); } function weakest(th) { var best = null; Object.keys(th).forEach(function (id) { var t = th; var ko = t.n - t.ok, r = t.ok / t.n; if (ko > 0 && (!best || ko > best.ko || (ko === best.ko && r < best.r))) best = { id: id, ko: ko, r: r }; }); return best ? best.id : ''; } function weakTxt(th) { var id = weakest(th); return id ? (ART || '') : ''; } function finish() { running = false; phase = ''; if (phone) phone.classList.remove('live'); var S = stats(); sset('pt_score', String(S.s50)); sset('pt_pass', S.pass ? '1' : '0'); beacon('pt_test_fin_' + S.bons); screen.innerHTML = topHtml('Test terminé', '', false) + '' + '**' + S.bons + '/10**Ton résultat complet est juste en dessous.

'; var see = qs('', screen); if (see) see.addEventListener('click', function () { smooth(report); }); renderReport(S); personalize(); } function verdictText(S) { var diff = 41 - S.s50; if (S.s50 >= 41 && !S.graves) return 'À l’examen, ce serait **réussi**, avec ' + (S.s50 - 41) + ' ' + plural(S.s50 - 41, 'point', 'points') + ' d’avance. Reste à le prouver sur 50 questions.'; if (S.s50 >= 41) return 'À l’examen, ce serait **réussi**, avec ' + (S.s50 - 41) + ' ' + plural(S.s50 - 41, 'point', 'points') + ' d’avance. Mais attention à ta faute grave : **deux, et c’est l’échec**.'; return 'À l’examen, ce serait **recalé**. Il te manque **' + diff + ' ' + plural(diff, 'point', 'points') + '**.'; } function renderReport(S) { if (!report) return; var weak = weakTxt(S.th); report.innerHTML = '' + 'Ton résultat

## ' + (S.pass ? 'Tu as le niveau sur ces 10 questions.' : (weak ? 'Tes points se perdent sur ' + esc(weak) + '.' : 'Tu y es presque.')) + '

' + '' + '' + gaugeSvg() + '**0/50**ramené sur 50' + (S.pass ? 'RÉUSSI' : 'RECALÉ') + '' + '' + verdictText(S) + '

' + (S.graves ? '![](' + esc(SIGNS + 'a51.png') + ')**' + S.graves + ' ' + plural(S.graves, 'faute grave', 'fautes graves') + '.** ' + (S.graves > 1 ? 'Le jour J, chacune te coûte 5 points d’un coup. Deux, et c’est l’échec.' : 'Le jour J, elle te coûte 5 points d’un coup. Une deuxième, et c’est l’échec.') + '

' : '') + '' + 'Tes points, thème par thème

' + 'Ton plan jusqu’au jour J

' + 'Ton examen, c’est quand ?

' + '' + icon('pt-i-cal') + 'Ton examen' + '' + '' + ''; report.hidden = false; report.classList.add('in'); report.setAttribute('data-weak', weak || ''); wireReport(S); setTimeout(function () { smooth(report); }, 250); var played = false; function play() { if (played) return; played = true; var nd = qs('', report); if (nd) setTimeout(function () { nd.style.transform = 'rotate(' + (240 * S.s50 / 50) + 'deg)'; }, 80); countUp(qs('', report), S.s50, 1900, '/50'); setTimeout(function () { var st = qs('', report); if (st) st.classList.add('in'); var g = qs('.pt-gauge', report); if (!S.pass && g) { g.classList.add('pt-shake'); } if (S.pass && st) { var r = st.getBoundingClientRect(); burst(r.left + r.width / 2, r.top + r.height / 2, 90); } }, reduced() ? 0 : 2050); qsa('.pt-themes .bar i', report).forEach(function (el, k) { setTimeout(function () { el.style.width = el.getAttribute('data-w') + '%'; }, 500 + k * 120); }); } if ('IntersectionObserver' in w) { var io = new IntersectionObserver(function (en) { en.forEach(function (x) { if (x.isIntersecting) { play(); io.disconnect(); } }); }, { threshold: 0.35 }); io.observe(qs('.pt-gauge', report)); } else play(); } function wireReport(S) { var cal = qs('', report), nod = qs('', report), out = qs('', report); var pk = qs('', report), pd = qs('', report), pdt = qs('', report); if (cal) { var today = new Date(); today.setHours(0, 0, 0, 0); var sel = sget('pt_date'); if (!(sel && /^\d{4}-\d{2}-\d{2}$/.test(sel))) sel = ''; var cp = sel && sel >= isoDate(today) ? calPage(sel, today) : 0; var drawCal = function (dir) { cal.innerHTML = calHtml(cp, sel, today); if (dir && !reduced()) { var g = qs('.pt-cal-grid', cal); if (g) g.classList.add(dir > 0 ? 'pt-slide-n' : 'pt-slide-p'); } }; var showPicked = function (txt) { pdt.innerHTML = txt; pk.hidden = true; pd.hidden = false; }; var choisir = function (v) { sel = v; sset('pt_date', v); sset('pt_nodate', '0'); nod.setAttribute('aria-pressed', 'false'); beacon('pt_plan_date'); drawCal(0); setTimeout(function () { showPicked(esc(longDate(v)) + '*' + quand(daysTo(v)) + '*'); plan(out, S, v); smooth(pd, 'nearest'); }, reduced() ? 0 : 240); }; drawCal(0); cal.addEventListener('click', function (e) { var b = e.target.closest ? e.target.closest(',') : null; if (!b || b.disabled) return; if (b.hasAttribute('data-pt-cal-nav')) { var dir = +b.getAttribute('data-pt-cal-nav'); cp = Math.max(0, cp + dir); drawCal(dir); return; } choisir(b.getAttribute('data-pt-day')); }); nod.addEventListener('click', function () { sel = ''; sset('pt_date', ''); sset('pt_nodate', '1'); nod.setAttribute('aria-pressed', 'true'); beacon('pt_plan_nodate'); drawCal(0); showPicked('Pas encore de date'); plan(out, S, null); smooth(pd, 'nearest'); }); qs('', report).addEventListener('click', function () { pd.hidden = true; pk.hidden = false; smooth(pk, 'nearest'); }); if (sel && daysTo(sel) >= 0) { showPicked(esc(longDate(sel)) + '*' + quand(daysTo(sel)) + '*'); plan(out, S, sel); } else if (sget('pt_nodate') === '1') { nod.setAttribute('aria-pressed', 'true'); showPicked('Pas encore de date'); plan(out, S, null); } } var tog = qs('', report), cor = qs('', report); if (tog && cor) tog.addEventListener('click', function () { var open = cor.hidden; if (open && !cor.innerHTML) cor.innerHTML = corHtml(); cor.hidden = !open; tog.setAttribute('aria-expanded', open ? 'true' : 'false'); tog.textContent = open ? 'Masquer la correction' : 'Voir la correction des 10 questions'; if (open) beacon('pt_cor_open'); }); var again = qs('', report); if (again) again.addEventListener('click', function () { beacon('pt_test_again'); smooth(phone, 'center'); start(); }); } var MOIS = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre']; var JOURS = ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']; function parseIso(v) { var p = v.split('-'); return new Date(+p, +p - 1, +p); } function isoDate(t) { return t.getFullYear() + '-' + ('0' + (t.getMonth() + 1)).slice(-2) + '-' + ('0' + t.getDate()).slice(-2); } function daysTo(v) { var n = new Date(); n.setHours(0, 0, 0, 0); return Math.round((parseIso(v) - n) / 86400000); } function longDate(v) { var t = parseIso(v), j = t.getDate(); var s = JOURS[t.getDay()] + ' ' + (j === 1 ? '1er' : j) + ' ' + MOIS[t.getMonth()]; return s.charAt(0).toUpperCase() + s.slice(1); } function quand(dj) { return dj === 0 ? 'aujourd’hui' : (dj === 1 ? 'demain' : 'dans ' + dj + ' jours'); } var MOIS_C = ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.']; var CAL_J = 42; function lundi(t) { var x = new Date(t.getFullYear(), t.getMonth(), t.getDate()); x.setDate(x.getDate() - (x.getDay() + 6) % 7); return x; } function calPage(v, today) { return Math.max(0, Math.floor(Math.round((parseIso(v) - lundi(today)) / 86400000) / CAL_J)); } function calHtml(p, sel, today) { var base = lundi(today); base.setDate(base.getDate() + p * CAL_J); var fin = new Date(base.getTime()); fin.setDate(fin.getDate() + CAL_J - 1); var lim = new Date(today.getTime()); lim.setDate(lim.getDate() + 365); var tIso = isoDate(today), deb = p === 0 ? today : base; var titre = deb.getMonth() === fin.getMonth() ? MOIS[deb.getMonth()] + ' ' + fin.getFullYear() : MOIS_C[deb.getMonth()] + (deb.getFullYear() !== fin.getFullYear() ? ' ' + deb.getFullYear() : '') + ' à ' + MOIS_C[fin.getMonth()] + ' ' + fin.getFullYear(); var h = '' + '**' + titre.charAt(0).toUpperCase() + titre.slice(1) + '**' + '' + 'LMMJVSD'; for (var k = 0; k < CAL_J; k++) { var t = new Date(base.getFullYear(), base.getMonth(), base.getDate() + k), v = isoDate(t), j = t.getDate(); var cls = (t.getMonth() % 2 ? ' alt' : '') + (v === tIso ? ' is-today' : '') + (v === sel ? ' is-sel' : ''); h += ''; } return h + ''; } var OFFRES = { semaine: { sku: 'simulations-hebdo', nom: 'À la semaine', prix: '9,99 €', jour: '1,43 € / jour', btn: 'Commencer à la semaine' }, mois: { sku: 'theorie-mensuel', nom: 'Au mois', prix: '24,99 €', jour: '0,83 € / jour', btn: 'Commencer au mois' }, an: { sku: 'theorie-1an', nom: '1 an', prix: '99 €', jour: '0,27 € / jour', btn: 'Prendre l’année' } }; function offreFor(dj) { if (dj === null || dj > 90) return 'an'; if (dj < 14) return 'semaine'; return 'mois'; } function plan(out, S, v) { if (!out) return; var dj = v ? daysTo(v) : null; if (dj !== null && dj < 0) { out.hidden = false; out.innerHTML = 'Cette date est passée. *Choisis la prochaine.*

'; return; } var wid = weakest(S.th); var wk = '**' + esc(wid ? ART : 'les fautes graves') + '**'; var titre, steps; if (dj === null) { titre = 'Pas encore de date ? *Prends de l’avance.*'; steps = ['**Maintenant**\u00a0: les 50 leçons, dans l’ordre, avec leurs quiz.', '**Ensuite**\u00a0: les 15 examens blancs, chapitre par chapitre.', '**Quand ta date tombe**\u00a0: une simulation par jour jusqu’à l’examen. Tu y vas prêt, et couvert par la garantie.']; } else if (dj === 0) { titre = 'C’est aujourd’hui. *Fonce.*'; steps = ['**Maintenant**\u00a0: une simulation complète de 50 questions.', '**Ensuite**\u00a0: relis chaque correction, surtout les fautes graves.', '**Avant de partir**\u00a0: revois ' + wk + '.']; } else if (dj === 1) { titre = 'C’est *demain*.'; steps = ['**Ce soir**\u00a0: une simulation complète de 50 questions, puis lis chaque correction.', '**Demain matin**\u00a0: relis tes erreurs, surtout sur ' + wk + '.', '**Ton objectif**\u00a0: 41 sur 50 ou plus.']; } else if (dj === 2) { titre = 'Il te reste *2 jours*.'; steps = ['**Ce soir**\u00a0: une simulation complète de 50 questions, puis lis chaque correction.', '**Demain**\u00a0: l’examen blanc sur ' + wk + ', puis une deuxième simulation.', '**Ton objectif**\u00a0: 41 sur 50 ou plus.']; } else if (dj <= 6) { titre = 'Il te reste *' + dj + ' jours*.'; steps = ['**Aujourd’hui**\u00a0: les leçons et l’examen blanc sur ' + wk + (wid ? ', ton point faible.' : '.'), '**Chaque jour**\u00a0: une simulation complète, jusqu’à 41 sur 50 ou plus.', '**La veille**\u00a0: une dernière simulation, puis repos.']; } else if (dj <= 21) { titre = 'Il te reste *' + dj + ' jours*. ' + (dj < 14 ? 'On s’y met aujourd’hui.' : 'C’est largement assez.'); steps = ['**Les premiers jours**\u00a0: les 50 leçons et les 15 examens blancs, en commençant par ' + wk + '.', '**Les 5 derniers jours**\u00a0: une simulation par jour, jusqu’à 41 sur 50 ou plus.', '**Le jour J**\u00a0: tu y vas prêt, et couvert par la garantie.']; } else { titre = 'Il te reste *' + dj + ' jours*. Tu as le temps de bien faire.'; steps = ['**D’abord**\u00a0: les 50 leçons et les 15 examens blancs, à ton rythme.', '**Les deux dernières semaines**\u00a0: une simulation par jour, jusqu’à 41 sur 50 ou plus.', '**Le jour J**\u00a0: tu y vas prêt, et couvert par la garantie.']; } var o = OFFRES[offreFor(dj)]; out.hidden = false; out.innerHTML = '' + titre + '

1. ' + s + '

' + 'Ce qu’il te faut**' + o.nom + ' · ' + o.prix + '**' + o.jour + '[' + o.btn + '](/paiement/?offre=' + o.sku + ')'; pick(offreFor(dj), true); } function corHtml() { return '1. ' + mk + '' + esc(q.t) + chip + '' + (q.i ? '![](' + esc(media(q.i)) + ')' : '') + (ok ? 'Bonne réponse : **' + esc(q.r[q.ok]) + '**' : '' + toi + 'Bonne réponse : **' + esc(q.r[q.ok]) + '**') + (q.e ? '' + esc(q.e) + '' : '') + '

'; } function personalize() { var sc = sget('pt_score'); if (sc === null || sc === '') return; var s = +sc, pass = s >= 41, manque = 41 - s; var you = qs(''), stt = qs(''); if (you) { you.innerHTML = 'Ton test : **' + s + '/50**'; you.hidden = false; } if (stt) stt.innerHTML = '**Ton score : ' + s + '/50**' + (pass ? 'Au-dessus des 41 points demandés' : 'Il te manque ' + manque + ' ' + plural(manque, 'point', 'points')); } var fgau = qs(''); if (fgau) { fgau.innerHTML = gaugeSvg() + '**0/50**le jour JRÉUSSI'; } if (screen) { if (POOL.length >= NB) { demo(); root.addEventListener('click', function (e) { var t = e.target.closest ? e.target.closest(',,') : null; if (!t || !root.contains(t)) return; e.preventDefault(); if (t.hasAttribute('data-pt-mute')) { voix = false; lset('pt_voix', 'off'); } if (t.hasAttribute('data-pt-start')) smooth(phone, w.innerWidth < 900 ? 'start' : 'center'); if (!running) start(); }); d.addEventListener('keydown', function (e) { if (!running || lock || e.altKey || e.ctrlKey || e.metaKey) return; var tag = (d.activeElement && d.activeElement.tagName) || ''; if (tag === 'INPUT' || tag === 'TEXTAREA') return; var map = { a: 0, b: 1, c: 2, d: 3, '1': 0, '2': 1, '3': 2, '4': 3 }; var k = String(e.key || '').toLowerCase(); if (!(k in map)) return; var b = qsa('.pt-q-opts button', screen)[map]; if (b) { e.preventDefault(); b.click(); } }); } else { screen.innerHTML = topHtml('Examen théorique', '', false) + 'La simulation gratuite t’attend.

[Faire la simulation gratuite](/code/exercices/simulation-examen-gratuite/)'; } } root.addEventListener('click', function (e) { var t = e.target.closest ? e.target.closest('') : null; if (t && root.contains(t)) beacon(t.getAttribute('data-pt-evt')); }); var cards = qsa(''); function pick(v) { cards.forEach(function (c) { c.classList.toggle('is-pick', c.getAttribute('data-pt-card') === v); }); sset('pt_when', v); } cards.forEach(function (c) { c.addEventListener('click', function (e) { if (e.target.closest && e.target.closest('a,button')) return; var b = qs('.pt-btn', c); if (b) b.click(); }); }); var initial = location.hash === '#an' ? 'an' : sget('pt_when'); if (initial && /^(semaine|mois|an)$/.test(initial)) pick(initial); var sim = qs(''); if (sim) { var E = 3, G = 0, lastPass = null; var oe = qs('', sim), og = qs('', sim), osc = qs('', sim), obar = qs('', sim), ov = qs('', sim), oo = qs('', sim); var shown = 47; function render() { var s = Math.max(0, 50 - E - 5 * G), pass = s >= 41; oe.textContent = String(E); og.textContent = String(G); var from = shown; shown = s; if (reduced()) osc.innerHTML = s + '/50'; else { var t0 = 0; var st = function (t) { if (!t0) t0 = t; var k = Math.min(1, (t - t0) / 380); osc.innerHTML = Math.round(from + (s - from) * k) + '/50'; if (k < 1) w.requestAnimationFrame(st); }; w.requestAnimationFrame(st); } obar.style.width = (s * 2) + '%'; obar.style.background = pass ? 'linear-gradient(90deg,#10b981,#6ee7b7)' : 'linear-gradient(90deg,#ef4444,#ff8a8a)'; oo.style.setProperty('--glow', pass ? 'rgba(52,211,153,.32)' : 'rgba(239,68,68,.34)'); ov.textContent = pass ? 'RÉUSSI' : 'RECALÉ'; ov.className = 'pt-sim-v ' + (pass ? 'ok' : 'ko'); if (lastPass !== null && lastPass !== pass) { void ov.offsetWidth; ov.classList.add('pop'); } lastPass = pass; } sim.addEventListener('click', function (e) { var b = e.target.closest(','); if (!b) return; if (b.hasAttribute('data-pt-preset')) { var p = b.getAttribute('data-pt-preset').split(','); E = +p; G = +p; } else { var dd = +b.getAttribute('data-d'); if (b.getAttribute('data-pt-sim-btn') === 'e') E = Math.min(20, Math.max(0, E + dd)); else G = Math.min(5, Math.max(0, G + dd)); } if (!sim.dataset.played) { sim.dataset.played = '1'; beacon('pt_sim_play'); } render(); }); render(); } function onVisible(el, fn, th) { if (!el) return; if (!('IntersectionObserver' in w) || reduced()) { fn(); return; } var io = new IntersectionObserver(function (en) { en.forEach(function (x) { if (x.isIntersecting) { fn(); io.disconnect(); } }); }, { threshold: th || 0.3 }); io.observe(el); } qsa('').forEach(function (el) { onVisible(el, function () { countUp(el, +el.getAttribute('data-pt-count'), 1400, el.getAttribute('data-pt-suffix') || ''); }); }); onVisible(fgau, function () { var sc = sget('pt_score'), from = sc !== null && sc !== '' ? Math.max(0, Math.min(50, +sc)) : 0; var to = Math.max(46, Math.min(50, from + 4)); var nd = qs('', fgau), rd = qs('', fgau), st = qs('', fgau); if (nd) { nd.style.transition = 'none'; nd.style.transform = 'rotate(' + (240 * from / 50) + 'deg)'; nd.getBoundingClientRect(); nd.style.transition = ''; } if (reduced()) { if (nd) nd.style.transform = 'rotate(' + (240 * to / 50) + 'deg)'; rd.innerHTML = to + '/50'; st.classList.add('in'); return; } setTimeout(function () { if (nd) nd.style.transform = 'rotate(' + (240 * to / 50) + 'deg)'; var t0 = 0; var step = function (t) { if (!t0) t0 = t; var k = Math.min(1, (t - t0) / 1900); var e = 1 - Math.pow(1 - k, 3); rd.innerHTML = Math.round(from + (to - from) * e) + '/50'; if (k < 1) w.requestAnimationFrame(step); }; w.requestAnimationFrame(step); }, 350); setTimeout(function () { st.classList.add('in'); var r = st.getBoundingClientRect(); burst(r.left + r.width / 2, r.top + r.height / 2, 110); }, 2400); }, 0.55); var odds = qs(''); if (odds) { var dotsEl = qs('', odds), oddsT = qs('', odds), oddsN = qs('', odds), oddsL = qs('', odds), oddsLeg = qs('', odds); var seed = 11, ordre = [], rate = {}, dh = ''; var rnd = function () { seed = (seed * 9301 + 49297) % 233280; return seed / 233280; }; for (var oi = 0; oi < 100; oi++) ordre.push(oi); for (var oj = 99; oj > 0; oj--) { var ok2 = Math.floor(rnd() * (oj + 1)); var tmp = ordre; ordre = ordre; ordre = tmp; } ordre.slice(0, 63).forEach(function (k) { rate = 1; }); for (var ok3 = 0; ok3 < 100; ok3++) { dh += rate ? '*' + icon('pt-i-x') + '' + icon('pt-i-shield') + '*' : '*' + icon('pt-i-check') + '*'; } dotsEl.innerHTML = dh; var ODDS = { seul: { t: 'Sur 100 examens, *63 finissent recalés.*', n: 63, l: 'des examens théoriques ratés en Wallonie en 2025. À Bruxelles, 59 % en 2024.', leg: 'RéussiRecalé' }, avec: { t: 'Avec nous, *tu ne peux que gagner.*', n: 100, l: 'des issues couvertes : soit tu réussis, soit ton examen est remboursé. Il suffit de suivre les 4 étapes de la méthode.', leg: 'RéussiExamen remboursé' } }; var oddsMode = 'seul', oddsUser = false, oddsShown = 0; var oddsNum = function (to) { var from = oddsShown; oddsShown = to; if (reduced()) { oddsN.innerHTML = to + ' %'; return; } var t0 = 0; var st = function (t) { if (!t0) t0 = t; var k = Math.min(1, (t - t0) / 1300); var e = 1 - Math.pow(1 - k, 3); oddsN.innerHTML = Math.round(from + (to - from) * e) + ' %'; if (k < 1) w.requestAnimationFrame(st); }; w.requestAnimationFrame(st); }; var oddsSet = function (m) { if (m === oddsMode && oddsShown) return; oddsMode = m; odds.setAttribute('data-mode', m); qsa('', odds).forEach(function (b) { b.setAttribute('aria-pressed', b.getAttribute('data-pt-odds-mode') === m ? 'true' : 'false'); }); oddsT.innerHTML = ODDS.t; oddsL.innerHTML = ODDS.l; oddsLeg.innerHTML = ODDS.leg; oddsT.classList.remove('pt-swap'); void oddsT.offsetWidth; oddsT.classList.add('pt-swap'); oddsNum(ODDS.n); }; qsa('', odds).forEach(function (b) { b.addEventListener('click', function () { oddsUser = true; var m = b.getAttribute('data-pt-odds-mode'); if (m !== oddsMode) beacon('pt_odds_' + m); oddsSet(m); }); }); onVisible(odds, function () { odds.classList.add('in'); oddsNum(63); setTimeout(function () { if (!oddsUser) oddsSet('avec'); }, reduced() ? 0 : 3400); }, 0.3); } var reveals = qsa('.pt-reveal'); if ('IntersectionObserver' in w && !reduced()) { var rio = new IntersectionObserver(function (en) { en.forEach(function (x) { if (x.isIntersecting) { x.target.classList.add('in'); rio.unobserve(x.target); } }); }, { rootMargin: '0px 0px -8% 0px' }); reveals.forEach(function (r) { rio.observe(r); }); } else reveals.forEach(function (r) { r.classList.add('in'); }); var body = qs(''), svg = qs(''); if (body && svg) { var paths = qsa('', svg), lit = qs('', svg), car = qs('', svg), miles = qsa('', body); var L = 0, H = 0, raf = 0; function build() { var rect = body.getBoundingClientRect(), fin = qs('.pt-finish', body); H = Math.max(200, Math.round(fin ? fin.offsetTop - 22 : rect.height)); var W = 64, cx = 32, amp = w.innerWidth >= 900 ? 30 : 16, seg = 5; svg.setAttribute('width', W); svg.setAttribute('height', H); svg.setAttribute('viewBox', '0 0 ' + W + ' ' + H); svg.style.height = H + 'px'; var dpath = 'M' + cx + ' 0'; for (var i = 0; i < seg; i++) { var y0 = H * i / seg, y1 = H * (i + 1) / seg, dir = i % 2 ? -1 : 1; dpath += ' C' + (cx + amp * dir) + ' ' + (y0 + (y1 - y0) * 0.35).toFixed(1) + ' ' + (cx + amp * dir) + ' ' + (y0 + (y1 - y0) * 0.65).toFixed(1) + ' ' + cx + ' ' + y1.toFixed(1); } paths.forEach(function (p) { p.setAttribute('d', dpath); }); L = lit.getTotalLength(); lit.style.strokeDasharray = L + ' ' + L; update(); } function update() { raf = 0; var rect = body.getBoundingClientRect(); var p = Math.min(1, Math.max(0, (w.innerHeight * 0.62 - rect.top) / H)); lit.style.strokeDashoffset = String(L * (1 - p)); var at = lit.getPointAtLength(L * p), nx = lit.getPointAtLength(Math.min(L, L * p + 2)); var ang = Math.atan2(nx.y - at.y, nx.x - at.x) * 180 / Math.PI - 90; car.setAttribute('transform', 'translate(' + at.x.toFixed(1) + ' ' + at.y.toFixed(1) + ') rotate(' + ang.toFixed(1) + ')'); var carY = rect.top + at.y; miles.forEach(function (m) { m.classList.toggle('on', m.getBoundingClientRect().top + 30 < carY); }); } function onScroll() { if (!raf) raf = w.requestAnimationFrame(update); } build(); w.addEventListener('scroll', onScroll, { passive: true }); w.addEventListener('resize', function () { build(); }); if ('ResizeObserver' in w) new ResizeObserver(function () { build(); }).observe(body); } var sticky = qs(''); if (sticky && 'IntersectionObserver' in w) { var vis = {}; var watch = [[qs('.pt-hero-grid'), 'hero'], [qs('#offre'), 'offre'], [qs('.pt-final'), 'fin']]; var so = new IntersectionObserver(function (en) { en.forEach(function (x) { vis[x.target.getAttribute('data-pt-watch')] = x.isIntersecting; }); var on = !vis.hero && !vis.offre && !vis.fin; sticky.classList.toggle('on', on); sticky.setAttribute('aria-hidden', on ? 'false' : 'true'); var a = qs('a', sticky); if (a) a.setAttribute('tabindex', on ? '0' : '-1'); }, { threshold: 0 }); watch.forEach(function (x) { if (x) { x.setAttribute('data-pt-watch', x); so.observe(x); } }); } personalize(); })();

---

*Source: [Permis théorique](https://permis-online.be/examen-theorique/) · Published 2026-09-26 · Updated 2026-09-26*
*Author: Wenceslas Dasnois (Fondateur de Permis Online · Fondateur de l'Observatoire du Permis Belge (vérification des statistiques officielles du permis, 3 régions)) · Permis Online*
