Créer un sélecteur de créneaux horaires dans Salesforce
Salesforce vous donne un sélecteur de date et un champ heure. Il ne vous donne pas de grille de créneaux sélectionnables. Voici ce qu'exige un vrai sélecteur de créneaux horaires dans Salesforce, et comment en obtenir un sans le développer.
Un sélecteur de créneaux est une interface bien précise : un calendrier où l'on choisit un jour, et en dessous une grille qui découpe cette journée en créneaux réservables, les créneaux pris étant clairement indisponibles. Tout le monde la connaît, car tous les sites de réservation l'utilisent. Salesforce n'en fournit pas.
Ce que Salesforce vous donne vraiment
Un champ Date/Heure standard s'affiche comme une saisie de date et une liste déroulante d'heures. C'est un contrôle de formulaire, et il ignore tout de ce qui est déjà réservé. Rien n'empêche un utilisateur de choisir un créneau déjà pris, puisque le champ ne sait pas que d'autres enregistrements existent. La vérification arrive plus tard, dans une règle de validation ou un flux, une fois que l'utilisateur a déjà fait son choix.
Tout est là. Un sélecteur de créneaux interroge les enregistrements existants avant que l'utilisateur ne choisisse, et ne propose que ce qui est libre.
Ce qu'un vrai sélecteur de créneaux doit faire
| Exigence | Champs standard | Avec MultiDatePick |
|---|---|---|
| Découper la journée en intervalles | Aucune notion d'intervalle | N'importe quel intervalle (15, 30 ou 60 minutes sont courants) |
| Connaître la journée de travail | N'importe quelle heure est valide | Heure de début et de fin, ou heures ouvrables propres à chaque ressource |
| Montrer ce qui est pris | Rien n'est affiché | Les réservations existantes dessinées sur la grille |
| Plusieurs personnes par créneau | Impossible à exprimer | Capacité, avec un badge en temps réel « réservé sur la capacité » |
| Des horaires différents selon les jours | Un champ, une valeur | Allow Different Times Per Date (Autoriser des heures différentes) |
| Bloquer un conflit à l'enregistrement | Seulement avec une logique sur mesure | Conflict Behavior (Comportement en cas de conflit) : bloquer, ignorer ou autoriser |
Pourquoi le développer soi-même demande plus de travail qu'il n'y paraît
L'affichage est la partie facile. Voici ce que personne ne chiffre :
Interroger les réservations
Efficacement, sans exploser les limites du gouverneur quand quelqu'un ouvre une vue sur deux mois.
Le calcul des chevauchements
Délicat dès que les réservations peuvent avoir des durées différentes.
Les fuseaux horaires
Le fuseau de l'utilisateur et celui de l'enregistrement ne sont pas toujours les mêmes.
Les accès concurrents
Deux personnes qui regardent le même créneau libre au même moment.
La sécurité au niveau du champ
Le composant doit respecter ce que l'utilisateur a le droit de voir.
Accessibilité
Une grille de divs cliquables n'est pas navigable au clavier par défaut.
L'accessibilité demande le plus de soin. Une grille de créneaux a besoin d'une vraie sémantique de grille ARIA, d'une navigation aux flèches et d'un état transmis autrement que par la couleur. C'est ce que la plupart des développements internes laissent de côté, et ce que demande une revue d'achat.
Regrouper les créneaux pour qu'on puisse vraiment les parcourir
Une journée de 9 h à 17 h en intervalles de 15 minutes, c'est 32 créneaux. En liste continue, c'est un mur. Les regrouper par période (matin, après-midi, soir) en fait trois blocs courts. C'est surtout utile quand c'est un client qui choisit, sur son téléphone.
Quand vous n'avez pas besoin du calendrier
Parfois, la date est déjà connue. Sur la page d'un rendez-vous qui a déjà une date, un calendrier mensuel est superflu. Time Grid Only (Grille horaire uniquement) retire le calendrier et n'affiche que la grille des créneaux pour cette date, lue dans un champ de l'enregistrement hôte ou définie directement.
Les paramètres qui font le sélecteur
Chacun est un champ de l'assistant de configuration. Rien ici ne demande de code.
| Paramètre | Rôle | Nom d'API |
|---|---|---|
| Intervalle horaire, en minutes (Time Slot Interval (Minutes)) | La durée de chaque créneau. N'importe quel nombre de minutes. | timeInterval |
| Heure min / Heure max (Earliest Time / Latest Time) | La plage couverte par la grille dans le composant Dates & Times. | minTime, maxTime |
| Champ Début / Fin des heures ouvrables (Business Hours Start / End Field) | Les horaires de travail propres à chaque ressource, dans le composant Booking. | businessHoursStartField |
| Champ Capacité (Capacity Field) | Le nombre de réservations qu'une ressource accepte par créneau. | capacityField |
| Regrouper les créneaux horaires par période (Group Time Slots by Period) | Des sections Matin, Après-midi et Soir. | groupTimeSlotsByPeriod |
| Comportement en cas de conflit (Conflict Behavior) | Bloquer, ignorer ou autoriser un conflit à l'enregistrement. | conflictBehavior |
| Grille horaire uniquement (Time Grid Only) | La grille de créneaux seule, pour une date déjà connue. | timeGridOnly |
Questions fréquentes
Qu'est-ce qu'un sélecteur de créneaux horaires ?
Un calendrier où l'on choisit un jour, avec en dessous une grille qui découpe la journée en créneaux réservables. Les créneaux déjà pris apparaissent comme indisponibles : on ne peut choisir que des horaires libres.
Salesforce propose-t-il un sélecteur de créneaux horaires ?
Pas pour vos propres objets. Un champ Date/Heure standard se résume à une saisie de date et une liste déroulante d'heures, et il ne voit pas les autres enregistrements. MultiDatePick ajoute un sélecteur de créneaux qui lit les réservations existantes au chargement du calendrier et ne propose que ce qui est libre.
Les créneaux peuvent-ils avoir n'importe quelle durée ?
Oui. L'intervalle des créneaux est un nombre de minutes au choix. 15, 30 ou 60 minutes sont courants, et un créneau d'entretien de 45 minutes fonctionne de la même façon.
Faut-il de l'Apex ou un développeur pour ajouter un sélecteur de créneaux ?
Non. L'assistant de configuration écrit la configuration, et le composant se place sur une page d'enregistrement, une page d'application, un site Experience Cloud ou un flux d'écran (Screen Flow) en renseignant Config Name. Aucun code à écrire.
Votre sélecteur de créneaux horaires Salesforce, prêt à configurer
Choisissez un créneau libre dans la démo en direct, puis suivez la prise en main pour l'installer dans votre org.
- $20/utilisateur/mois, toutes les fonctionnalités
- Essai gratuit de 30 jours, sans carte
- 100 % natif Salesforce
- Sans Apex
- Bientôt disponible sur Salesforce AppExchange