private void _buttonIntNouvelleEntreprise_Click(object sender, RoutedEventArgs e)
        {
            EntrepriseWindow entrepriseWindow = new EntrepriseWindow();
            Entreprise tmp = new Entreprise();
            tmp.Adresse1 = new Adresse();
            tmp.Client = new Client();
            tmp.Is_Client = false;
            tmp.Fournisseur = new Fournisseur();
            //tmp.Is_Fournisseur = true;
            entrepriseWindow.DataContext = tmp;
            entrepriseWindow.creation = true;

            //booléen nullable vrai ou faux ou null
            bool? dialogResult = entrepriseWindow.ShowDialog();
            Entreprise entreprise = (Entreprise)entrepriseWindow.DataContext;

            if (dialogResult.HasValue && dialogResult.Value == true)
            {
                if (entreprise.Fournisseur != null)
                {
                    this.listFournisseur.Add(entreprise);
                    this._comboBoxIntEntreprise.SelectedItem = entreprise;
                }
                else
                {
                    MessageBox.Show("L'entreprise que vous avez ajouté n'a pas été définie en tant que 'fournisseur', vous ne pourrez donc pas la sélectionner", "Entreprise non fournisseur", MessageBoxButton.OK, MessageBoxImage.Warning);
                }
            }
            else
            {
                //Entreprise non validée (on détache tout !)
                // On enlève tous les Commande_Fournisseur associés
                foreach (Commande_Fournisseur item in entreprise.Commande_Fournisseur1)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Commande_Fournisseur1.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Commande_Fournisseur1.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Commande_Fournisseur associés
                foreach (Commande_Fournisseur item in entreprise.Commande_Fournisseur2)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Commande_Fournisseur1.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Commande_Fournisseur1.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Entreprise_Activite associés
                foreach (Entreprise_Activite item in entreprise.Entreprise_Activite)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Entreprise_Activite.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Entreprise_Activite.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Entreprise_Litige associés
                foreach (Entreprise_Litige item in entreprise.Entreprise_Litige)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Entreprise_Litige.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Entreprise_Litige.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Entreprise_Mere associés
                foreach (Entreprise_Mere item in entreprise.Entreprise_Mere)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Entreprise_Mere.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Entreprise_Mere.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Numero_Tva_Intraco associés
                foreach (Numero_Tva_Intraco item in entreprise.Numero_Tva_Intraco)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Numero_Tva_Intraco.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Numero_Tva_Intraco.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les NumeroTvaIntracommunautaire associés
                foreach (NumeroTvaIntracommunautaire item in entreprise.NumeroTvaIntracommunautaire)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.NumeroTvaIntracommunautaire.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.NumeroTvaIntracommunautaire.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Personne associés
                foreach (Personne item in entreprise.Personne)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Personne.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Personne.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                try
                {
                    ((App)App.Current).mySitaffEntities.Detach(entreprise.Fournisseur);
                    entreprise.Fournisseur = null;

                }
                catch (Exception)
                {
                    try
                    {
                        entreprise.Fournisseur = null;
                        ((App)App.Current).mySitaffEntities.Detach(entreprise.Fournisseur);
                    }
                    catch (Exception)
                    {

                    }
                }
                try
                {
                    ((App)App.Current).mySitaffEntities.Detach(entreprise.Client);
                    entreprise.Client = null;

                }
                catch (Exception)
                {
                    try
                    {
                        entreprise.Client = null;
                        ((App)App.Current).mySitaffEntities.Detach(entreprise.Client);
                    }
                    catch (Exception)
                    {

                    }
                }
                try
                {
                    ((App)App.Current).mySitaffEntities.Detach(entreprise);
                }
                catch (Exception)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Entreprise.DeleteObject(entreprise);
                    }
                    catch (Exception)
                    {

                    }
                }

            }
        }
        private void NewEntreprise_Click(object sender, RoutedEventArgs e)
        {
            EntrepriseWindow entrepriseWindow = new EntrepriseWindow();
            Entreprise tmp = new Entreprise();
            tmp.Adresse1 = new Adresse();
            tmp.Adresse2 = new Adresse();
            tmp.Client = new Client();
            tmp.Is_Client = true;
            tmp.Fournisseur = new Fournisseur();
            entrepriseWindow.DataContext = tmp;
            entrepriseWindow.creation = true;

            //booléen nullable vrai ou faux ou null
            bool? dialogResult = entrepriseWindow.ShowDialog();
            Entreprise entreprise = (Entreprise)entrepriseWindow.DataContext;

            if (dialogResult.HasValue && dialogResult.Value == true)
            {
                ((App)App.Current).mySitaffEntities.AddToEntreprise(entreprise);
                if (entreprise.Client != null && entreprise.Is_Client == true)
                {
                    this.listClient = new ObservableCollection<Entreprise>(((App)App.Current).mySitaffEntities.Entreprise.Where(civ => civ.Client != null && civ.Is_Client == true).OrderBy(civ => civ.Libelle));
                    this.listClient.Add(entreprise);
                    this.listClient = new ObservableCollection<Entreprise>(this.listClient.OrderBy(tc => tc.Libelle));

                    this._comboBoxClient.SelectedItem = entreprise;
                }
            }
            else
            {
                //Entreprise non validée (on détache tout !)
                // On enlève tous les Commande_Fournisseur associés
                foreach (Commande_Fournisseur item in entreprise.Commande_Fournisseur1)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Commande_Fournisseur1.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Commande_Fournisseur1.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Commande_Fournisseur associés
                foreach (Commande_Fournisseur item in entreprise.Commande_Fournisseur2)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Commande_Fournisseur1.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Commande_Fournisseur1.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Entreprise_Activite associés
                foreach (Entreprise_Activite item in entreprise.Entreprise_Activite)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Entreprise_Activite.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Entreprise_Activite.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Entreprise_Litige associés
                foreach (Entreprise_Litige item in entreprise.Entreprise_Litige)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Entreprise_Litige.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Entreprise_Litige.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Entreprise_Mere associés
                foreach (Entreprise_Mere item in entreprise.Entreprise_Mere)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Entreprise_Mere.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Entreprise_Mere.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Numero_Tva_Intraco associés
                foreach (Numero_Tva_Intraco item in entreprise.Numero_Tva_Intraco)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Numero_Tva_Intraco.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Numero_Tva_Intraco.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les NumeroTvaIntracommunautaire associés
                foreach (NumeroTvaIntracommunautaire item in entreprise.NumeroTvaIntracommunautaire)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.NumeroTvaIntracommunautaire.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.NumeroTvaIntracommunautaire.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Personne associés
                foreach (Personne item in entreprise.Personne)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Personne.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Personne.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                try
                {
                    ((App)App.Current).mySitaffEntities.Detach(entreprise.Fournisseur);
                    entreprise.Fournisseur = null;

                }
                catch (Exception)
                {
                    try
                    {
                        entreprise.Fournisseur = null;
                        ((App)App.Current).mySitaffEntities.Detach(entreprise.Fournisseur);
                    }
                    catch (Exception)
                    {

                    }
                }
                try
                {
                    ((App)App.Current).mySitaffEntities.Detach(entreprise.Client);
                    entreprise.Client = null;

                }
                catch (Exception)
                {
                    try
                    {
                        entreprise.Client = null;
                        ((App)App.Current).mySitaffEntities.Detach(entreprise.Client);
                    }
                    catch (Exception)
                    {

                    }
                }
                try
                {
                    ((App)App.Current).mySitaffEntities.Detach(entreprise);
                }
                catch (Exception)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Entreprise.DeleteObject(entreprise);
                    }
                    catch (Exception)
                    {

                    }
                }
            }
        }
        private void NewEntreprise_Click(object sender, RoutedEventArgs e)
        {
            EntrepriseWindow entrepriseWindow = new EntrepriseWindow();
            Entreprise tmp = new Entreprise();
            tmp.Adresse1 = new Adresse();
            tmp.Adresse2 = new Adresse();
            tmp.Client = new Client();
            tmp.Is_Client = false;
            tmp.Fournisseur = new Fournisseur();
            entrepriseWindow.DataContext = tmp;
            entrepriseWindow.creation = true;

            //booléen nullable vrai ou faux ou null
            bool? dialogResult = entrepriseWindow.ShowDialog();
            Entreprise entreprise = (Entreprise)entrepriseWindow.DataContext;

            if (dialogResult.HasValue && dialogResult.Value == true)
            {
                ((App)App.Current).mySitaffEntities.Attach(entreprise);
                if (_checkBoxEntAtelier.IsChecked == true)
                {
                    this.miseAutoEntrepriseLivraison();
                }
                if (_checkBoxEntAutre.IsChecked == true)
                {
                    this.TouteEntreprise();
                }
                if (_checkBoxEntChantier.IsChecked == true)
                {
                    this.TriEntreprise();
                }
                this._comboBoxEntLivraison.SelectedItem = entreprise;
            }
            else
            {
                //Entreprise non validée (on détache tout !)
                // On enlève tous les Commande_Fournisseur associés
                foreach (Commande_Fournisseur item in entreprise.Commande_Fournisseur1)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Commande_Fournisseur1.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Commande_Fournisseur1.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Commande_Fournisseur associés
                foreach (Commande_Fournisseur item in entreprise.Commande_Fournisseur2)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Commande_Fournisseur1.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Commande_Fournisseur1.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Entreprise_Activite associés
                foreach (Entreprise_Activite item in entreprise.Entreprise_Activite)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Entreprise_Activite.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Entreprise_Activite.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Entreprise_Litige associés
                foreach (Entreprise_Litige item in entreprise.Entreprise_Litige)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Entreprise_Litige.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Entreprise_Litige.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Entreprise_Mere associés
                foreach (Entreprise_Mere item in entreprise.Entreprise_Mere)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Entreprise_Mere.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Entreprise_Mere.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Numero_Tva_Intraco associés
                foreach (Numero_Tva_Intraco item in entreprise.Numero_Tva_Intraco)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Numero_Tva_Intraco.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Numero_Tva_Intraco.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les NumeroTvaIntracommunautaire associés
                foreach (NumeroTvaIntracommunautaire item in entreprise.NumeroTvaIntracommunautaire)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.NumeroTvaIntracommunautaire.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.NumeroTvaIntracommunautaire.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                // On enlève tous les Personne associés
                foreach (Personne item in entreprise.Personne)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(item);
                        entreprise.Personne.Remove(item);

                    }
                    catch (Exception)
                    {
                        entreprise.Personne.Remove(item);
                        ((App)App.Current).mySitaffEntities.Detach(item);
                    }
                }
                try
                {
                    ((App)App.Current).mySitaffEntities.Detach(entreprise.Fournisseur);
                    entreprise.Fournisseur = null;

                }
                catch (Exception)
                {
                    try
                    {
                        entreprise.Fournisseur = null;
                        ((App)App.Current).mySitaffEntities.Detach(entreprise.Fournisseur);
                    }
                    catch (Exception)
                    {

                    }
                }
                try
                {
                    ((App)App.Current).mySitaffEntities.Detach(entreprise.Client);
                    entreprise.Client = null;

                }
                catch (Exception)
                {
                    try
                    {
                        entreprise.Client = null;
                        ((App)App.Current).mySitaffEntities.Detach(entreprise.Client);
                    }
                    catch (Exception)
                    {

                    }
                }
                try
                {
                    ((App)App.Current).mySitaffEntities.Detach(entreprise);
                }
                catch (Exception)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Entreprise.DeleteObject(entreprise);
                    }
                    catch (Exception)
                    {

                    }
                }
            }

            ListeEntreprisesControl listeEntrepriseControl = new ListeEntreprisesControl();
            if (entreprise != null)
            {
                //this.listFournisseurs = new ObservableCollection<Fournisseur>(((App)App.Current).mySitaffEntities.Fournisseur.OrderBy(ent => ent.Entreprise.Libelle));
            }
            else
            {
                this._comboBoxFournisseur.SelectedItem = null;
            }
        }
        private void LookEntreprise_Click(object sender, RoutedEventArgs e)
        {
            if (this._ComboBoxContactEntreprise.SelectedItem != null)
            {
                //Création de la fenêtre
                EntrepriseWindow entrepriseWindow = new EntrepriseWindow();

                //Initialisation du Datacontext en entreprise et association à la entreprise sélectionnée
                entrepriseWindow.DataContext = new Entreprise();
                entrepriseWindow.DataContext = (Entreprise)this._ComboBoxContactEntreprise.SelectedItem;

                //Je positionne la lecture seule sur la fenêtre
                entrepriseWindow.creation = false;
                entrepriseWindow.SoloLecture = true;
                entrepriseWindow.lectureSeule();

                //J'affiche la fenêtre
                entrepriseWindow.ShowDialog();
            }
        }
        /// <summary>
        /// Ouvre l'entreprise séléctionnée à l'aide d'une nouvelle fenêtre
        /// </summary>
        public Entreprise Open()
        {
            if (this._DataGridMain.SelectedItem != null)
            {
                if (this._DataGridMain.SelectedItems.Count == 1)
                {
                    //Affichage du message "modification en cours"
                    ((App)App.Current)._theMainWindow.progressBarMainWindow.IsIndeterminate = true;
                    ((App)App.Current)._theMainWindow.changementTexteStatusBar("Modification d'une entreprise en cours ...");

                    //Création de la fenêtre
                    EntrepriseWindow entrepriseWindow = new EntrepriseWindow();

                    //Initialisation du Datacontext en entreprise et association à la entreprise sélectionnée
                    entrepriseWindow.DataContext = new Entreprise();
                    entrepriseWindow.DataContext = this._DataGridMain.SelectedItem;

                    if (((Entreprise)entrepriseWindow.DataContext).Client == null)
                    {
                        ((Entreprise)entrepriseWindow.DataContext).Client = new Client();
                    }
                    if (((Entreprise)entrepriseWindow.DataContext).Fournisseur == null)
                    {
                        ((Entreprise)entrepriseWindow.DataContext).Fournisseur = new Fournisseur();
                    }
                    if (((Entreprise)entrepriseWindow.DataContext).Adresse1 == null)
                    {
                        ((Entreprise)entrepriseWindow.DataContext).Adresse1 = new Adresse();
                    }
                    else
                    {
                        Adresse tmp = new Adresse();
                        tmp = ((Entreprise)entrepriseWindow.DataContext).Adresse1;
                        ((Entreprise)entrepriseWindow.DataContext).Adresse1 = tmp;
                    }
                    if (((Entreprise)entrepriseWindow.DataContext).Adresse2 == null)
                    {
                        ((Entreprise)entrepriseWindow.DataContext).Adresse2 = new Adresse();
                    }
                    else
                    {
                        Adresse tmp = new Adresse();
                        tmp = ((Entreprise)entrepriseWindow.DataContext).Adresse2;
                        ((Entreprise)entrepriseWindow.DataContext).Adresse2 = tmp;
                    }

                    bool? dialogResult = entrepriseWindow.ShowDialog();
                    if (dialogResult.HasValue && dialogResult.Value == true)
                    {
                        //Si j'appuie sur le bouton Ok, je renvoi l'objet se trouvant dans le datacontext de la fenêtre
                        return (Entreprise)entrepriseWindow.DataContext;
                    }
                    else
                    {
                        //Je récupère les anciennes données de la base sur les modifications effectuées
                        ((App)App.Current).mySitaffEntities.Refresh(System.Data.Objects.RefreshMode.StoreWins, (Entreprise)(this._DataGridMain.SelectedItem));
                        //La commande étant un objet "critique" au niveau des associations, je refresh l'edmx et je relance le filtrage s'il y en avait un afin d'avoir les mêmes infos (invisible pour l'user)
                        ((App)App.Current).refreshEDMXSansVidage();
                        this.filtrage();

                        //Si j'appuie sur le bouton annuler, je préviens que j'annule ma modification
                        ((App)App.Current)._theMainWindow.progressBarMainWindow.IsIndeterminate = false;
                        this.recalculMax();
                        ((App)App.Current)._theMainWindow.changementTexteStatusBar("Modification d'une entreprise annulée : " + this.Entreprises.Count() + " / " + this.max);

                        return null;
                    }
                }
                else
                {
                    MessageBox.Show("Vous ne devez sélectionner qu'une seule entreprise.", "Attention", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return null;
                }
            }
            else
            {
                MessageBox.Show("Vous devez sélectionner une entreprise.", "Attention", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return null;
            }
        }
        /// <summary>
        /// Ouvre l'entreprise séléctionnée en lecture seule à l'aide d'une nouvelle fenêtre
        /// </summary>
        public Entreprise Look(Entreprise entreprise)
        {
            if (this._DataGridMain.SelectedItem != null || entreprise != null)
            {
                if (this._DataGridMain.SelectedItems.Count == 1 || entreprise != null)
                {
                    //Affichage du message "affichage en cours"
                    ((App)App.Current)._theMainWindow.progressBarMainWindow.IsIndeterminate = true;
                    ((App)App.Current)._theMainWindow.changementTexteStatusBar("Affichage d'une entreprise en cours ...");

                    //Création de la fenêtre
                    EntrepriseWindow entrepriseWindow = new EntrepriseWindow();

                    //Initialisation du Datacontext en entreprise et association à la entreprise sélectionnée
                    entrepriseWindow.DataContext = new Entreprise();
                    if (entreprise != null)
                    {
                        entrepriseWindow.DataContext = entreprise;
                    }
                    else
                    {
                        entrepriseWindow.DataContext = this._DataGridMain.SelectedItem;
                    }

                    //Je positionne la lecture seule sur la fenêtre
                    entrepriseWindow.creation = false;
                    entrepriseWindow.SoloLecture = true;
                    entrepriseWindow.lectureSeule();

                    //J'affiche la fenêtre
                    bool? dialogResult = entrepriseWindow.ShowDialog();

                    //Affichage du message "affichage en cours"
                    ((App)App.Current)._theMainWindow.progressBarMainWindow.IsIndeterminate = false;
                    ((App)App.Current)._theMainWindow.changementTexteStatusBar("Affichage d'une entreprise terminé : " + this.Entreprises.Count() + " / " + this.max);

                    //Renvoi null
                    return null;
                }
                else
                {
                    MessageBox.Show("Vous ne devez sélectionner qu'une seule entreprise.", "Attention", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return null;
                }
            }
            else
            {
                MessageBox.Show("Vous devez sélectionner une entreprise.", "Attention", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return null;
            }
        }
        /// <summary>
        /// Ajoute une nouvelle entreprise à la liste à l'aide d'une nouvelle fenêtre
        /// </summary>
        public Entreprise Add()
        {
            //Affichage du message "ajout en cours"
            ((App)App.Current)._theMainWindow.progressBarMainWindow.IsIndeterminate = true;
            ((App)App.Current)._theMainWindow.changementTexteStatusBar("Ajout d'une entreprise en cours ...");

            //Initialisation de la fenêtre
            EntrepriseWindow entrepriseWindow = new EntrepriseWindow();

            //Création de l'objet temporaire
            Entreprise tmp = new Entreprise();
            tmp.Adresse1 = new Adresse();
            tmp.Adresse2 = new Adresse();
            tmp.Client = new Client();
            tmp.Is_Client = false;
            tmp.Fournisseur = new Fournisseur();
            tmp.Is_Fournisseur = false;

            //Mise de l'objet temporaire dans le datacontext
            entrepriseWindow.DataContext = tmp;
            entrepriseWindow.creation = true;

            //booléen nullable vrai ou faux ou null
            bool? dialogResult = entrepriseWindow.ShowDialog();

            if (dialogResult.HasValue && dialogResult.Value == true)
            {
                //Si j'appuie sur le bouton Ok, je renvoi l'objet commande se trouvant dans le datacontext de la fenêtre
                return (Entreprise)entrepriseWindow.DataContext;
            }
            else
            {
                try
                {
                    try
                    {
                        ObservableCollection<Entreprise_Activite> toRemove = new ObservableCollection<Entreprise_Activite>();
                        foreach (Entreprise_Activite item in ((Entreprise)entrepriseWindow.DataContext).Entreprise_Activite)
                        {
                            toRemove.Add(item);
                        }
                        foreach (Entreprise_Activite item in toRemove)
                        {
                            ((App)App.Current).mySitaffEntities.Detach(item);
                        }
                    }
                    catch (Exception) { }

                    try
                    {
                        ObservableCollection<Entreprise_Litige> toRemove2 = new ObservableCollection<Entreprise_Litige>();
                        foreach (Entreprise_Litige item in ((Entreprise)entrepriseWindow.DataContext).Entreprise_Litige)
                        {
                            toRemove2.Add(item);
                        }
                        foreach (Entreprise_Litige item in toRemove2)
                        {
                            ((App)App.Current).mySitaffEntities.Detach(item);
                        }
                    }
                    catch (Exception) { }

                    try
                    {
                        ObservableCollection<Entreprise_RIB> toRemove3 = new ObservableCollection<Entreprise_RIB>();
                        foreach (Entreprise_RIB item in ((Entreprise)entrepriseWindow.DataContext).Entreprise_RIB)
                        {
                            toRemove3.Add(item);
                        }
                        foreach (Entreprise_RIB item in toRemove3)
                        {
                            ((App)App.Current).mySitaffEntities.Detach(item);
                        }
                    }
                    catch (Exception) { }

                    try
                    {
                        ObservableCollection<Numero_Tva_Intraco> toRemove4 = new ObservableCollection<Numero_Tva_Intraco>();
                        foreach (Numero_Tva_Intraco item in ((Entreprise)entrepriseWindow.DataContext).Numero_Tva_Intraco)
                        {
                            toRemove4.Add(item);
                        }
                        foreach (Numero_Tva_Intraco item in toRemove4)
                        {
                            ((App)App.Current).mySitaffEntities.Detach(item);
                        }
                    }
                    catch (Exception) { }

                    try
                    {
                        ObservableCollection<Fournisseur_Cle_Comptable> toRemove4 = new ObservableCollection<Fournisseur_Cle_Comptable>();
                        foreach (Fournisseur_Cle_Comptable item in ((Entreprise)entrepriseWindow.DataContext).Fournisseur.Fournisseur_Cle_Comptable)
                        {
                            toRemove4.Add(item);
                        }
                        foreach (Fournisseur_Cle_Comptable item in toRemove4)
                        {
                            ((App)App.Current).mySitaffEntities.Detach(item);
                        }
                    }
                    catch (Exception) { }

                    try
                    {
                        ObservableCollection<Fournisseur_Condition_Reglement> toRemove4 = new ObservableCollection<Fournisseur_Condition_Reglement>();
                        foreach (Fournisseur_Condition_Reglement item in ((Entreprise)entrepriseWindow.DataContext).Fournisseur.Fournisseur_Condition_Reglement)
                        {
                            toRemove4.Add(item);
                        }
                        foreach (Fournisseur_Condition_Reglement item in toRemove4)
                        {
                            ((App)App.Current).mySitaffEntities.Detach(item);
                        }
                    }
                    catch (Exception) { }

                    try
                    {
                        ObservableCollection<Client_Condition_Reglement> toRemove4 = new ObservableCollection<Client_Condition_Reglement>();
                        foreach (Client_Condition_Reglement item in ((Entreprise)entrepriseWindow.DataContext).Client.Client_Condition_Reglement)
                        {
                            toRemove4.Add(item);
                        }
                        foreach (Client_Condition_Reglement item in toRemove4)
                        {
                            ((App)App.Current).mySitaffEntities.Detach(item);
                        }
                    }
                    catch (Exception) { }

                    try
                    {
                        ObservableCollection<Client_Cle_Comptable> toRemove4 = new ObservableCollection<Client_Cle_Comptable>();
                        foreach (Client_Cle_Comptable item in ((Entreprise)entrepriseWindow.DataContext).Client.Client_Cle_Comptable)
                        {
                            toRemove4.Add(item);
                        }
                        foreach (Client_Cle_Comptable item in toRemove4)
                        {
                            ((App)App.Current).mySitaffEntities.Detach(item);
                        }
                    }
                    catch (Exception) { }

                    try
                    {
                        try
                        {
                            ((App)App.Current).mySitaffEntities.Detach(((Entreprise)entrepriseWindow.DataContext).Fournisseur.Agence_Interimaire);
                        }
                        catch (Exception) { }
                        try
                        {
                            ((App)App.Current).mySitaffEntities.Detach(((Entreprise)entrepriseWindow.DataContext).Fournisseur.Sous_Traitant);
                        }
                        catch (Exception) { }
                        ((App)App.Current).mySitaffEntities.Detach(((Entreprise)entrepriseWindow.DataContext).Fournisseur);
                    }
                    catch (Exception) { }

                    try
                    {
                        ((App)App.Current).mySitaffEntities.Detach(((Entreprise)entrepriseWindow.DataContext).Client);
                    }
                    catch (Exception) { }

                    ((App)App.Current).mySitaffEntities.Detach((Entreprise)entrepriseWindow.DataContext);
                }
                catch (Exception)
                {
                }

                //Si j'appuie sur le bouton annuler, je préviens que j'annule mon ajout
                ((App)App.Current)._theMainWindow.progressBarMainWindow.IsIndeterminate = false;
                this.recalculMax();
                ((App)App.Current)._theMainWindow.changementTexteStatusBar("Ajout d'une entreprise annulé : " + this.Entreprises.Count() + " / " + this.max);

                return null;
            }
        }