private void ImpayerCategorie(Dictionary <string, List <int> > lstCentre, List <int> lstIdCategorieClient, List <int> lstIdTournee, bool IsDetail)
        {
            prgBar.Visibility = System.Windows.Visibility.Visible;
            Galatee.Silverlight.ServiceReport.ReportServiceClient service1 = new Galatee.Silverlight.ServiceReport.ReportServiceClient(Utility.ProtocoleFacturation(), Utility.EndPoint("Report"));
            service1.ReturneListeDesImpayesCompleted += (sr, res) =>
            {
                prgBar.Visibility = System.Windows.Visibility.Collapsed;

                if (res != null && res.Cancelled)
                {
                    return;
                }

                if (res.Result != null && res.Result.Count != 0)
                {
                    string Rdlc = "ImpayeCategorieTournee";
                    if (btn_Site.Tag.ToString() == SessionObject.Enumere.CodeSiteScaBT ||
                        btn_Site.Tag.ToString() == SessionObject.Enumere.CodeSiteScaMT)
                    {
                        Rdlc = "ImpayeCategorieGCTournee";
                    }

                    if (this.rdb_Detail.IsChecked == true)
                    {
                        Rdlc = "ImpayeCategorieDetail";
                    }

                    List <ServiceReport.CsLclient> lstClient = new List <ServiceReport.CsLclient>();
                    var lesClient = res.Result.Select(y => new { y.CENTRE, y.CLIENT, y.ORDRE }).Distinct();
                    foreach (var item in lesClient)
                    {
                        lstClient.Add(new ServiceReport.CsLclient()
                        {
                            CENTRE = item.CENTRE, CLIENT = item.CLIENT, ORDRE = item.ORDRE
                        });
                    }
                    int      Passage = 0;
                    string[] tableau = new string[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "AB", "AC", "AD", "AE", "AF", "AG", "AH" };
                    while (lstClient.Where(o => o.Selectionner != true).Count() != 0)
                    {
                        string        NomFichier        = Rdlc + tableau[Passage];
                        List <string> clientSelectionne = lstClient.Where(m => m.Selectionner != true).Take(2000).Select(o => o.CLIENT).ToList();
                        List <ServiceReport.CsLclient> factureAEditer = res.Result.Where(p => clientSelectionne.Contains(p.CLIENT)).ToList();

                        if (Chk_ExportExcel.IsChecked != true)
                        {
                            Utility.ActionDirectOrientation <ServicePrintings.CsLclient, ServiceReport.CsLclient>(res.Result, null, SessionObject.CheminImpression, Rdlc, "Report", true);
                        }
                        else
                        {
                            Utility.ActionExportation <ServicePrintings.CsLclient, ServiceReport.CsLclient>(res.Result, null, string.Empty, SessionObject.CheminImpression, Rdlc + "Xls", "Report", true, "xlsx");
                        }

                        lstClient.Where(p => clientSelectionne.Contains(p.CLIENT)).ToList().ForEach(p => p.Selectionner = true);
                        Passage++;
                    }
                }
                else
                {
                    Message.ShowInformation("Aucune information trouvée", "Report");
                    return;
                }
            };
            service1.ReturneListeDesImpayesAsync(lstCentre, lstIdCategorieClient, lstIdTournee, IsDetail);
            service1.CloseAsync();
        }