# Dupliquer un bloc d'actions

**URL:** <https://community.gladysassistant.com/t/dupliquer-un-bloc-dactions/9440>\
**Category:** Demande de fonctionnalités\
**Tags:** scene, feature-core, in-progress\
**Created:** [Mars 19, 2025, 2:06 UTC](https://community.gladysassistant.com/t/dupliquer-un-bloc-dactions/9440 "2025-03-19T14:06:48Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![mutmut](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mutmut/32/14064_2.png) [@mutmut](https://community.gladysassistant.com/u/mutmut)\
**Post date:** [Mars 19, 2025, 2:06 UTC](https://community.gladysassistant.com/t/dupliquer-un-bloc-dactions/9440/1 "2025-03-19T14:06:48Z")

</div>

Suite à l’implémentation de l’excellente fonctionnalité `Si Alors Sinon` 😍, je suis en train de recréer une nouvelle scène qui me reprend 7 scènes pour la mise à jour du coût du tarif Tempo dans Gladys.  
Et je m’aperçois que pour chaque bloc `Si Alors Sinon,` j’ai les mêmes actions/choses à refaire.  
Je vois bien un bouton dupliquer comme ci-dessous pour accélérer la création d’actions répétitives :

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/f/a/fa5fe3f1bf2daf33ba599e2806e43db3c2637e27.png)  
Le bloc dupliqué sera immédiatement situé après le bloc à dupliquer.  
En utilisant cette fonction, ça pourrait (peut-être) répondre à la demande de @StephaneB :

> [@\[Scènes\] Pouvoir insérer un bloc de scène (plutôt qu'un ajout en fin)](https://community.gladysassistant.com/t/scenes-pouvoir-inserer-un-bloc-de-scene-plutot-quun-ajout-en-fin-et-pouvoir-supprimer-le-premier-bloc/9342):
>
> Quand on veut ajouter un bloc d’action au milieu d’une scène, il faut l’ajouter en bas puis le faire remonter. Ce serait plus pratique de pouvoir insérer une étape entre deux étapes existantes

Je pars toujours du principe que je préfère toujours supprimer des éléments en trop que devoir recréer plusieurs fois les mêmes.

Qu’en pensez-vous ?

---

<div class="post-metadata">

**Author:** ![mutmut](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mutmut/32/14064_2.png) [@mutmut](https://community.gladysassistant.com/u/mutmut)\
**Post date:** [Avril 16, 2025, 4:36 UTC](https://community.gladysassistant.com/t/dupliquer-un-bloc-dactions/9440/2 "2025-04-16T16:36:54Z")

</div>

Hello tout le monde,  
personne n’est intéressé par cette foncitonnalité ?

---

<div class="post-metadata">

**Author:** ![prohand](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/prohand/32/15713_2.png) [@prohand](https://community.gladysassistant.com/u/prohand)\
**Post date:** [Avril 18, 2025, 1:32 UTC](https://community.gladysassistant.com/t/dupliquer-un-bloc-dactions/9440/3 "2025-04-18T13:32:19Z")

</div>

Hello,

Je suis également intéressé de mon côté 🙂  
Par contre j’ai atteint la limite de vote 😁

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [Avril 18, 2025, 1:58 UTC](https://community.gladysassistant.com/t/dupliquer-un-bloc-dactions/9440/4 "2025-04-18T13:58:18Z")

</div>

J’ai fait du tri dans mes votes pour pouvoir en remettre un ici. Mais c’est dur de choisir 😉

Par contre, @mutmut , dans ta maquette tu as aussi mis un bouton ‹&nbsp;dupliquer&nbsp;› sur le bloc des conditions, alors que ce bloc est forcément unique. Je pense qu’il faut le retirer.

Et par ailleurs ton titre indique ‹&nbsp;dupliquer une action ou un bloc d’actions&nbsp;›. Mais dans la maquette, tu n’as mis le bouton dupliquer que sur des blocs (blocs de premier niveau ou blocs imbriqués dans un si…alors…sinon). Il faut peut-être modifier le titre pour effectivement ne mentionner que la duplication de blocs entiers, non ?

Et si tu veux effectivement aller jusqu’à dupliquer des actions (à l’intérieur d’un bloc), ça serait alors logique de pouvoir dupliquer aussi les conditions (à l’intérieur de la section de conditions d’un si…alors…sinon). Mais perso ça me semblerait moins utile, et un peu lourd dans l’interface d’avoir des boutons de duplication partout, donc je limiterais l’usage aux blocs d’actions.

---

<div class="post-metadata">

**Author:** ![mutmut](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mutmut/32/14064_2.png) [@mutmut](https://community.gladysassistant.com/u/mutmut)\
**Post date:** [Avril 18, 2025, 2:33 UTC](https://community.gladysassistant.com/t/dupliquer-un-bloc-dactions/9440/5 "2025-04-18T14:33:08Z")

</div>

> [@StephaneB](#):
>
> Et si tu veux effectivement aller jusqu’à dupliquer des actions (à l’intérieur d’un bloc), ça serait alors logique de pouvoir dupliquer aussi les conditions (à l’intérieur de la section de conditions d’un si…alors…sinon).

Effectivement dupliquer toutes les actions n’est pas le besoin premier car on peut facilement en recréer une et faire du copy/paste de texte si besoin.  
C’est pour ça que j’ai mis un `dupliquer` uniquement sur l’action `Condition Si Alors Sinon` (car c’est bien une action au sens Gladys si je ne me trompe pas).

Mon but est d’avoir un dupliquer pour les blocs qui peuvent avoir beaucoup d’actions, et sur `Condition Si Alors Sinon` qui peut aussi avoir beaucoup d’actions.

> [@StephaneB](#):
>
> Par contre, @mutmut , dans ta maquette tu as aussi mis un bouton ‹ dupliquer › sur le bloc des conditions, alors que ce bloc est forcément unique. Je pense qu’il faut le retirer.

Et bien non, dans mon [tuto](https://community.gladysassistant.com/t/tuto-condition-si-alors-sinon-exemple-avec-la-mise-a-jour-du-tarif-tempo/9449) ce «&nbsp;bloc&nbsp;» (action?) n’est pas unique car j’en mets 6 à la suite dans 5 identiques.

Si on ne duplique que les blocs d’actions et que l’on a une action `Condition Si Alors Sinon` dedans, alors cela va impliquer :

- soit de garder tous les blocs séparés (et qui se lanceront obligatoirement en série),
- soit on bouge ensuite les `Condition Si Alors Sinon` vers le premier bloc d’actions (pour avoir une exécution en parallèle comme je le souhaite dans mon cas).

Je dirais que la seconde possibilité est un moindre mal sachant que l’on n’a pas à refaire toutes les actions. Je préfère toujours supprimer des choses en plus que de devoir recréer à chaque fois les mêmes choses.

> [@StephaneB](#):
>
> Il faut peut-être modifier le titre pour effectivement ne mentionner que la duplication de blocs entiers, non ?

Tu as raison, je retire donc `action` de mon titre pour ne laisser que la duplication des blocs d’actions (et donc sous-blocs d’actions ?).

@StephaneB tu garderais la duplication sur le bloc 2. mais aussi sur le 2.1.A.1. et 2.1.A.2. ? ou seulement le bloc 2 ? (on enlève sur `Condition Si Alors Sinon`)

---

<div class="post-metadata">

**Author:** ![McFlyPartages](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/mcflypartages/32/15670_2.png) [@McFlyPartages](https://community.gladysassistant.com/u/McFlyPartages)\
**Post date:** [Février 7, 2026, 2:07 UTC](https://community.gladysassistant.com/t/dupliquer-un-bloc-dactions/9440/6 "2026-02-07T14:07:57Z")

</div>

Je rejoins la possibilité de dupliquer un bloc serasi un gain de temps.

Exemple configurer X chauffage ou X Lumière. Je dois à chaque fois.

1. Ajouter une action
2. Choisir contrôler un appareil
3. Choisir l’appareil
4. Choisir le mode.

Dupliquer permettrait de changer seulement l’appareil → Gain de temps

---

<div class="post-metadata">

**Author:** ![cursor-bot](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/cursor-bot/32/22252_2.png) [@cursor-bot](https://community.gladysassistant.com/u/cursor-bot)\
**Post date:** [Août 17, 2026, 12:07 UTC](https://community.gladysassistant.com/t/dupliquer-un-bloc-dactions/9440/7 "2026-08-17T12:07:48Z")

</div>

Salut tout le monde !

Ce sujet est désormais **en cours de développement**.

Une PR a été ouverte pour ajouter un bouton dupliquer sur les blocs d’action de l’éditeur de scènes :

> <https://github.com/GladysAssistant/Gladys/pull/2905>
>
> Implements feature request: https://community.gladysassistant.com/t/dupliquer-un…-bloc-dactions/9440
> 
> \### Description
> 
> In the scene editor, building a long scene means rebuilding the same block over and over: the same "If Then Else" block six times in a row, or the same "control a device" action for each room/heater/light. This PR adds a \*\*duplicate button\*\* in the header of an action block, which inserts a copy of the block \*\*right after the source block\*\* (not at the end of the scene), so the user only has to change the device instead of recreating everything.
> 
> What was implemented:
> 
> \- A \`Duplicate this block\` button (\`fe fe-copy\`, same icon as the existing "duplicate scene" button) in the header of an action block, next to the existing delete button.
> \- It is available on root-level blocks \*\*and\*\* on the blocks nested in a \`then\` / \`else\` branch of an \`If Then Else\` / \`While\` action — so an \`If Then Else\` action with many actions inside is duplicated along with its block.
> \- It is \*\*not\*\* displayed on blocks where it makes no sense, as discussed on the forum:
> - the empty block at the end of a list (nothing to duplicate, it is the "add" drop zone),
> - the conditions section of an \`If Then Else\` action, which can only exist once.
> \- The scene variables follow the duplication: variables of the blocks located after the copy are shifted by one index, the variables of the duplicated block are copied for the new block, and references to those variables (in texts like \`{{1.0.last\_value}}\` and in \`only continue if\` conditions) are rewritten accordingly — the same way the existing "insert an action group" feature does it.
> \- The path-rewriting logic that was inlined in \`addActionGroupAfter\` has been extracted into a shared \`replaceVariablePathInActions\` helper, now used by both the insert and the duplicate code paths (no behaviour change for the existing feature).
> 
> Files touched (front only, no server change):
> 
> \- \`front/src/routes/scene/edit-scene/index.js\` — new \`duplicateActionGroup(path)\` state handler + extracted helper
> \- \`front/src/routes/scene/edit-scene/ActionGroup.jsx\` — the duplicate button
> \- \`front/src/routes/scene/edit-scene/EditScenePage.jsx\`, \`ActionCard.jsx\`, \`actions/ConditionIfElseThen.jsx\`, \`actions/ConditionWhile.jsx\` — prop plumbing so nested blocks get the handler
> \- \`front/src/config/i18n/{en,fr,de}.json\` — new \`editScene.duplicateActionGroupButton\` key in all three languages
> 
> \## Forum
> 
> Forum: https://community.gladysassistant.com/t/dupliquer-un-bloc-dactions/9440
> 
> \### Checklist
> 
> \- \[x\] Linter and prettier pass on both front and server (\`npm run eslint\`, \`npm run prettier\`) — front only was modified: \`npm run prettier\`, \`npm run prettier-check\`, \`npm run eslint\` (0 errors), \`npm run compare-translations\` (no errors), \`npm run build\` (OK)
> \- \[x\] No undocumented breaking change
> \- \[\] Tests pass: \`cd server && npm run coverage\` — not run, no server file is modified by this PR. Cypress was not run locally (no browser available in the environment); the existing scene spec targets buttons by their i18n text and the new button is icon-only, so it should not be impacted.
> 
> \> Note: this pull request was opened by an automated Claude Code run. The duplication logic was exercised with a small local harness (root-level block, block nested in a \`then\` branch, block containing an \`If Then Else\`), but it still needs a human review and a real click-through in the scene editor before merging.
> 
> 
> \---
> \_Generated by \[Claude Code\](https://claude.ai/code/session\_01BRdJPgpjHkz9LKu39n8fm8)\_
> 
> 
> \## Summary by CodeRabbit
> 
> \* \*\*New Features\*\*
> \* Added the ability to duplicate action blocks in the scene editor.
> \* Duplicating nested blocks preserves their structure, variables, and references.
> \* Added localized labels for the duplication action in English, French, and German.
> \* Duplicated blocks can be inserted within conditional and repeating action sections.
> \* Existing action paths and variable references are updated automatically after duplication.

N’hésitez pas à suivre la PR, à tester dès que possible et à faire vos retours ici.
