# La fonction (tblsearch) AutoLISP est fondamentale pour écrire des programmes "intelligents" qui ne plantent pas

**URL:** https://dessein-tech.com/t/la-fonction-tblsearch-autolisp-est-fondamentale-pour-ecrire-des-programmes-intelligents-qui-ne-plantent-pas/9664
**Category:** AutoLISP
**Tags:** debutant, lisp, programmation, tuto
**Created:** 2026-01-18T02:32:52Z
**Posts:** 1

## Post 1 by @Patrick — 2026-01-18T02:32:52Z

Voici un mini-tutoriel pour comprendre son fonctionnement.

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

### 1. Le Concept : Les «&nbsp;Armoires&nbsp;» d’AutoCAD®

Imaginez qu’AutoCAD® range ses définitions dans des armoires étiquetées (les **Tables** ) :

- L’armoire **«&nbsp;LAYER&nbsp;»** contient tous les calques.

- L’armoire **«&nbsp;STYLE&nbsp;»** contient les styles de texte.

- L’armoire **«&nbsp;BLOCK&nbsp;»** contient les définitions de blocs.

- L’armoire **«&nbsp;LTYPE&nbsp;»** contient les types de lignes.

La fonction `(tblsearch)` sert à **ouvrir une armoire et vérifier si un dossier existe**.

### 2. La Syntaxe

```
(tblsearch "NOM_DE_L_ARMOIRE" "NOM_DU_DOSSIER")
```

- **Argument 1** : Le type de table (toujours entre guillemets : «&nbsp;LAYER&nbsp;», «&nbsp;BLOCK&nbsp;», etc.).

- **Argument 2** : Le nom de l’objet que vous cherchez (ex: «&nbsp;Mur&nbsp;», «&nbsp;Standard&nbsp;»).

### 3. Le Résultat (Ce que la fonction renvoie)

C’est là que tout se joue. `(tblsearch)` a deux réponses possibles :

1. **Si l’objet N’EXISTE PAS** : Elle renvoie `nil` (rien/vide).

2. **Si l’objet EXISTE** : Elle renvoie une **liste de données** (la carte d’identité de l’objet).

### 4. L’Exemple Concret : Créer un calque (sans erreur)

Supposons que vous vouliez créer un calque nommé «&nbsp;PROJET&nbsp;».

Si vous lancez bêtement la commande «&nbsp;Nouveau Calque&nbsp;» alors qu’il existe déjà, cela peut réinitialiser ses propriétés ou bloquer le script.

On va donc dire en Lisp : _«&nbsp;Cherche dans l’armoire LAYER si le dossier PROJET existe. Si c’est vide (nil), alors crée-le.&nbsp;»_

Copiez ce code pour tester :

```
(defun c:TestCalque ()
  ;; On stocke le résultat de la recherche dans une variable
  (setq resultat (tblsearch "LAYER" "PROJET"))

  ;; On analyse le résultat
  (if resultat
    ;; CAS 1 : Le résultat n'est pas nil (le calque existe)
    (alert "Le calque PROJET existe déjà ! Je ne fais rien.")
    
    ;; CAS 2 : Le résultat est nil (le calque n'existe pas)
    (progn
      (alert "Le calque n'existe pas. Je le crée...")
      (command "_.-LAYER" "_New" "PROJET" "_Color" "1" "PROJET" "")
    )
  )
  (princ)
)
```

### 5. Pour aller plus loin (Lire les données)

Puisque `(tblsearch)` renvoie la «&nbsp;carte d’identité&nbsp;» de l’objet quand il le trouve, vous pouvez vous en servir pour vérifier des propriétés.

Tapez ceci directement dans votre ligne de commande AutoCAD® (avec les parenthèses) :

`(tblsearch "LAYER" "0")`

AutoCAD® vous répondra quelque chose comme :

`((0 . "LAYER") (2 . "0") (70 . 0) (62 . 7) (6 . "Continuous"))`

- `(2 . "0")` : C’est son nom.

- `(62 . 7)` : C’est sa couleur (7 = Blanc/Noir).

- `(70 . 0)` : C’est son état (0 = Déverrouillé, etc.).

**En résumé :** Utilisez toujours `(tblsearch)` avant de créer un objet (Calque, Style, Bloc) pour vérifier s’il n’est pas déjà présent dans le dessin

## Informations complémentaires pour le débutant qui veut aller un peu plus loin:

Il existe exactement **9 tables** accessibles via `(tblsearch)`, `(tblnext)` et `(tblobjname)`.

Voici la liste complète, classée par ordre d’utilité pour un débutant :

### Le «&nbsp;Top 5&nbsp;» (Les indispensables)

1. **«&nbsp;LAYER&nbsp;»** : Les **Calques**.

- _Exemple :_ `(tblsearch "LAYER" "Mur")`

1. **«&nbsp;STYLE&nbsp;»** : Les **Styles de Texte**.

- _Exemple :_ `(tblsearch "STYLE" "Arial")`

1. **«&nbsp;BLOCK&nbsp;»** : Les **Définitions de Blocs**.

- _Attention :_ Cela cherche le «&nbsp;moule&nbsp;» du bloc (la définition), pas les blocs dessinés à l’écran.

- _Exemple :_ `(tblsearch "BLOCK" "Chaise")`

1. **«&nbsp;LTYPE&nbsp;»** : Les **Types de Ligne**.

- _Exemple :_ `(tblsearch "LTYPE" "AXE")`

1. **«&nbsp;DIMSTYLE&nbsp;»** : Les **Styles de Cote**.

- _Exemple :_ `(tblsearch "DIMSTYLE" "ISO-25")`

### Les 4 autres (Pour les experts)

1. **«&nbsp;UCS&nbsp;»** : Les **SCU** (Systèmes de Coordonnées Utilisateur) enregistrés.

2. **«&nbsp;VIEW&nbsp;»** : Les **Vues** enregistrées (commande [VUE](https://help.autodesk.com/view/ACD/2026/FRA/?guid=GUID-157824E8-6791-410F-A412-E183D69F3D71)).

3. **«&nbsp;APPID&nbsp;»** : Les **ID d’Applications** (utilisé pour stocker des données invisibles, les XData).

4. **«&nbsp;VPORT&nbsp;»** : Les configurations de **Fenêtres** (Viewports).

* * *

### :warning: Le Piège à éviter (Les Grands Absents)

Attention, beaucoup de débutants se cassent les dents en cherchant des choses qui **ne sont pas** dans ces tables.

AutoCAD® a évolué et stocke les éléments plus modernes dans des **Dictionnaires** (accessibles via une autre fonction : `dictsearch`), et non dans des Tables.

**Ce que `tblsearch` NE PEUT PAS trouver :**

- :cross_mark: **«&nbsp;LAYOUT&nbsp;»** : Les Présentations (Onglets) ne sont pas une table !

- :cross_mark: **«&nbsp;GROUP&nbsp;»** : Les Groupes.

- :cross_mark: **«&nbsp;MATERIAL&nbsp;»** : Les Matériaux de rendu.

- :cross_mark: **«&nbsp;MLINE&nbsp;»** : Les styles de Multilignes.

**En résumé :** Si c’est un concept qui existait dans AutoCAD® R12 (années 90), c’est probablement une **Table** (`tblsearch`). Si c’est plus récent, c’est un **Dictionnaire**.

_Poll: Poll (view on site)_

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