private ListeObservable <T> Inserer_Coller_List <T>(object sender, RoutedEventArgs e)
            where T : ObjetGestion, new()
        {
            ListeObservable <T> pListe = new ListeObservable <T>();

            ListBox V; ListeObservable <T> Liste; List <T> Ls; T L;

            if (Info(sender as MenuItem, out V, out Liste, out Ls, out L) && (_Copie_Liste != null))
            {
                List <T> pListeCopie = new List <T>();

                pListeCopie = _Copie_Liste as List <T>;

                foreach (T iL in pListeCopie)
                {
                    T Obj = Ajouter <T>();
                    pListe.Add(Obj);
                    Obj.Copier(iL);

                    // Si la liste contient des lignes, on la déplace
                    if (L != null)
                    {
                        Liste.Move(Liste.IndexOf(Obj), Liste.IndexOf(L));
                    }
                }
                Liste.Numeroter();
            }
            return(pListe);
        }
        private ListeObservable <T> Ajouter_List <T, U>(object sender, RoutedEventArgs e, Boolean UnSeul = false)
            where T : ObjetGestion, new()
            where U : ObjetGestion
        {
            ListeObservable <T> pListe = new ListeObservable <T>();

            ListBox V; ListeObservable <T> Liste; List <T> Ls; T L;

            if (Info(sender as MenuItem, out V, out Liste, out Ls, out L))
            {
                U Parent = (U)V.DataContext;
                // On force à faire au minimum un tour de boucle dans le cas ou la liste est vide.

                int Nb = Math.Max(Ls.Count, 1);
                if (UnSeul)
                {
                    Nb = 1;
                }

                for (int i = 0; i < Nb; i++)
                {
                    T obj = Ajouter <T, U>(Parent);
                    pListe.Add(obj);
                    V.ScrollIntoView(obj);
                    V.SelectedItem = obj;
                }
            }

            return(pListe);
        }
        private ListeObservable <T> Inserer_List <T>(object sender, RoutedEventArgs e)
            where T : ObjetGestion, new()
        {
            ListeObservable <T> pListe = new ListeObservable <T>();

            ListBox V; ListeObservable <T> Liste; List <T> Ls; T L;

            if (Info(sender as MenuItem, out V, out Liste, out Ls, out L))
            {
                foreach (T iL in Ls)
                {
                    T Obj = Ajouter <T>();
                    pListe.Add(Obj);
                    Liste.Move(Liste.IndexOf(Obj), Liste.IndexOf(L));
                }
                Liste.Numeroter();
            }
            return(pListe);
        }
        private ListeObservable <T> Inserer_Coller_List <T, U>(object sender, RoutedEventArgs e)
            where T : ObjetGestion, new()
            where U : ObjetGestion
        {
            // Liste temporaire renvoyé par la fonction
            ListeObservable <T> pListe = new ListeObservable <T>();

            ListBox V; ListeObservable <T> Liste; List <T> Ls; T L;

            if (Info(sender as MenuItem, out V, out Liste, out Ls, out L) && (_Copie_Liste != null))
            {
                List <T> pListeCopie = new List <T>();

                U Parent = (U)V.DataContext;
                pListeCopie = _Copie_Liste as List <T>;

                foreach (T iL in pListeCopie)
                {
                    // On ajoute une ligne
                    T Obj = Ajouter <T, U>(Parent);
                    pListe.Add(Obj);

                    // On copie la ligne
                    Obj.Copier(iL);

                    // Si la liste contient des lignes, on la déplace
                    if (L != null)
                    {
                        Liste.Move(Liste.IndexOf(Obj), Liste.IndexOf(L));
                    }
                }

                Liste.Numeroter();
            }
            return(pListe);
        }
        private ListeObservable <T> Ajouter_List <T>(object sender, RoutedEventArgs e, Boolean UnSeul = false)
            where T : ObjetGestion, new()
        {
            ListeObservable <T> pListe = new ListeObservable <T>();

            ListBox V; ListeObservable <T> Liste; List <T> Ls; T L;

            if (Info(sender as MenuItem, out V, out Liste, out Ls, out L))
            {
                int Nb = Math.Max(Ls.Count, 1);
                if (UnSeul)
                {
                    Nb = 1;
                }

                // On force à faire au minimum un tour de boucle dans le cas ou la liste est vide.
                for (int i = 0; i < Nb; i++)
                {
                    pListe.Add(Ajouter <T>());
                }
            }

            return(pListe);
        }