Outils · Utilitaires

Plan de table

Mariage, banquet, séminaire : placez les invités avec des règles dures (ensemble / séparés) et des préférences souples (« aimerait », « préfère éviter »), puis lisez le score de satisfaction.

Calcul 100 % local. Les noms des invités ne quittent pas votre navigateur. Partage via fragment d’URL (#) ou fichier JSON.

Sources et limites
Le plan respectera vos contraintes dures. Les préférences souples sont optimisées au mieux sous un budget de temps : un score inférieur à 100 % n’est pas un bug. Relisez toujours le résultat avant de l’imprimer.
Consultation
Solveur local (pas de sync)

Chaque modification génère un nouveau lien à repartager : ce n’est pas une synchronisation en direct entre plusieurs personnes. Le lien vit dans le fragment d’URL (#) : rien n’est envoyé au serveur.

Lien et export JSON : invités, tables, contraintes et préférences. Générez un plan pour l’inclure aussi dans le lien / l’export. Les noms restent dans le navigateur.

Invités

8/200. Une ligne ou séparés par virgule.

Tables

8 places au total pour 8 invités.

Relations entre personnes

3 relations. « Doit » / « ne doit jamais » sont dures ; « aimerait » / « préfère éviter » sont souples. Sans relation : « peu importe ».

  • Doit être avec · Camille / Alex (contrainte dure)
  • Ne doit jamais être avec · Sam / Léa (contrainte dure)
  • Aimerait être avec · Noah / Inès (préférence souple)

À quoi ça sert

Faire un plan de table à la main sur papier prend des heures : on place les couples, on sépare les brouilles, on remplit les tables… et une dernière contrainte casse tout. L’erreur fréquente est de tout traiter comme obligatoire : une simple « envie » de voisins finit par rendre le problème insoluble.

Ici vous distinguez contraintes dures (« doit » / « ne doit jamais ») et préférences souples (« aimerait » / « préfère éviter »). Exemple : 8 invités, 2 tables de 4, un couple en table d’honneur imposée, une séparation dure, et un « aimerait être avec » : le solveur garantit le dur, puis maximise le score soft (même table ou non) sans curseurs de poids.

Le résultat affiche un score du type « 165/182 points de préférences » et la liste des préférences non tenues. Ce n’est jamais présenté comme un plan parfait.

Questions fréquentes

Quelle différence entre contrainte dure et préférence souple ?
« Doit être avec » et « Ne doit jamais être avec » sont des contraintes dures : si aucune répartition ne les respecte (avec les capacités de tables), l’outil échoue explicitement. « Aimerait être avec » et « Préfère éviter » sont souples : le solveur maximise un score interne (poids fixes, sans curseurs numériques) pendant environ 1 seconde de recherche locale, sans jamais casser une contrainte dure.
Que faire si le score de préférences n’est pas parfait ?
C’est normal : le plan n’est jamais présenté comme parfait. Relisez la liste des préférences non tenues, convertissez une préférence critique en contrainte dure, ajoutez une table, ou cliquez « Autre solution ». Un score de 165/182 points (par ex.) signifie que les contraintes dures tiennent, mais que quelques « aimerait » / « préfère éviter » restent insatisfaits.
Combien d’invités au maximum ?
Jusqu’à 200 personnes, avec des tables de tailles différentes. Au-delà d’une quarantaine d’invités, le calcul passe dans un Web Worker pour ne pas figer l’interface. La phase préférences soft est plafonnée à environ 1 s.
Que faire si l’outil ne trouve aucune solution ?
Les contraintes dures sont trop serrées ou contradictoires (ex. « ensemble » qui force deux personnes « séparées » via une chaîne). L’outil liste les pistes : assouplir des séparations, casser un grand groupe ensemble, ajouter des places, ou revoir les tables imposées. Les préférences souples ne provoquent jamais cet échec.
Puis-je exporter le plan en Excel ?
Oui. Après génération, le bouton « Exporter Excel » produit un fichier .xlsx local (SheetJS) avec trois feuilles : répartition par table, liste alphabétique des invités, et synthèse (effectifs, score de préférences). Aucune donnée n’est envoyée à un serveur.
Mes invités sont-ils envoyés quelque part ?
Non. Tout reste dans votre navigateur. Un lien de partage encode l’état dans le fragment d’URL (#) : ce fragment n’est pas envoyé au serveur HTTP. Ne partagez le lien qu’avec des personnes de confiance.

Comment c’est calculé

Jusqu’à 200 invités et 40 tables. Au-delà d’environ 40 personnes, la recherche passe dans un Web Worker pour ne pas figer l’interface.

  • Ensemble (dur) : union-find. Les personnes liées forment un groupe indivisible placé sur la même table.
  • Séparés (dur) : contraintes entre racines de groupes. Si deux personnes à séparer tombent dans le même groupe « ensemble », contradiction immédiate.
  • Placement hard : backtracking (plus gros groupes d’abord), capacités et tables fixes. Jusqu’à 150 solutions candidates, délai max ~8 s. Échec explicite si impossible.
  • Préférences soft : poids fixes internes (ex. +3 « aimerait », +3 si on évite pour « préfère éviter »). Score = même table / tables différentes uniquement (pas de voisinage ronde ou rectangulaire en V1).
  • Amélioration soft : recherche locale (échange de groupes de même taille, déplacement de groupe) pendant ~1 s, en gardant la meilleure solution trouvée. Les contraintes dures restent intactes.
  • Équilibre des tables (éviter les isolés) : score secondaire parmi les plans hard-feasibles, jamais au prix d’une contrainte cassée.
  • Export : texte (.txt) ou Excel (.xlsx via SheetJS), trois feuilles (par table, par invité, synthèse score). 100 % local.

Si aucune répartition ne satisfait les contraintes dures, l’outil le dit clairement plutôt que d’assouplir vos règles en silence. À fort volume, l’interface passe en listes compactes avec recherche.

Calcul local dans le navigateur, aucun envoi des noms au serveur. Hébergé en France.