Avec une formule, le configurateur calcule lui-même : une surface à partir de la largeur et de la hauteur, un montant à partir de la quantité et du prix unitaire, un supplément à partir d'un choix. Une formule est une caractéristique à part entière qui lit les valeurs d'autres caractéristiques et recalcule à chaque sélection. Vous pouvez afficher son résultat, l'utiliser dans d'autres formules ou le reprendre dans le prix.
Fonctionnement
- Créez une caractéristique et choisissez sous Catégorie de données le Calcul et comme Type de donnée la Formule.
- Sous Paramètres de base, attribuez un Nom interne (ID) parlant, p. ex.
surface. C'est par ce nom que d'autres formules utilisent le résultat. - Sous Paramètres de formule, saisissez la formule dans le champ Calcul (formule), p. ex.
$largeur * $hauteur / 10000. - Si le résultat doit entrer dans le prix, créez une Tarification par paliers – voir Reprendre le résultat dans le prix.
- Réglez la Visibilité sur Non (masqué) si vos clients ne doivent pas voir le résultat.
- Vérifiez le résultat dans l'aperçu avec quelques valeurs de test.

Une formule est une expression JavaScript. Aucune connaissance en programmation n'est nécessaire – les quatre opérations, les parenthèses et quelques fonctions suffisent dans presque tous les cas.
Utiliser des caractéristiques dans la formule
Vous désignez une caractéristique par son Nom interne (ID) précédé d'un $. Les majuscules et minuscules comptent.
| Écriture | Résultat |
|---|---|
$largeur |
La valeur actuelle de la caractéristique (voir le tableau ci-dessous) |
$couleur.price |
Le supplément de la valeur choisie. En sélection multiple, la somme des suppléments choisis. |
$couleur.originalPrice |
Le supplément sans multiplication par une quantité. En V3, identique à .price. |
$$largeur |
Comme $largeur. Avec le moteur Legacy, la formule ne se recalcule toutefois pas si seule cette caractéristique change – seulement si l'une des autres change. En V3, cette différence n'existe pas. |
Quelle valeur obtient-on ?
| Caractéristique | $nom renvoie |
|---|---|
| Sélection, Boutons radio, Liste avec images | Le champ Valeur de l'entrée choisie – pas l'étiquette. Si la valeur est un nombre (120), la formule calcule avec. Sinon, c'est un texte ('bois'). |
| Sélection multiple, Case à cocher | Legacy : une liste des valeurs choisies, p. ex. ['led','variateur']. V3 : vide. Pour les suppléments, utilisez $nom.price. |
| Champ de saisie court / long | La saisie. Les nombres deviennent des nombres, même avec une virgule décimale (12,5 → 12.5). Tout le reste reste du texte. |
| Formule, Liste de prix, Combinaison simple | Leur résultat. Vous pouvez ainsi enchaîner des formules. |
| Rien de choisi, rien de saisi, masqué par une règle | Vide ('') – voir Champs vides. |
Calculer, comparer, décider
| Signe | Signification | Exemple |
|---|---|---|
+ - * / |
Quatre opérations | $largeur * $hauteur |
% |
Reste de la division | $quantite % 10 |
( ) |
Parenthèses | ($largeur + 10) * 2 |
== != < <= > >= |
Comparaison | $largeur > 200 |
&& ! |
et, non | $largeur > 200 && $hauteur > 150 |
condition ? a : b |
Si – alors – sinon | $largeur > 200 ? 25 : 0 |
Ou s'écrit avec deux barres verticales : $largeur > 200 || $hauteur > 150 est vrai si au moins une des deux conditions est remplie.
Attention à ^ : en JavaScript, ce n'est pas un exposant, mais un XOR bit à bit. 2 ^ 3 donne 1, pas 8. Pour les puissances, utilisez Math.pow(2, 3).
Si – alors s'écrit toujours avec ? :. Vous pouvez imbriquer plusieurs niveaux :
$quantite >= 100 ? 7.90 : ($quantite >= 50 ? 8.90 : 10.90)
Renvoyez toujours un nombre. Une simple comparaison comme $largeur > 200 donne 1 ou 0 avec le moteur Legacy, mais aucun résultat en V3. Écrivez donc $largeur > 200 ? 1 : 0.
Fonctions
Les fonctions avec Math. fonctionnent dans les deux moteurs. Les formes courtes sans Math. n'existent qu'en V3.
| Fonction | Signification | Forme courte (V3 uniquement) |
|---|---|---|
Math.round(x) |
Arrondi commercial à l'entier | round(x), avec décimales : round(x, 2) |
Math.ceil(x) |
Arrondi supérieur | ceil(x) |
Math.floor(x) |
Arrondi inférieur | floor(x) |
Math.abs(x) |
Valeur absolue | abs(x) |
Math.min(a, b, …) |
Plus petite valeur | min(a, b, …) |
Math.max(a, b, …) |
Plus grande valeur | max(a, b, …) |
Math.sqrt(x) |
Racine carrée | sqrt(x) |
Math.pow(x, y) |
x puissance y | pow(x, y) |
Math.log(x) |
Logarithme naturel | log(x) |
Math.exp(x) |
e puissance x | exp(x) |
Math.PI |
Nombre π | PI |
Arrondir à des décimales dans les deux moteurs : Math.round(x * 100) / 100 (deux décimales) ou Math.ceil(x * 2) / 2 (arrondi supérieur à 0,5).
Les écritures en majuscules des tableurs (ROUND, IF, MAX) n'existent pas.
Une formule, une expression
En V3, une formule se compose d'exactement une expression. Les variables intermédiaires (var), les blocs if, les boucles et plusieurs instructions séparées par ; n'y donnent aucun résultat.
Le moteur Legacy exécute aussi les formules sur plusieurs lignes. Pour qu'un composant calcule de la même façon dans les deux moteurs, écrivez malgré tout une expression et répartissez les calculs longs sur plusieurs caractéristiques de type formule – par exemple surface puis prix_surface qui s'appuie dessus. C'est aussi plus facile à vérifier. Plus d'informations : Moteur frontend : Legacy ou V3.
Champs vides
Tant qu'une caractéristique est vide, la formule insère un texte vide. En multiplication et en division, il compte comme 0 ('' * 2 donne 0). En addition, en revanche, JavaScript concatène les textes : si $a vaut 5 et $b est vide, $a + $b donne le texte « 5 » au lieu du nombre 5. Le moteur V3 ne reprend pas un texte dans le prix. Pour être sûr :
($a || 0) + ($b || 0)
|| 0 insère 0 pour un champ vide. Pour les caractéristiques de sélection avec des valeurs textuelles, ce n'est pas nécessaire – comparez directement : $couleur == 'rouge' ? 20 : 0.
Si une formule produit une erreur (faute de frappe, fonction inconnue), son résultat est vide ou 0. Le configurateur continue de fonctionner.
Reprendre le résultat dans le prix
Une formule ne fournit d'abord qu'un nombre. Il entre dans le prix via la Tarification par paliers de la formule et l'Opérateur de prix – exactement comme pour la matrice de prix :
| Objectif | Tarification par paliers | Opérateur de prix |
|---|---|---|
| La formule est le prix (p. ex. 49.90) | un palier : valeur 0, prix 1 |
Valeur × Prix |
| La formule est une quantité, p. ex. des m², multipliée par un prix | un palier : valeur 0, prix = prix par unité, p. ex. 45 |
Valeur × Prix |
| Le prix par unité dépend de la quantité | plusieurs paliers, p. ex. 0 → 45, 5 → 42, 10 → 38 |
Valeur × Prix |
| Supplément fixe à partir d'un seuil | un palier avec le seuil et le supplément | Prix |
Sans tarification par paliers, la formule ne contribue pas au prix. Le calcul détaillé des tarifications par paliers est décrit dans Configurer les prix.
Décimales
Le champ Décimales des Paramètres de formule détermine le nombre de décimales avec lequel le résultat est affiché. Avec le moteur Legacy, le résultat est aussi réutilisé arrondi ; en V3, seul l'affichage l'est. Si l'arrondi doit influencer le prix, arrondissez dans la formule elle-même, p. ex. avec Math.round(x * 100) / 100.
Les formules ailleurs
- Matrice de prix : une formule peut servir de Dimension X ou Y – par exemple une surface calculée comme ligne du tableau. Voir Matrices de prix depuis Excel/CSV.
- Combinaison simple : si vous voulez seulement additionner, multiplier ou relier sous forme de texte deux caractéristiques ou plus, le type de donnée Combinaison simple suffit – sans aucune formule.
Exemples pratiques
Tous les exemples fonctionnent dans les deux moteurs. Remplacez les noms des caractéristiques par les vôtres.
Surface en m² à partir de centimètres
$largeur * $hauteur / 10000
Surface avec une surface minimale de 0,5 m²
Math.max($largeur * $hauteur / 10000, 0.5)
Surface arrondie au 0,5 m² supérieur
Math.ceil($largeur * $hauteur / 10000 * 2) / 2
Supplément à partir d'une largeur de 200 cm
$largeur > 200 ? 35 : 0
Prix unitaire avec remise de quantité × quantité
$quantite * ($quantite >= 100 ? 7.90 : ($quantite >= 50 ? 8.90 : 10.90))
Supplément selon le choix – la caractéristique materiau a les valeurs bois, alu, inox :
$materiau == 'inox' ? 1.35 : ($materiau == 'bois' ? 1.2 : 1)
Vous pouvez utiliser ce facteur dans une deuxième formule : $surface * 45 * $facteur_materiau.
Additionner les suppléments de plusieurs caractéristiques
$couleur.price + $motorisation.price
Circonférence d'une table ronde à partir du diamètre
Math.round(Math.PI * $diametre)
Avec l'agent IA
L'agent IA écrit les formules pour vous lorsque vous décrivez ce qui doit être calculé :
« Le prix doit être largeur fois hauteur en m² fois 45 euros, mais au minimum pour 0,5 m². »
Il crée la caractéristique de type formule et configure la tarification par paliers. Vérifiez le résultat dans l'aperçu avec quelques dimensions de test avant de publier.
Dépannage
- La formule donne toujours 0 ou rien – le Nom interne (ID) est-il correct, majuscules et minuscules comprises ? La caractéristique est-elle remplie ?
- La formule calcule, le prix ne change pas – la Tarification par paliers manque. Sans palier (valeur
0, prix1) et opérateur de prix Valeur × Prix, le résultat ne compte pas dans le prix. - La somme manque dans le prix tant qu'un champ est vide – le champ vide a été additionné comme texte. Écrivez
($a || 0) + ($b || 0). - Une comparaison avec une sélection ne réagit jamais – la formule voit la Valeur de l'entrée, pas son étiquette.
$couleur == 'Rouge'ne réagit pas si la valeur estrouge. - Aucun résultat en V3, mais en Legacy oui – la formule contient
var,ifou plusieurs instructions, une forme courte commeround()manque en Legacy, ou elle renvoie une simple comparaison. Écrivez une expression avec? :et des fonctionsMath.. 2 ^ 3donne 1 –^n'est pas un exposant. UtilisezMath.pow(2, 3).- Le prix diffère de quelques centimes – arrondissez dans la formule elle-même plutôt que via Décimales.