/// <summary>
        /// Verifie si la coordonnée existe syntaxiquement parlant
        /// </summary>
        /// <param name="strCoordonnee">Coordonnée à vérifier</param>
        /// <returns></returns>
        public CResultAErreur VerifieCoordonnee(string strCoordonnee)
        {
            CResultAErreur result = CResultAErreur.True;

            if (strCoordonnee == null || strCoordonnee == "")
            {
                result.EmpileErreur(I.T("The coordinate cannot be empty|184"));
            }
            else
            {
                string[] strNiveaux = strCoordonnee.Split(CSystemeCoordonnees.c_separateurNumerotations);

                if (strNiveaux.Length > RelationParametragesNiveau.Count())
                {
                    result.EmpileErreur(I.T("Too many levels in the coordinate|251"));
                    return(result);
                }

                CParametrageNiveau[] parametragesNiveaux = ParametragesNiveauxOrdonnees;

                //On va remonter niveau par niveau
                for (int i = strNiveaux.Length; i > 0; i--)
                {
                    CResultAErreur resulttmp = CResultAErreur.True;
                    string         Niv       = strNiveaux[i - 1];

                    CParametrageNiveau parametrageNiv = parametragesNiveaux[i - 1];

                    //Vérification syntaxique de la partie de coordonnée
                    resulttmp = parametrageNiv.RelationSysCoor_FormatNum.VerifieReference(Niv);

                    //Vérification sur la plage paramétrée
                    if (resulttmp.Result)
                    {
                        resulttmp = parametrageNiv.ReferencePossible(Niv);
                    }

                    if (!resulttmp.Result)
                    {
                        result.Erreur += resulttmp.Erreur;
                        result.Result  = false;
                    }
                }
            }
            return(result);
        }
        public CNiveauCoordonnee[] DecodeCoordonnee(string strCoordonnee)
        {
            List <CNiveauCoordonnee> lst = new List <CNiveauCoordonnee>();

            if (strCoordonnee == null || strCoordonnee == "")
            {
                return(null);
            }
            string[] strNiveaux = strCoordonnee.Split(CSystemeCoordonnees.c_separateurNumerotations);

            if (strNiveaux.Length > RelationParametragesNiveau.Count())
            {
                return(null);
            }

            CParametrageNiveau[] parametragesNiveaux = ParametragesNiveauxOrdonnees;

            //On va remonter niveau par niveau
            int nI = 0;

            foreach (CParametrageNiveau parametrageNiv in ParametragesNiveauxOrdonnees)
            {
                string strNiv = strNiveaux[nI];

                //Vérification syntaxique de la partie de coordonnée
                string         strPrefixe = parametrageNiv.RelationSysCoor_FormatNum.IsolerPrefixe(strNiv);
                CResultAErreur result     = parametrageNiv.RelationSysCoor_FormatNum.GetIndex(strNiv);
                if (!result)
                {
                    return(null);
                }
                int nIndex = (int)result.Data;
                lst.Add(new CNiveauCoordonnee(strNiv, strPrefixe, nIndex));
            }
            return(lst.ToArray());
        }