diff --git a/src/app/formulaire/formulaire-definition.ts b/src/app/formulaire/formulaire-definition.ts
index b47d429c9000fa5f01766d883f29f58fea8b5e6b..8b4ae86299051ae4d3b4cc160d5e414a0d0865a3 100644
--- a/src/app/formulaire/formulaire-definition.ts
+++ b/src/app/formulaire/formulaire-definition.ts
@@ -73,11 +73,27 @@ class AbstractFormulaireElementIterator<T extends FormulaireElement> {
     }
 }
 
+/** 
+ * itérateur qui extrait les FormulaireElement de 1er niveau dans un tableau de FormulaireElement
+ * (qui peut contenir des FieldsetContainer)
+ */
+class TopFormulaireElementIterator extends AbstractFormulaireElementIterator<FormulaireElement> implements IterableIterator<FormulaireElement> {
+    protected isDeepIterator(): boolean {
+        return false;
+    }
+
+    // interface IterableIterator
+
+    [Symbol.iterator](): IterableIterator<FormulaireElement> {
+        return this;
+    }
+}
+
 /** 
  * itérateur qui extrait récursivement les FormulaireElement dans un tableau de FormulaireElement
  * (qui peut contenir des FieldsetContainer)
  */
-class FormulaireElementIterator extends AbstractFormulaireElementIterator<FormulaireElement> implements IterableIterator<FormulaireElement> {
+class DeepFormulaireElementIterator extends AbstractFormulaireElementIterator<FormulaireElement> implements IterableIterator<FormulaireElement> {
     // interface IterableIterator
 
     [Symbol.iterator](): IterableIterator<FormulaireElement> {
@@ -467,14 +483,10 @@ export class FormulaireDefinition extends Observable implements Observer { //, I
     }
 
     public getFormulaireElementById(id: string): FormulaireElement {
-        for (let fs of this.allFieldsets) {
+        for (let fs of this.allFormElements)
             if (fs.id == id)
                 return fs;
 
-            for (let p of fs.fields)
-                if (p.id === id)
-                    return p;
-        }
         return undefined;
     }
 
@@ -1251,7 +1263,7 @@ export class FormulaireDefinition extends Observable implements Observer { //, I
     }
 
     public updateLocalisation(localisation: StringMap) {
-        for (let fe of this.allFormElements)
+        for (let fe of this.topFormElements)
             fe.updateLocalisation(localisation);
 
         if (this.hasResults)
@@ -1293,7 +1305,11 @@ export class FormulaireDefinition extends Observable implements Observer { //, I
         return new DeepFieldsetIterator(this._formElements);
     }
 
+    private get topFormElements(): IterableIterator<FormulaireElement> {
+        return new TopFormulaireElementIterator(this._formElements);
+    }
+
     private get allFormElements(): IterableIterator<FormulaireElement> {
-        return new FormulaireElementIterator(this._formElements);
+        return new DeepFormulaireElementIterator(this._formElements);
     }
 }