/// //////////////////////////////////////////
        protected override CResultAErreur ProtectedEval(CContexteEvaluationExpression ctx)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                C2iExpressionChamp champFinal = null;
                object             objSource  = ctx.ObjetSource;
                result = GetSourceEtChampFinal(Parametres2i[0], ctx, ref objSource, ref champFinal);
                if (!result)
                {
                    return(result);
                }
                if (champFinal == null)
                {
                    result.EmpileErreur(I.T("Impossible to affect a value to @1|133", Parametres2i[0].ToString()));
                    return(result);
                }

                result = Parametres2i[1].Eval(ctx);
                if (!result)
                {
                    return(result);
                }
                object valeur = result.Data;
                CDefinitionProprieteDynamiqueVariableFormule propFormule = champFinal.DefinitionPropriete as CDefinitionProprieteDynamiqueVariableFormule;
                if (propFormule != null)
                {
                    ctx.SetValeurVariable(propFormule, valeur);
                }
                else
                {
                    if (objSource == null)
                    {
                        return(result);
                    }
                    SynchronizationContext c = ctx.SynchronizationContext;

                    if (c != null)
                    {
                        c.Post(x => CInterpreteurProprieteDynamique.SetValue(objSource, champFinal.DefinitionPropriete.NomPropriete, valeur), null);
                    }
                    else
                    {
                        result = CInterpreteurProprieteDynamique.SetValue(objSource, champFinal.DefinitionPropriete.NomPropriete, valeur);
                    }
                }
                if (result)
                {
                    result.Data = valeur;
                    if (objSource != null)
                    {
                        ctx.Cache.ResetCache(objSource);
                    }
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }