# Les conditions en AutoLISP

**URL:** https://dessein-tech.com/t/les-conditions-en-autolisp/9706
**Category:** AutoLISP
**Tags:** debutant, lisp, programmation, tuto
**Created:** 2026-01-21T00:51:19Z
**Posts:** 1

## Post 1 by @Patrick — 2026-01-21T00:51:19Z

Aujourd’hui, on va apprendre à ton AutoCAD® à prendre des décisions tout seul. Fini le temps où il exécutait bêtement tes ordres ! On va lui donner un cerveau (ou presque). :brain:

 ![tutoriel_debutants_autolisp_autocad](https://dessein-tech.com/uploads/default/original/2X/f/f408190a8abcde1757498ebd5d4884096d452268.jpeg)

Pour ça, on a besoin de trois mousquetaires : **IF** , **PROGN** et **COND**.

* * *

### 1. La fonction `IF` (Le Carrefour :vertical_traffic_light:)

C’est la base. «&nbsp;Si c’est vrai, fais ça. Sinon, fais autre chose.&nbsp;»

C’est binaire : Oui ou Non. Pas de «&nbsp;peut-être&nbsp;».

**La syntaxe :**

```
(if (Condition)
    (Action-Si-Vrai)
    (Action-Si-Faux) ; Optionnel
)
```

**Exemple :**

Imaginons qu’on vérifie si la variable `a` est égale à 10.

```
(if (= a 10)
    (alert "Bravo, c'est un 10 !") ; Si Vrai
    (alert "Raté, essaie encore.") ; Si Faux
)
```

* * *

### 2. La fonction `PROGN` (Le Sac de Courses :shopping_bags:)

Alors lui, c’est le sauveur.

Pourquoi ? Parce que la fonction `IF` est **radine**. Elle n’autorise qu’ **UNE SEULE** action après la condition.

Si tu veux dire : _«&nbsp;Si a = 10, alors affiche un message **ET** dessine un cercle **ET** change de calque&nbsp;»_, `IF` va paniquer et te jeter une erreur après la première action.

C’est là qu’intervient `PROGN`. Il sert à emballer plusieurs actions dans un seul «&nbsp;sac&nbsp;». Pour `IF`, ce sac ne compte que pour une seule action. Malin, non ?

**Exemple :**

```
(if (= a 10)
    ;; Début du sac PROGN (Action Si Vrai)
    (progn
        (alert "C'est gagné !")
        (setq a 0)
        (princ "\nOn a remis le compteur à zéro.")
    ) 
    ;; Fin du sac
    
    (alert "Perdu !") ;; Action Si Faux (ici, une seule action, donc pas besoin de progn)
)
```

_Astuce mnémotechnique : `PROGN` = «&nbsp;PROGramme N&nbsp;», faire N choses._

* * *

### 3. La fonction `COND` (Le Menu du Resto :scroll:)

Parfois, la vie n’est pas juste «&nbsp;Oui ou Non&nbsp;». Parfois, il y a plein d’options.

Tu pourrais empiler des `IF` dans des `IF` dans des `IF`… mais ça devient vite un plat de spaghettis illisible. :spaghetti:

`COND` (pour _Condition_) est beaucoup plus propre. Il teste les conditions l’une après l’autre. Dès qu’il en trouve une vraie, il l’exécute et s’arrête (il ne regarde pas la suite).

**La syntaxe :**

```
(cond
    ((Test-1) (Action-1))
    ((Test-2) (Action-2))
    (t (Action-Par-Défaut)) ; Le filet de sécurité
)
```

**Exemple :**

On analyse la note d’un élève.

```
(setq note 15)

(cond
    ((= note 20) (alert "Génie !")) ; Test 1
    ((> note 10) (alert "Pas mal du tout.")) ; Test 2
    ((= note 0) (alert "Oups...")) ; Test 3
    (t (alert "Moyenne...")) ; Si rien d'autre ne marche (t = toujours vrai)
)
```

_Note : Le `t` à la fin, c’est comme le «&nbsp;Sinon&nbsp;» final. Si aucune condition au-dessus n’a marché, celle-là s’exécute forcément._

* * *

### En résumé

- **IF** : Pour un choix simple (Pile ou Face).

- **PROGN** : Pour grouper plusieurs actions quand `IF` fait son radin.

- **COND** : Pour gérer plein de cas différents sans devenir fou.

_Poll: Poll (view on site)_

:right_arrow: Tous les [tutos AutoLISP](https://go.dessein-tech.com/tutos-autolisp)
