/// /////////////////////////////////////////////////////////
        public DataTable GetDataTable(IElementAVariablesDynamiquesAvecContexteDonnee elementAVariablesPourFiltre)
        {
            DataTable table = new DataTable(m_strNomTable);
            Type      tp    = typeof(int);

            if (m_expressionValeur != null)
            {
                tp = m_expressionValeur.TypeDonnee.TypeDotNetNatif;
            }
            DataColumn col = table.Columns.Add(c_champNumRec, tp);

            table.PrimaryKey = new DataColumn[] { col };
            CTypeForFormule dummy             = new CTypeForFormule(elementAVariablesPourFiltre);
            CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(dummy);

            int nNbRecords = 0;

            if (m_expressionNbRecords != null)
            {
                CResultAErreur result = m_expressionNbRecords.Eval(ctx);
                if (!result)
                {
                    return(table);
                }

                try
                {
                    nNbRecords = Convert.ToInt32(result.Data);
                }
                catch
                {
                    nNbRecords = 0;
                }
            }

            for (int n = 0; n < nNbRecords; n++)
            {
                DataRow row = table.NewRow();
                if (m_expressionValeur != null)
                {
                    dummy.Valeur     = n;
                    ctx.CacheEnabled = false;
                    if (ctx.Cache != null)
                    {
                        ctx.Cache.ResetCache();
                    }
                    CResultAErreur result = m_expressionValeur.Eval(ctx);
                    if (result)
                    {
                        row[c_champNumRec] = result.Data;
                    }
                }
                else
                {
                    row[c_champNumRec] = n;
                }
                table.Rows.Add(row);
            }
            return(table);
        }
                public object GetValue(object objet)
                {
                    CTypeForFormule typeForFormule = objet as CTypeForFormule;

                    if (typeForFormule != null)
                    {
                        return(typeForFormule.Valeur);
                    }
                    return(null);
                }
            //------------------------------------------------------------
            public CResultAErreur GetValue(object objet, string strPropriete)
            {
                CResultAErreur  result         = CResultAErreur.True;
                CTypeForFormule typeForFormule = objet as CTypeForFormule;

                if (typeForFormule != null)
                {
                    result.Data = typeForFormule.Valeur;
                }
                return(result);
            }