/// <summary>
        /// Permet d'afficher dans la datagridView les clients ajoutés
        /// On définit une dataTable qui sera alimentée par les données de nos clients
        /// Cette procédure sera ensuite appelée au niveau dès le chargement du formulaire
        /// (constructeur du form ou evenement load)
        /// </summary>
        public void afficheClient()
        {
            //DataTable permettant de recopier les clients stockés dans la collection
            DataTable dt = new DataTable();
            // Ligne de la dataTable
            DataRow dr;
            //Variable de boucle
            int j;


            dt.Columns.Add(new DataColumn("Raison sociale", typeof(System.String)));
            dt.Columns.Add(new DataColumn("Ville", typeof(System.String)));
            dt.Columns.Add(new DataColumn("Code postal", typeof(System.Int32)));
            dt.Columns.Add(new DataColumn("Privé", typeof(System.Boolean)));
            dt.Columns.Add(new DataColumn("Activité", typeof(System.String)));
            dt.Columns.Add(new DataColumn("Nature", typeof(System.String)));


            // boucle de remplissage de la DataTable à partir de la collection
            for (j = 0; j < Donnees.arrayClients.Count; j++)
            {
                // Seb : pourquoi déjà on instancie ici ? Dans l'exo7 on ne le fait pas (en tous cas pas là)
                MClients client = (MClients)Donnees.getClientById(j);
                //Instanciation de la datarow
                dr = dt.NewRow();
                //Affectation des colonnes
                //Code proposé par Seb
                //Dans l'exo7 voici la syntaxe :
                //dr[0] = ((MClients)(Donnees.ArrayClients[j])).RaisonSociale;
                //etc
                dr[0] = client.RaisonSociale;
                dr[1] = client.Ville;
                dr[2] = client.CodePostal;
                dr[3] = client.ClientPrive;
                dr[4] = client.Activite;
                dr[5] = client.Nature;
                //Ajout de la ligne à la dataTable
                dt.Rows.Add(dr);
            }
            // détermine l'origine des données à afficher dans la datagriedview
            this.grdListe.DataSource = dt.DefaultView;
            // rafraichi le datagriedview
            this.grdListe.Refresh();
            dt = null; // utile ?
            dr = null; // utilité ?
        }
        private void grdListe_DoubleClick(object sender, EventArgs e)
        {
            Int32 iClient;

            iClient = this.grdListe.CurrentRow.Index;

            //Code suivant mis en commentaire : pourquoi ajouter ça ?

            // instancie un objet client vers le form de consultation client d'origine dans la collection
            // Code proposé par Seb
            //Dans l'exo 7
            // MClients leClient = Donnees.ArrayClients[iClient] as MClients
            MClients leClient = Donnees.getClientById(iClient) as MClients;
            // instancie le form "Nouveau Contact" qui correspond à la création du contact

            frmConsultationClient frmConsultation = new frmConsultationClient(leClient);

            // affiche le form de la création de contact en modal
            frmConsultation.ShowDialog();
            // rafaichit la datagriedview quand le form est fermé
            this.afficheClient();
        }
        public void afficheContact()
        {
            DataTable dataContact = new DataTable();
            DataRow   dr;
            int       j;

            dataContact.Columns.Add(new DataColumn("Nom", typeof(System.String)));
            dataContact.Columns.Add(new DataColumn("Prenom", typeof(System.String)));
            dataContact.Columns.Add(new DataColumn("Telephone", typeof(System.Int32)));
            dataContact.Columns.Add(new DataColumn("Email", typeof(System.String)));
            dataContact.Columns.Add(new DataColumn("Fonction", typeof(System.String)));
            // boucle de remplissage de la DataTable à partir de la collection

            // à ameliorer: on va chercher dans Donnees la liste des commerciaux correspondants
            // à ceux du client. Puis on parcourt cette nouvelle liste pour créer les dataContact
            // ArrayList commerciaux = Donnees.getCommercialByumClient(leClient.NumClient);
            // for (j=0; j < commerciaux.Count; j++)

            for (j = 0; j < Donnees.arrayCommercial.Count; j++)
            {
                dr = dataContact.NewRow();
                MCommercial mCommercial = (MCommercial)(Donnees.getCommercialById(j));
                if (mCommercial.NumClient == this.leClient.NumClient)
                {
                    dr[0] = mCommercial.NomContact;
                    dr[1] = mCommercial.PrenomContact;
                    dr[2] = mCommercial.TelephoneContact;
                    dr[3] = mCommercial.Email;
                    dr[4] = mCommercial.Fonction;

                    dataContact.Rows.Add(dr);
                }
            }
            // détermine l'origine des données à afficher dans la datagriedview
            this.grdContact.DataSource = dataContact.DefaultView;
            // rafraichi le datagriedview
            this.grdContact.Refresh();
        }