diff --git a/src/nub_factory.ts b/src/nub_factory.ts
index 52907eb4ec6d9f821d561438c3221a058d49c632..4905003c78009f4fbb695be557ac88b2d8902827 100644
--- a/src/nub_factory.ts
+++ b/src/nub_factory.ts
@@ -125,6 +125,41 @@ export class NubFactory {
         return undefined;
     }
 
+    /**
+     * déplace un SessionNub associé à un nub Structure vers le début de la liste de structures
+     * @param sn SessionNub à remplacer
+     * @param params propriété du nouveau SessionNub
+     */
+    public moveStructureNubUp(sn: SessionNub) {
+        // recherche du nub ouvrages parallèles possédant l'ouvrage
+        let psn;
+        for (const s of this._session)
+            if (s.nub instanceof ParallelStructure) {
+                psn = s.nub as ParallelStructure;
+                if (psn.hasStructure(sn.nub))
+                    break;
+                else
+                    psn = undefined;
+            }
+
+        // déplacement
+        if (psn) {
+            let i = 0;
+            for (const n of this._session) {
+                if (n.uid == sn.uid && i > 0) {
+                    const n = this._session[i - 1];
+                    this._session[i - 1] = this._session[i];
+                    this._session[i] = n;
+                    psn.moveStructureUp(sn.nub as Structure);
+                    return;
+                }
+                i++;
+            }
+        }
+
+        throw new Error(`NubFactory.moveStructureNubUp() : la structure (uid ${sn.uid}) à déplacer n'a pas été trouvée`);
+    }
+
     /**
      * créé un Nub
      * @param calcType type de Nub
diff --git a/src/structure/parallel_structure.ts b/src/structure/parallel_structure.ts
index 6184f7f42b17d87f77c2448318b54c65f5a98705..aecfda53ce272e328ccf14dd9b5639906c0961d0 100644
--- a/src/structure/parallel_structure.ts
+++ b/src/structure/parallel_structure.ts
@@ -80,6 +80,32 @@ export class ParallelStructure extends Nub {
         }
     }
 
+    /**
+     * @return true si la structure donnée est dans la liste
+     */
+    public hasStructure(structure: Nub): boolean {
+        for (const s of this.structures)
+            if (s.uid == structure.uid)
+                return true;
+        return false;
+    }
+
+    /**
+     * déplace une structure d'une position vers le début de la liste
+     */
+    public moveStructureUp(structure: Structure) {
+        let i = 0;
+        for (const s of this.structures) {
+            if (s.uid == structure.uid && i > 0) {
+                const t = this.structures[i - 1];
+                this.structures[i - 1] = this.structures[i];
+                this.structures[i] = t;
+                return;
+            }
+            i++;
+        }
+    }
+
     /**
      * Supprime une structure hydraulique
      * @param index numéro de la structure dans le tableau