public override CResultAErreur SaveAll(CContexteSauvegardeObjetsDonnees contexteSauvegarde, System.Data.DataRowState etatsAPrendreEnCompte)
        {
            ArrayList listeFichiersToDelete        = null;
            ArrayList listeFichiersToValide        = null;
            ArrayList listeFichiersANePasSupprimer = null;

            GetListesPourValidation(ref listeFichiersToDelete,
                                    ref listeFichiersToValide,
                                    ref listeFichiersANePasSupprimer);

            CResultAErreur result = CResultAErreur.True;

            m_commitEventHandlerNote = new OnCommitTransEventHandler(OnCommitTrans);
            DataTable table = contexteSauvegarde.ContexteDonnee.Tables[GetNomTable()];

            if (table != null)
            {
                foreach (DataRow row in table.Rows)
                {
                    if (row.RowState == DataRowState.Modified || row.RowState == DataRowState.Added)
                    {
                        if (!CDocumentGED.IsControleDocumentsALaSauvegardeDesactive(contexteSauvegarde.ContexteDonnee))
                        //si désactivation des ids auto, on est dans un processus
                        //de synchronisation, donc , pas de contrôle de document
                        {
                            CDocumentGED       doc          = new CDocumentGED(row);
                            CReferenceDocument newReference = doc.ReferenceDoc;
                            bool bRefAsChange = true;
                            if (row.RowState == DataRowState.Modified)
                            {
                                doc.VersionToReturn = DataRowVersion.Original;
                                CReferenceDocument oldRef = doc.ReferenceDoc;
                                bRefAsChange = false;
                                if ((newReference == null) != (oldRef == null))
                                {
                                    bRefAsChange = true;
                                }
                                if (oldRef != null && !oldRef.Equals(newReference))
                                {
                                    listeFichiersToDelete.Add(oldRef);
                                    bRefAsChange = true;
                                }
                                doc.VersionToReturn = DataRowVersion.Current;
                            }
                            if (bRefAsChange)
                            {
                                result = PreValideDocument(newReference);
                            }
                            if (!result)
                            {
                                return(result);
                            }
                            if (bRefAsChange)
                            {
                                listeFichiersToValide.Add(doc.ReferenceDoc);
                            }
                            listeFichiersANePasSupprimer.Add(doc.ReferenceDoc);
                            listeFichiersToDelete.Remove(doc.ReferenceDoc);//Il ne faut pas le supprimer !
                        }
                    }
                    if (row.RowState == DataRowState.Deleted)
                    {
                        CDocumentGED doc = new CDocumentGED(row);
                        doc.VersionToReturn = DataRowVersion.Original;
                        string strRefString = doc.ReferenceString;
                        if (!listeFichiersToValide.Contains(doc.ReferenceDoc) &&
                            !listeFichiersANePasSupprimer.Contains(doc.ReferenceDoc))
                        {
                            listeFichiersToDelete.Add(doc.ReferenceDoc);
                        }
                        doc.VersionToReturn = DataRowVersion.Current;
                    }
                }
            }
            IDatabaseConnexion con = CSc2iDataServer.GetInstance().GetDatabaseConnexion(IdSession, GetType());

            if (con != null)
            {
                con.OnCommitTrans += m_commitEventHandlerNote;
            }
            result = base.SaveAll(contexteSauvegarde, etatsAPrendreEnCompte);
            return(result);
        }