OK. Je crois comprendre le but premier de la modification : modifier le modèle afin de ne plus avoir de contraintes qui pourrait être lié à la compta française.

Tu as un compte 401COUTE par exemple et un compte 4. En absence
d'autres comptes, le compte 401COUTE se trouvera "visuellement" sous
le compte 4. Si maintenant je rajoute le compte 40, il ira se situer
entre les comptes 4 et 401COUTE. Comme ça la règle de numérotation est
respectée.

Dans la norme le 401coute n'as pas d'existence si le 401 n'existe pas, corollairement le 40 et le 4.


Juste pour le fun :) , dans l'import je verrais plutôt un algo du genre :

pourchaque (c : compteAImporter){

   si (existeDeja(c)){
      mettreAjourNomDuCompte(c);  
   }
   sinon{
   ajoutRecurr(c);
   }
}


fonction ajoutRecurr(c){

si (existeParent(c)){
   inserer(c)
  //creation de parent d'un compte auxiliaire
  sinon si (c.ContientChar()){
     inserer(c)
    ajoutRecurr(c.sanslesChar())
  }
  // si compte minimal, 1, 2, 3, 4… on fait rien
  sinon si (c.nbChar() ==1) {
     //creation compte parent
     inserer(c)
     ajoutRecurr(c.sousChaine(c.longueur-1)) 
  }
}