> For the complete documentation index, see [llms.txt](https://doc.simax.fr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.simax.fr/parametrage/construire/champs/creer-un-bouton.md).

# Créer un bouton

Un élément interactif permettant à l’utilisateur de déclencher une action dans le logiciel.

Par exemple :

* **Enregistrer** → sauvegarde les modifications.
* **Supprimer** → supprime un élément.
* **Valider** → confirme une opération.
* **Annuler** → abandonne l’opération en cours.
* **Ajouter** → crée ou ajoute un nouvel élément.

<figure><img src="https://1324884545-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvBJ3Kpe0vg6NlDz0QDIX%2Fuploads%2FHC5fjWPJQ0CywUdtqGdf%2FEnvoyer%20facture%20par%20mail.png?alt=media&amp;token=67c928ee-54bd-494f-95e0-18b4a559b5c0" alt=""><figcaption></figcaption></figure>

« **Libellé** »: donnez un nom au bouton

« **Tableau** » : formulaire rattaché au bouton

« **Action** »: choisissez l'action à lancer

«  **Mode de validation** » : permet d'enregistrer automatiquement le formulaire en cours avant ou après l'exécution de l'action. L'enregistrement du formulaire ne se fait que si toutes les conditions sont remplies (colonne obligatoire, contrôle, ....).

\- « **Défaut » :** enregistre le formulaire de manière classique. Par contre si le formulaire dépend d'un autre élément, SIMAX posera la question « voulez-vous enregistrer avant d'exécuter l'action ? ».

\- « **Enregistrer avant** » : enregistre le formulaire et exécute l'action. Ce choix permet d'éviter la question "voulez-vous enregistrer avant d'exécuter l'action ?".

\- « **Enregistrer après** » : Exécute l'action et enregistre le formulaire. Si besoin, les calculs, qui dépendent du formulaire lié à l'action, sont mis à jour avant d'enregistrer.

\- « **Remplacer le bouton Enregistrer** » : permet de remplacer le bouton standard Enregistrer.

\- « **Remplacer le bouton Annuler** » : permet de remplacer le bouton standard Annuler.

\- « **Remplacer le bouton Imprimer** » : permet de remplacer le bouton standard Imprimer.

\- « **Sans fermer la fenêtre** » : permet de lancer l’action tout en laissant la fenêtre du bouton ouverte. Il n'y a pas d'enregistrement de la fiche courante.

Importez le SMX : Langage v12.

**Important** :

\- Si la fiche courante est en création, l'action lancée ne peut pas manipuler l'enregistrement.

\- L'action est lancée dans un nouveau contexte indépendant.

« **Icône** » : choisissez l’icône que vous souhaitez. L'icône est placée à gauche du libellé du bouton et elle est redimensionnée si nécessaire en 20x20.

« **Bulle d'aide** »: saisissez un texte facilitant la compréhension.

**Affichage en liste** : choisissez parmi les options suivantes : toujours, bouton sur la ligne ou jamais pour afficher le bouton en mode liste ou à la fin de la ligne.

**Affichage en fiche** : choisissez parmi les options suivantes : oui ou non, pour afficher le bouton en mode fiche. Cela signifie que les champs étant en « Oui » ne sont visibles qu'en consultation de formulaire.

#### Modification fonctionnement « prise en compte » avant/après/défaut sur bouton action

Lors des boutons d'action dans un enregistrement en modification, le fonctionnement est maintenant modifier :

Si paramétré avec « enregistrer l'action avant » : Dans tous les cas l'enregistrement est enregistré avant puis fermé.

Si paramétré avec « enregistré après l'action » : Dans tous les cas l'enregistrement est enregistré après puis fermé.

Dans les autres cas :

\- Si l'action ne nécessite pas l'enregistrement courant, on n’enregistre pas et il reste ouvert.

\- si l'action nécessite l'enregistrement courant :

Si l'enregistrement n'a pas été modifié : on n’enregistre pas et il reste ouvert

Sinon la question est posé à l'utilisateur (veut il enregistrer ?)

Oui : l’enregistrement est enregistré après puis fermé (avant l'action).

Non : L'enregistrement est annulé puis fermé (avant l'action).

#### Initialisation des paramètres : valeur par défaut prioritaire

Important : c'est un changement de comportement !

A partir de la version 11 :

Les paramètres des actions lancées par des boutons seront initialisés en priorité par leur valeur par défaut si elle est présente sinon en fonction du contexte courant (sélection, ../).

Le bouton qui lance une action qui prend une liste de ville en paramètre obligatoire, et ce paramètre a comme valeur par défaut : 0

Si le bouton est sous la liste des clients (qui ont une colonne ville)

Avant : le paramètre est initialisé par la ville du client sélectionné dans la liste

En v11 : le paramètre est laissé vide et la demande de paramètre s'ouvre comme le paramètre est obligatoire.

### Bouton survol et clic droit de paramétrage en mode fiche

Pour les superviseurs avec droit de paramétrage, le mode fiche propose un bouton paramétrage qui apparaît en survol d'une colonne (ou par clic droit).

![](https://1324884545-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvBJ3Kpe0vg6NlDz0QDIX%2Fuploads%2FncT2QmCDo0nq1NhonZLn%2F1.png?alt=media)&#x20;

<p align="right"></p>

Le bouton propose un ensemble d'options pour modifier la colonne.

![](https://1324884545-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvBJ3Kpe0vg6NlDz0QDIX%2Fuploads%2Fc7mHUT34uAn4ny16uUfH%2F2.png?alt=media)

<p align="right"></p>

<p align="right">Depuis la version 12.001820.01, ce menu est aussi disponible pour les filtres d'une liste.<br>Les options possibles sont les suivantes :</p>

\- Modifier ;

\- Supprimer ;

\- Déplacer haut et bas ;

\- Modification d'option : saisie obligatoire, repris dans l’intitulé, lecture seule, invisible ;

\- Action liée si colonne bouton

\- Visualisation des contrôles d'état champ

\- Audit\
Remarque:\
Si une option est héritée d'un parent (séparateur par exemple) alors le choix affiche une coche combinée avec une flèche.

### Passage des éléments sélectionnés dans liste d'éléments en paramètre d’une action

Dans une fiche, un bouton qui déclenche une action avec un paramètre de type liste sera initialisé avec les éléments sélectionné (ou tous si aucune sélection) dans une sous liste compatible avec le paramètre.

Cela fonctionne aussi avec le bouton visible en mode liste, dans ce cas cela prend l'union les éléments des sous-listes à partir de la sélection dans la liste

Par exemple :

Dans réunion on a une liste de collaborateur convié à la réunion.

Sous la liste on a un bouton qui appelle une action avec une liste de collaborateurs en paramètre.

<figure><img src="https://1324884545-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvBJ3Kpe0vg6NlDz0QDIX%2Fuploads%2FrHeKxV04xNOmUiFsvcFc%2Fplanning.webp?alt=media&amp;token=bb8ed056-aef0-4ea2-a898-65f9bc74b35c" alt=""><figcaption></figcaption></figure>

<p align="right"></p>

Cette action sera appelée avec les collaborateurs sélectionnés dans ceux convié.

Si aucune sélection n'est faite alors tous les collaborateurs de la liste seront passés.

L'action peut par exemple bouclé sur les collaborateurs pour leur envoyer un message.

### Paramétrer un bouton de création mettant à jour la sous-liste

Vous pouvez paramétrer dans un formulaire un bouton qui fasse comme le bouton « Créer » sous les listes mais avec autre libellé.

Pour cela :

\- vous ajoutez un bouton dans le formulaire

\- vous lui choisissez un libellé

\- vous le liez à l'action de création d'un enregistrement d'une des sous-listes du formulaire

Le bouton déclenchera alors la création et la sous-liste se mettra à jour avec le nouvel enregistrement, une fois qu'il sera créé.

Cette nouveauté vous permet de :

1 - avoir un bouton **\[\[Créer]]** avec un autre libellé

**Ex** : Dans une fiche contact, dans l'onglet historique, vous avez la liste des échanges entre la société et ce contact.

Ajoutez un bouton **\[\[Envoyer message]]** qui est lié à l'action "**Créer échange**".

Quand vous cliquez sur le bouton, ça crée l'échange, vous le remplissez et à l'enregistrement, votre nouvel échange a été ajouté à l'historique.

<figure><img src="https://1324884545-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvBJ3Kpe0vg6NlDz0QDIX%2Fuploads%2Fnh3WgwxhHCLMn2CYrjtS%2FDeuxi%C3%A8me%20bouton.png?alt=media&amp;token=f2e34997-fcfc-4a27-944d-87d25df72074" alt=""><figcaption></figcaption></figure>

<p align="right"></p>

2 - ajouter un bouton de création qui déclenche la création d'un enregistrement du type d'un formulaire fils

**Ex** : si on reprend l'exemple ci-dessus, on pourrait ajouter un bouton **\[\[Envoyer courrier]]** qui crée un "**Echange courrier**", formulaire fils de "**Echange**".

<figure><img src="https://1324884545-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvBJ3Kpe0vg6NlDz0QDIX%2Fuploads%2Fun7wRxdnKYm4zvooHJT0%2FCr%C3%A9er%20courrier.png?alt=media&amp;token=6ab09558-38c2-4b49-a9da-8f61f31cb608" alt=""><figcaption></figcaption></figure>

<p align="right"></p>

Il est à noter que ce fonctionnement est disponible pour les listes ainsi que pour les éléments dans tableaux.

### Boutons de remplacement des boutons standards Enregistrer, Annuler ou Imprimer

Les boutons de remplacements sont des colonnes boutons qui se substituent aux boutons standards Enregistrer, Annuler ou Imprimer.

Il est donc possible dans un bouton de dire qu’il remplace le bouton **\[\[Enregistrer]]** ou le bouton **\[\[Annuler]]** ou le bouton **\[\[imprimer]]**. Ceci permet de renommer les boutons ou de proposer plusieurs traitements différents à partir d’un écran donné. Les contrôles d’état champ fonctionnent dans ces cas.

**Paramétrage** :

Dans le mode de validation des colonnes boutons il y a comme choix :

\- Remplacer le bouton enregistrer

\- Remplacer le bouton annuler

\- Remplacer le bouton imprimer

Pour le paramétrer c’est très simple : il suffit de modifier le mode de validation.

<figure><img src="https://1324884545-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvBJ3Kpe0vg6NlDz0QDIX%2Fuploads%2FPaf5SaqMt1CznRYCucai%2FValider%20inventaire.png?alt=media&amp;token=e848473a-8874-49cc-946c-4d5d04084bda" alt=""><figcaption></figcaption></figure>

Les boutons de remplacement ne sont pas visibles dans la fiche.

Il peut y avoir plusieurs boutons de remplacement par bouton standard. Attention à la largeur de l'écran.

**Utilisations** :

\- permet de changer le libellé des boutons standard

\- permet d'enchaîner simplement des actions sans créer d'automatisme particulier

\- permet d'empêcher l'enregistrement ou annulation en grisant le bouton avec un contrôle d'état de champ

\- permet de faire des "assistants" avec précédent et suivant

**Règles de substitution** :

Le bouton de remplacement se substitue si :

\- Le bouton correspondant (exemple : enregistrer, annuler et imprimer) est normalement disponible.

\- Si son état est visible, invisible ou grisé

\- Si l'utilisateur a les droits sur l'action associée

Donc, si aucun bouton de remplacement ne se substitue alors le bouton correspondant est visible.

Attention, si les boutons Enregistrer et Annuler sont grisés ou invisibles il ne sera pas possible de fermer la fiche

**Action** :

Si le bouton de remplacement à une action associée celle-ci est exécuté

\- Pour enregistrer et imprimer : après l'enregistrement de la fiche (même comportement que "enregistrer avant l'action")

\- Pour annuler : après l'annulation de la fiche

Le passage de paramètre est le même que pour les autres type de bouton.

Attention, un bouton de remplacement annuler en création peut passer l'id d’élément qui n'a pas été créé.

**Action** **de** **consultation** :

Le bouton Fermer des actions Consulter est remplacé par les boutons de type "remplacer le bouton annuler".

Il permet aussi de déclencher l'action associé à ces boutons.

**Libellé** **et** **Icône** **par** **défaut** :

Si le bouton n'a pas de libellé (ou juste 1 espace) et pas d'icône : le bouton aura le libellé et l'icône du bouton qu'il remplace.

Par exemple un bouton de remplacement d'annuler aura :

\- action créer / modifier : Libellé = Annuler et Icône = croix blanche fond rouge

\- action consulter : Libellé = Fermer et Icône = croix rouge

**Saisie en cascade** :

Comme les boutons standards ne sont pas "visibles" en saisie en cascade, les boutons de remplacement se substituent au menu contextuel.

S'il y au moins un bouton de remplacement sur enregistrer la validation de la ligne ouvre un menu contextuel

S'il y au moins un bouton de remplacement sur annuler l'annulation (par Echap par exemple) de la ligne ouvre un menu contextuel

### Affectation de colonnes à partir d’un bouton

Un bouton en mode fiche permet de modifier la valeur d'une liste de colonne du formulaire courant en direct (sans fermer la fiche)

Pour cela il faut créer un bouton sans action et avec une formule dans "Commande à lancer". Le format de la formule est :

< Colonne 1 > := < Formule >

..

< Colonne N > := < Formule >

le bloc < Colonne > := < Formule > doit être sur la même ligne sans retour chariot ou alors elle doit être entre parenthèses

< Colonne x > est de la forme : \[ 'colonne' <123> ] ou "Libellé de la colonne"

< Formule > est une formule SIMAX

Les affectations sont faites ligne par ligne, il est donc possible d'utiliser une colonne d'une ligne précédente.

La syntaxe < Colonne 1 > : < Formule > est aussi accepté (sans le =)

Si la colonne est une donnée liste non groupe alors il y a création de lignes.

{% hint style="info" %}
A partir de la version 12.00.1821.01 : le mode de validation du bouton est pris en compte
{% endhint %}

Exemple :

// date heure courante

\['Texte 1' de 'Formulaire avec bouton action' <5IDAJJ3L7U>] := ConvertitTexte(DateHeureCourante())

// par libelle

"texte 2" : "Il est : "+\['Texte 1' de 'Formulaire avec bouton action' <5IDAJJ3L7U>]

###


---

# 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://doc.simax.fr/parametrage/construire/champs/creer-un-bouton.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.
