Créer des formulaires
Logique conditionnelle
Les blocs de logique réagissent à ce qu’un répondant saisit — afficher ou masquer n’importe quel bloc, sauter des pages, bloquer la soumission ou calculer des valeurs. Combinez des règles simples pour créer des branchements sophistiqués, sans code.
Ce que la logique peut faire
Chaque bloc de logique contient une ou plusieurs règles. Chaque règle associe un groupe de conditions (quand doit-elle se déclencher ?) à une ou plusieurs actions (que doit-il se passer ?). Neuf types d’actions sont disponibles :
| Action | Ce qu'elle fait |
|---|---|
| Show | Révéler un bloc masqué — une question, un paragraphe, une image ou une option — lorsque les conditions sont remplies. |
| Hide | Masquer un bloc visible — une question, un paragraphe, une image ou une option — lorsque les conditions sont remplies. |
| Make required | Rendre un champ dynamiquement obligatoire pour certains parcours. |
| Make optional | Assouplir la validation d'un champ obligatoire lorsque les conditions sont remplies. |
| Set next page | Passer directement à une page spécifique — c'est ainsi que vous créez des branchements. |
| Calculate value | Calculer des totaux, des scores ou des prix à partir d'autres réponses. |
| Set payment amount | Définir, augmenter ou diminuer le prix d'un champ Payment en fonction des réponses. |
| Prevent navigation to next page | Empêcher le répondant d'avancer, avec un message facultatif expliquant pourquoi. |
| Prevent submit form | Bloquer la soumission jusqu'à ce que les conditions soient remplies (ex. : conditions acceptées), avec un message facultatif expliquant pourquoi. |
Ajouter un bloc de logique
Un bloc de logique est un élément du document — il se place sur le canevas entre les questions, comme un titre ou une image. Vous pouvez le positionner n’importe où : entre deux champs sur la même page, en haut d’une page, ou juste avant un saut de page.
- 1
Ouvrir le menu slash
Cliquez sur une ligne vide du canevas et tapez /. Le sélecteur de blocs apparaît.
- 2
Rechercher "Logic"
Tapez logic pour filtrer. Sélectionnez Logic dans la catégorie Mise en page. Un nouveau bloc de logique apparaît à l’emplacement du curseur.
- 3
Ajouter une règle
Le bloc se lit Quand … Faire …. Chaque règle contient un groupe de conditions et une ou plusieurs actions.
- 4
Définir les conditions
Choisissez un champ, sélectionnez un opérateur et définissez une valeur. Ajoutez une autre condition, ou ajoutez un ensemble de conditions pour imbriquer un niveau plus profond.
- 5
Choisir les actions
Sélectionnez un type d'action (Show, Hide, Make required, Set next page, etc.) et choisissez la cible — une question, un bloc, une option ou une page.
- 6
Ajouter d’autres règles (optionnel)
Un seul bloc de logique peut contenir plusieurs règles. Chaque règle est indépendante : ses propres conditions, ses propres actions.
Conditions
Les conditions sont le côté Quand d’une règle. Chaque condition choisit un champ, applique un opérateur, et compare souvent avec une valeur. Le sélecteur de champ regroupe ce que vous pouvez surveiller : Questions, Champs masqués, Champs calculés, et Métadonnées (aujourd’hui, la langue du répondant).
All ou Any
Dès qu’une règle comporte deux conditions ou plus, un bouton bascule apparaît en haut de la section Quand :
All — toutes les conditions doivent être vraies pour que la règle se déclenche. Les lignes se lisent avec « et ».
Any — une seule condition vraie suffit. Les lignes se lisent avec « ou ».
Ensembles de conditions
Ajouter un ensemble de conditions imbrique un second groupe dans le premier, sur un seul niveau, avec son propre bouton bascule All/Any. Cela couvre une logique composée comme « plan est Pro et (pays est Norvège ou pays est Suède) ». Un ensemble ne contient que des conditions — il ne peut pas contenir un autre ensemble.
Une question masquée n’a aucune valeur
Si la logique masque une question, la réponse qu’elle contient éventuellement ne compte plus pour rien — ni dans les conditions, ni dans les calculs, ni dans le montant du paiement, ni dans la soumission enregistrée. La réponse ne revient que si la question redevient visible. Il en va de même pour toute question placée dans une ligne, une colonne ou un groupe répétable masqués, et pour une option choisie que la logique masque. Une page que les règles Set next page font sauter compte aussi comme masquée : ses questions ne sont pas obligatoires, et ce qui y a été répondu est écarté. Les champs masqués sont l’inverse : ils conservent toujours leur valeur.
Gardez-le lisible
Si un seul bloc de logique vous semble trop complexe, envisagez de répartir la logique sur plusieurs blocs ou de restructurer les pages de votre formulaire.
Référence des opérateurs
La liste des opérateurs dépend du champ que vous avez choisi — vous ne voyez jamais que ceux que ce champ prend en charge. Ci-dessous, chaque titre nomme l’ensemble exact.
Texte (Text Input, Text Area, et champs calculés de type texte)
| Opérateur | Description |
|---|---|
| is | La valeur correspond, sans tenir compte de la casse ni des espaces au début ou à la fin |
| is not | La valeur ne correspond pas |
| contains | La valeur contient le texte spécifié |
| does not contain | La valeur ne contient pas le texte spécifié |
| starts with | La valeur commence par le texte spécifié |
| ends with | La valeur se termine par le texte spécifié |
| is empty | Le champ n'a pas de valeur |
| is not empty | Le champ a une valeur |
Toute comparaison de texte ignore la casse et les espaces au début et à la fin : x@Competitor.com se termine donc par
@competitor.com.
Les autres champs de type texte proposent un ensemble plus restreint ; choisissez le type qui correspond à la comparaison dont vous avez besoin :
| Champ | Opérateurs proposés |
|---|---|
| contains, does not contain, is, ends with, is empty, is not empty | |
| Website URL | contains, does not contain, is, starts with, ends with, is empty, is not empty |
| Phone Number | is, starts with, contains, is empty, is not empty |
| Hidden field (text) | L'ensemble complet des opérateurs de texte ci-dessus |
Numérique (Number, Star Rating, linear scale, champs masqués et calculés numériques)
| Opérateur | Description |
|---|---|
| is | La valeur correspond exactement |
| is not | La valeur ne correspond pas |
| is greater than | La valeur est supérieure au nombre spécifié |
| is less than | La valeur est inférieure au nombre spécifié |
| is greater than or equal to | La valeur est égale ou supérieure au nombre spécifié |
| is less than or equal to | La valeur est égale ou inférieure au nombre spécifié |
| is between | La valeur se situe dans une plage (inclusive) |
| is empty | Le champ n'a pas de valeur |
| is not empty | Le champ a une valeur |
Checkboxes et picture choice
| Opérateur | Description |
|---|---|
| has checked any of | Au moins une des options spécifiées est cochée |
| has not checked any of | Aucune des options spécifiées n'est cochée |
| has checked all of | Toutes les options spécifiées sont cochées |
| has checked exactly | Les options cochées correspondent exactement à l'ensemble spécifié |
| is empty | Aucune option n'est sélectionnée |
| is not empty | Au moins une option est sélectionnée |
Dropdown et Radio Buttons (sélection unique)
| Opérateur | Description |
|---|---|
| is | L'option sélectionnée correspond exactement |
| is not | L'option sélectionnée ne correspond pas |
| is empty | Rien n'est sélectionné |
| is not empty | Une option est sélectionnée |
Toggle Switch (et champs calculés booléens)
| Opérateur | Description |
|---|---|
| is on | Le bouton bascule est activé |
| is off | Le bouton bascule est désactivé |
Signature
| Opérateur | Description |
|---|---|
| is signed | Une signature a été dessinée |
| is not signed | Aucune signature n'a été dessinée |
File Upload
| Opérateur | Description |
|---|---|
| has file | Au moins un fichier a été téléversé |
| has no file | Aucun fichier n'a été téléversé |
Date Picker et Time Picker
| Opérateur | Description |
|---|---|
| is | Correspondance exacte |
| is not | Ne correspond pas |
| is before | Avant la date/l'heure spécifiée |
| is after | Après la date/l'heure spécifiée |
| is between | Se situe dans une plage de dates/heures |
| is empty | Aucune valeur sélectionnée |
| is not empty | A une valeur |
Ranking
| Opérateur | Description |
|---|---|
| option is ranked first | L'option spécifiée est en première position |
| option is ranked last | L'option spécifiée est en dernière position |
| option is ranked above | L'option spécifiée est classée au-dessus d'une autre option |
Matrix / Grid
| Opérateur | Description |
|---|---|
| row answer is | Une ligne spécifique a la réponse indiquée |
| row answer is not | Une ligne spécifique n'a pas la réponse indiquée |
| row is answered | Une ligne spécifique a été répondue |
| row is not answered | Une ligne spécifique n'a pas été répondue |
Payment
| Opérateur | Description |
|---|---|
| amount equals | Le montant du paiement correspond exactement |
| amount is greater than | Le montant du paiement est supérieur à la valeur spécifiée |
| amount is less than | Le montant du paiement est inférieur à la valeur spécifiée |
| is completed | Le paiement a été traité avec succès |
| is not completed | Le paiement n'a pas encore été traité |
Champs que vous ne pouvez pas surveiller
Planifier un rendez-vous et Documents peuvent être des cibles de visibilité, mais jamais des sources de condition. Une réservation est rattachée à la soumission plutôt que stockée comme une réponse ordinaire, et un bloc Documents ne collecte aucune réponse du tout. Utilisez des réponses de qualification antérieures pour afficher ou masquer l’un ou l’autre. Toute question Planifier un rendez-vous visible doit être réservée avant la soumission ; une question masquée ne bloque pas la soumission. Voir Planification Cal.com avec la logique.
Ciblage
Chaque action nécessite une cible — l’élément sur lequel elle agit. La cible dépend du type d’action :
| Type d'action | Cible | Exemple |
|---|---|---|
| Show / Hide | N’importe quel bloc — une question, un paragraphe, une image, un conteneur de mise en page ou une option spécifique dans un champ à choix multiple | Afficher un paragraphe « Bon choix ! » lorsqu’une option est choisie |
| Make required / Make optional | Une question | Rendre "Restrictions alimentaires" obligatoire uniquement pour les participants en présentiel |
| Set next page | Une page | Passer à la page 5 pour les clients existants |
| Calculate value | Un champ calculé | Additionner trois scores Star Rating pour obtenir un total |
| Set payment amount | Un champ Payment | Augmenter le prix de 15 lorsque "Livraison express" est activé |
| Prevent navigation to next page / Prevent submit form | Pas de cible nécessaire (seulement le message) | Empêcher la soumission tant que le bouton des conditions n'est pas activé |
Show et Hide vont au-delà des questions. Ciblez n’importe quel bloc du canevas — un paragraphe, un titre, une image ou un conteneur de mise en page — pour révéler une note masquée par défaut, ou masquer du contenu lorsqu’il n’est plus pertinent. Ils peuvent aussi cibler des options individuelles dans un champ à choix multiple, pas seulement la question entière. Masquez d’abord un bloc depuis le menu du bloc, puis écrivez une règle pour le révéler.
Combinaison de plusieurs règles
Chaque règle est indépendante, et elles s’évaluent toutes ensemble. Les règles sont lues de haut en bas, à travers les blocs de logique, dans l’ordre du document. La façon dont plusieurs règles portant sur une même cible se combinent dépend de l’action.
| Action | Comment plusieurs règles se combinent |
|---|---|
| Show / Hide, Make required / Make optional | Seule une règle dont les conditions correspondent revendique la cible, donc les règles s'accumulent comme un ou : le bloc est affiché si au moins une règle correspondante l'affiche. Une règle qui ne correspond pas applique son contraire mais ne revendique rien, donc une règle correspondante plus tardive l'emporte quand même. |
| Set next page | Un saut agit quand le répondant clique sur Suivant sur la page qui contient les questions que la règle lit, et sur aucune autre page. Parmi les règles qui agissent là, la première qui correspond l'emporte. Une règle qui ne lit que des champs masqués ou calculés agit sur n'importe quelle page, mais ne saute que vers l'avant. |
| Calculate value | Chaque règle correspondante s'exécute, dans l'ordre, sur la valeur en cours. Rien n'est revendiqué. |
| Set payment amount | Seule une règle « set to » dont les conditions correspondent revendique le prix : la première qui correspond en devient propriétaire, et plusieurs règles « set to » peuvent fixer un prix par palier. « increase by » et « decrease by » ne revendiquent jamais — elles s'accumulent dans l'ordre sur le montant en cours. |
| No rule matches | Le bloc retrouve son état par défaut — masqué s'il l'était par défaut, visible sinon. |
Vous pouvez ainsi pointer plusieurs règles vers un même bloc sans qu’elles entrent en conflit. Un formulaire de retour a une question Radio Buttons — « Quel sujet pouvons-nous vous aider à traiter ? » — avec quatre options, et un champ e-mail « Pouvons-nous vous contacter ? » masqué par défaut. Quatre règles affichent chacune ce même champ e-mail (ainsi que leur propre question de suivi) pour leur option. Le champ e-mail apparaît quelle que soit l’option choisie, et reste masqué uniquement si aucune ne l’est.
Une seule règle suffit souvent
Pour révéler un bloc pour plusieurs réponses, une règle avec Any et une condition par réponse — ou une seule condition is not empty pour toutes les couvrir — est plus facile à lire que quatre règles. Utilisez plusieurs règles lorsque chaque option a aussi besoin de sa propre question de suivi distincte.
Règles en conflit
Lorsque deux règles sont en désaccord sur la même cible — l’une affiche un bloc (Show) tandis qu’une autre le masque ( Hide), ou l’une rend un champ obligatoire tandis qu’une autre le rend facultatif — et que les deux conditions correspondent en même temps, la première règle l’emporte. La règle perdante, plus tardive, est signalée dans l’éditeur : « Cette action ne s’applique jamais — une règle précédente contrôle déjà sa cible. L’ordre des règles décide : la première règle l’emporte. »
Une exception à l’ordre : une règle dont la condition lit un champ calculé s’exécute après la règle qui l’écrit, quel que soit l’ordre du document, afin qu’un score soit toujours calculé avant que quoi que ce soit ne s’y ramifie. Les règles qui écrivent dans les champs calculés les unes des autres en boucle déclenchent un avertissement de publication qui nomme la chaîne — rompez la boucle pour que les valeurs se résolvent de manière prévisible.
Masqué l’emporte sur obligatoire
Une question qui finit masquée n’est jamais obligatoire, qu’elle ait été masquée par une règle ou masquée depuis le menu du bloc sans règle pour la révéler. L’astérisque disparaît et la soumission n’est pas bloquée — sinon un répondant pourrait se retrouver bloqué par un champ qu’il ne peut pas voir.
Cas d’usage courants
Afficher une question de suivi en fonction d’une réponse précédente
Une enquête de satisfaction demande “Comment évaluez-vous votre expérience ?” avec une note de 1 à 5 étoiles (Star Rating). Un bloc de logique en dessous utilise la condition “la note est inférieure ou égale à 3” avec l’action Show ciblant un champ Text Area qui demande “Que pourrions-nous améliorer ?” Les répondants qui donnent 4 ou 5 ne voient jamais la question de suivi.
Révéler un message lorsqu’une option est choisie
Un formulaire d’inscription comporte une question Radio Buttons : « Quelle offre vous convient le mieux ? » En dessous se trouve un paragraphe — « Bon choix ! Notre offre Pro inclut une assistance prioritaire. » — masqué par défaut avec l’option Hide du menu du bloc. Un bloc de logique le révèle : si l’offre est « Pro », Show le paragraphe. Le message d’encouragement n’apparaît que pour ceux qui choisissent Pro, et reste masqué pour tous les autres.
Brancher vers différentes pages en fonction d’une sélection
Un formulaire d’inscription à un événement comporte une question Radio Buttons : “Participez-vous en présentiel ou à distance ?” Deux blocs de logique suivent :
Règle 1 — condition : présence est “En présentiel”, action : Set next page “Détails du lieu”.
Règle 2 — condition : présence est “À distance”, action : Set next page “Configuration du streaming”.
Règle 3 — condition : heure d’arrivée n’est pas vide, action : Set next page “Confirmation”. Heure d’arrivée est une question obligatoire sur “Détails du lieu”.
Les règles 1 et 2 lisent la question présence, donc elles agissent quand le répondant quitte sa page. Ensuite, Suivant continue dans l’ordre des pages. La règle 3 lit une question sur “Détails du lieu”, donc elle agit quand le répondant quitte cette page. Les participants en présentiel sautent alors “Configuration du streaming”. Chaque parcours collecte uniquement les informations pertinentes, puis les deux convergent sur une page “Confirmation” commune.
Calculer un score et brancher en fonction de celui-ci
Un formulaire de qualification des prospects comporte trois questions Star Rating : budget, délais et autorité. Un champ calculé nommé “Score prospect” utilise un bloc de logique avec l’action Calculate value pour additionner la valeur de chaque note. Un second bloc de logique lit le champ calculé : si le Score prospect est supérieur à 12, Set next page “Suivi prioritaire” ; sinon, sauter à la page de confirmation standard.
Réagir à la valeur d’un champ masqué
L’URL renseigne un champ masqué nommé plan (ex. : ?plan=enterprise). Un bloc de logique vérifie : si plan
est “enterprise”, Show la question “Responsable de compte dédié” et Make required
le champ “Taille de l’entreprise”. Les répondants du niveau gratuit ne voient jamais ces questions.
Bloquer la soumission en fonction d’un total calculé
Un formulaire de commande calcule un total en cours. Un bloc de logique utilise la condition : si le Total de commande est inférieur à 10, Prevent submit form. Le répondant ne peut pas soumettre tant que le seuil de commande minimum n’est pas atteint.
Tant qu’une règle de blocage est active, le bouton apparaît indisponible et le répondant est informé pourquoi. Saisissez la raison dans Message affiché au répondant sur la ligne d’action — « Votre commande doit totaliser au moins 10 » — afin qu’il sache quelle réponse modifier. Laissez-le vide et le formulaire revient à « Ce formulaire ne peut pas être envoyé avec les réponses actuelles. » (ou « Vous ne pouvez pas continuer à la page suivante avec les réponses actuelles. » pour un bloc de navigation). Lorsque plusieurs règles de blocage se déclenchent en même temps, la première qui porte un message fournit le texte.
Testez la logique avec Preview
Après avoir configuré vos règles, passez en mode Preview dans la barre d’outils supérieure et remplissez le formulaire comme le ferait un répondant. La logique se déclenche en temps réel en Preview, ce qui vous permet de vérifier chaque branchement, champ masqué et validation avant de publier.