> For the complete documentation index, see [llms.txt](https://ksaar.gitbook.io/ksaar-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ksaar.gitbook.io/ksaar-documentation/les-elements/les-formules/fonctions-de-logique-et-autres.md).

# Fonctions de Logique et autres

{% hint style="success" %}
Les fonctions sur les formules sont disponibles dans chacune des sous-pages dédiées :&#x20;

* [Opérateurs](/ksaar-documentation/les-elements/les-formules/operateurs.md)
* [Fonctions de texte](/ksaar-documentation/les-elements/les-formules/fonctions-de-texte.md)
* [Fonctions mathématiques](/ksaar-documentation/les-elements/les-formules/fonctions-mathematiques.md)
* [Fonctions de date](/ksaar-documentation/les-elements/les-formules/fonctions-de-date.md)
* [Fonctions de formatage](/ksaar-documentation/les-elements/les-formules/fonctions-de-formatage.md)
* [Fonctions de liste](/ksaar-documentation/les-elements/les-formules/fonctions-de-liste.md)
* [Fonctions sur des champs Ksaar](/ksaar-documentation/les-elements/les-formules/fonctions-sur-des-champs-ksaar.md)
* [Fonctions de Logique et autres](/ksaar-documentation/les-elements/les-formules/fonctions-de-logique-et-autres.md)

Des exemples de formules prêtes à l'emploi se trouvent ici : [Bibliothèque de formules classiques](/ksaar-documentation/les-elements/les-formules/bibliotheque-de-formules-classiques.md)
{% endhint %}

<details>

<summary>AND</summary>

#### Résumé

La fonction `AND`, ou l'opérateur `&&`, teste si toutes les conditions fournies sont vraies.

#### Syntaxe

* `AND(condition1, condition2, ...)`
* `condition1 && condition2 && ...`

#### Exemple

* `AND(true, true)` → `true`

</details>

<details>

<summary>CHOOSE</summary>

#### Résumé

La fonction `CHOOSE` sélectionne une valeur d'une liste en fonction d'un index fourni.

#### Syntaxe

* `CHOOSE(index, valeur1, [valeur2, ...])`

#### Exemple

* `CHOOSE(2, "Un", "Deux", "Trois")` → `Deux`

</details>

<details>

<summary>EQ</summary>

#### Résumé

La fonction `EQ`, ou les opérateurs `=`, `==`, ou `===`, teste l'égalité entre deux valeurs.

#### Syntaxe

* `EQ(value1, value2)`
* `value1 = value2`
* `value1 == value2`
* `value1 === value2`

#### Exemple

* `EQ(5, 5)` → `true`

</details>

<details>

<summary>EVAL</summary>

#### Résumé

La fonction `EVAL` évalue une expression fournie sous forme de chaîne.

#### Syntaxe

* `EVAL(expression)`

#### Exemple

* `EVAL("5 + 5")` → `10`

</details>

<details>

<summary>GT</summary>

#### Résumé

La fonction `GT`, ou l'opérateur `>`, teste si une valeur est supérieure à une autre.

#### Syntaxe

* `GT(valeur1, valeur2)`
* `valeur1 > valeur2`

#### Exemple

* `GT(6, 5)` → `true`

</details>

<details>

<summary>GTE</summary>

#### Résumé

La fonction `GTE`, ou l'opérateur `>=`, teste si une valeur est supérieure ou égale à une autre.

#### Syntaxe

* `GTE(valeur1, valeur2)`
* `valeur1 >= valeur2`

#### Exemple

* `GTE(5, 5)` → `true`

</details>

<details>

<summary>IF</summary>

#### Résumé

La fonction `IF` renvoie une valeur si une condition est vraie et une autre si elle est fausse.

#### Syntaxe

* `IF(condition, valeur_si_vrai, valeur_si_faux)`

#### Exemple

* `IF(5 > 3, "Un", "Deux")` → `Un`

**Remarque**

Il existe une formulation simplifiée de cette formule sous la forme suivante :&#x20;

* `(Condition)?(Valeur si vraie):(Valeur si fausse)`

Un exemple d'implémentation est le suivant :&#x20;

```javascript
IS_EMPTY({produit})?"Pas de produit en vente":"Produit en vente"
```

</details>

<details>

<summary>IFS</summary>

#### Résumé

La fonction `IFS` évalue une liste de conditions et renvoie la première valeur correspondante.

#### Syntaxe

* `IFS(condition1, valeur1, [condition2, valeur2, ...])`

#### Exemple

* `IFS(true, "Un", false, "Deux")` → `Un`

</details>

<details>

<summary>IS_EMPTY</summary>

#### Résumé

La fonction `IS_EMPTY` la valeur est vide. Cette fonction peut prendre tous les types de valeurs comme paramètre.

#### Syntaxe

* `IS_EMPTY(valeur)`

#### Exemple

* `IS_EMPTY({Texte})` → `true` si {Texte} est vide, sinon `false`.

</details>

<details>

<summary>LAMBDA</summary>

#### Résumé

La fonction `LAMBDA`, ou l'opérateur `=>`, crée une fonction anonyme avec les paramètres et le corps fournis.

#### Syntaxe

* `LAMBDA(paramètres, expression)`
* `(paramètres => expression)`

#### Exemple

* `LAMBDA(x, x + 5)(5)` → `10`
* `(x => x + 5)(5)` → `10`

</details>

<details>

<summary>LET</summary>

#### Résumé

La fonction `LET` définit une variable pour une utilisation dans une expression : elle peut prendre plusieurs jeux variables/valeurs. `LET` permet de nommer des sous-expressions afin d'améliorer la lisibilité et d'éviter de répéter plusieurs fois le même calcul dans une formule complexe.

#### Syntaxe

* `LET(variable1, valeur1, variable2, valeur2, ..., expression)`

#### Exemples

* `LET(x, 5, y, 10, x * y)` → `50`
* ```
  LET(
     prix_ht, {nb_prixHT_produit}, 
     tva, SINGLE_SELECT_NBR_VALUE({qcu_TVA_produit}), 
     prix_ttc, prix_ht * ( 1 + tva), 

     prix_ttc
  )
  ```

&#x20;      → `Prix_TTC`

{% hint style="info" %}
Les variables créées avec `LET` stockent le résultat d'une expression. Elles ne peuvent donc pas être utilisées avec certaines fonctions qui attendent directement un champ d'un type spécifique (par exemple un *Single Select* ou une liaison). Dans ce cas, utilisez directement le champ concerné.
{% endhint %}

</details>

<details>

<summary>LT</summary>

#### Résumé

La fonction `LT`, ou l'opérateur `<`, teste si une valeur est inférieure à une autre.

#### Syntaxe

* `LT(valeur1, valeur2)`
* `valeur1 < valeur2`

#### Exemple

* `LT(4, 5)` → `true`

</details>

<details>

<summary>LTE</summary>

#### Résumé

La fonction `LTE`, ou l'opérateur `<=`, teste si une valeur est inférieure ou égale à une autre.

#### Syntaxe

* `LTE(valeur1, valeur2)`
* `valeur1 <= valeur2`

#### Exemple

* `LTE(5, 5)` → `true`

</details>

<details>

<summary>NE</summary>

#### Résumé

La fonction `NE`, ou les opérateurs `<>`, `!=`, ou `!==`, testent la non-égalité entre deux valeurs.

#### Syntaxe

* `NE(valeur1, valeur2)`
* `valeur1 <> valeur2`
* `valeur1 != valeur2`
* `valeur1 !== valeur2`

#### Exemple

* `NE(5, 6)` → `true`
* `NE("texte1", "texte2")` → `true`

</details>

<details>

<summary>NOT</summary>

#### Résumé

La fonction `NOT`, ou l'opérateur `!`, inverse la valeur logique fournie.

#### Syntaxe

* `NOT(valeur)`
* `!valeur`

#### Exemple

* `NOT(true)` → `false`

</details>

<details>

<summary>OR</summary>

#### Résumé

La fonction `OR`, ou l'opérateur `||`, teste si au moins une des conditions fournies est vraie.

#### Syntaxe

* `OR(condition1, condition2, ...)`
* `condition1 || condition2 || ...`

#### Exemple

* `OR(true, false)` → `true`

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ksaar.gitbook.io/ksaar-documentation/les-elements/les-formules/fonctions-de-logique-et-autres.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
