/// <summary>
        /// Action de bouton Ajouter (Ajouter l'activité)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonAjouterActivite_Click(object sender, EventArgs e)
        {
            /// Je récupère la ligne du type d'activité qui me servira plus tard
            cda27_bd2DataSet.type_activiteRow currentRow = (cda27_bd2DataSet.type_activiteRow)((DataRowView)typeactiviteBindingSource.Current).Row;
            /// Publier vaut 1 ou 0 si il est coché ou non
            int publier = checkBoxPublic.Checked ? 1 : 0;

            /// Je vérifie les champs, si ils sont null ou comportent seulement des espaces
            if (String.IsNullOrWhiteSpace(textBoxIntituleAct.Text) ||
                String.IsNullOrWhiteSpace(textBoxDescription.Text) ||
                String.IsNullOrWhiteSpace(textBoxTarifAdherent.Text) ||
                String.IsNullOrWhiteSpace(textBoxTarifInvite.Text))
            {
                /// Message d'erreur de champs non remplis
                MessageBox.Show(Properties.Resources.STR_MESSAGE_CHAMPS_NON_REMPLI,
                                Properties.Resources.STR_TITRE_CHAMPS_NON_REMPLI,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
                /// Je quitte l'évenement
                return;
            }
            /// Si la date de début est inférieure à la date d'aujourd'hui
            /// Et si la date de début est supérieure à la date de fin
            /// Et si la date limite est supérieure à la date de début
            /// Et si la date limite est supérieure à la date de fin
            /// Alors dans cet ordre : Date du jour > Date limite > Date début > date de fin
            if (dateTimePickerDateLimite.Value < DateTime.Now &&
                dateTimePickerDateDebut.Value > dateTimePickerDateFin.Value &&
                dateTimePickerDateLimite.Value > dateTimePickerDateDebut.Value &&
                dateTimePickerDateLimite.Value > dateTimePickerDateFin.Value)
            {
                /// Message d'erreur, les dates comportent un problème chronologique
                MessageBox.Show(Properties.Resources.STR_MESSAGE_DATE_ACT_PROBLEME,
                                Properties.Resources.STR_TITRE_DATE_ACT_PROBLEME,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
                /// Je quitte l'évenement
                return;
            }
            /// Si le prix adhérent / invité n'est pas correct
            else if (!IsPrix(textBoxTarifAdherent.Text) || !IsPrix(textBoxTarifInvite.Text))
            {
                /// Message d'erreur
                MessageBox.Show(Properties.Resources.STR_MESSAGE_TARIF_PROBLEME,
                                Properties.Resources.STR_TITRE_TARIF_PROBLEME,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
                /// Je quitte l'évenement
                return;
            }
            else if (textBoxDescription.Text.Length > 15000)
            {
                MessageBox.Show(Properties.Resources.STR_MESSAGE_DESCRIPTION_PROBLEME,
                                Properties.Resources.STR_TITRE_DESCRIPTION_PROBLEME,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
            }
            /// Si je n'ai pas quitté l'évenement avant, j'insert une activité avec les valeurs correspondantes
            /// L'IdAdherent sera celui de la secrétaire
            int nb = activiteTableAdapter.Insert(
                textBoxIntituleAct.Text,
                dateTimePickerDateDebut.Value,
                dateTimePickerDateFin.Value,
                textBoxDescription.Text,
                textBoxTarifAdherent.Text,
                textBoxTarifInvite.Text,
                dateTimePickerDateLimite.Value,
                100,
                currentRow.IdType,
                null,
                publier
                );

            /// Si la requête réussie
            if (nb == 1)
            {
                MessageBox.Show(Properties.Resources.STR_MESSAGE_ACTIVITE_AJOUT_SUCCESS,
                                Properties.Resources.STR_TITRE_ACTIVITE_AJOUT_SUCCESS,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
                /// Le LastInsert sera utilisé dans le FormMain pour le repositionnement sur l'activité qui vient de s'ajouter
                LastInsert = activiteTableAdapter.Adapter.InsertCommand.InsertId;
                /// IsClose servira dans le MainForm indiquant que la fenêtre va se fermer
                IsClose = true;
                /// Je ferme la fenêtre
                Close();
            }
            /// Sinon, l'ajout ne s'est pas réalisé
            else
            {
                /// Message d'echec
                MessageBox.Show(Properties.Resources.STR_MESSAGE_PROBLEME_AJOUT_ACT,
                                Properties.Resources.STR_TITRE_PROBLEME_AJOUT_ACT,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
            }
        }
        /// <summary>
        /// Action de bouton Modifier (Modifier l'activite)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonModifierActivite_Click(object sender, EventArgs e)
        {
            /// Je récupère le BindingSource des types d'activité
            cda27_bd2DataSet.type_activiteRow currentRow = (cda27_bd2DataSet.type_activiteRow)((DataRowView)typeactiviteBindingSource.Current).Row;
            /// Si publier est coché alors il vaut 1 sinon il vaut 0
            int publier = checkBoxPublic.Checked ? 1 : 0;

            /// Je vérifie que tous les champs ne sont pas null ou comportent des espaces
            if (String.IsNullOrWhiteSpace(textBoxIntituleAct.Text) ||
                String.IsNullOrWhiteSpace(textBoxDescription.Text) ||
                String.IsNullOrWhiteSpace(textBoxTarifAdherent.Text) ||
                String.IsNullOrWhiteSpace(textBoxTarifInvite.Text))
            {
                /// Si ce n'est pas le cas j'affiche un message d'erreur
                /// Les champs ne sont pas remplis
                MessageBox.Show(Properties.Resources.STR_MESSAGE_CHAMPS_NON_REMPLI,
                                Properties.Resources.STR_TITRE_CHAMPS_NON_REMPLI,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
                /// Je quitte l'évenement
                return;
            }
            /// Si la date de début est inférieure à la date d'aujourd'hui
            /// Et si la date de début est supérieure à la date de fin
            /// Et si la date limite est supérieure à la date de début
            /// Et si la date limite est supérieure à la date de fin
            /// Alors dans cet ordre : Date du jour > Date limite > Date début > date de fin
            if (dateTimePickerDateLimite.Value < DateTime.Now &&
                dateTimePickerDateDebut.Value > dateTimePickerDateFin.Value &&
                dateTimePickerDateLimite.Value > dateTimePickerDateDebut.Value &&
                dateTimePickerDateLimite.Value > dateTimePickerDateFin.Value)
            {
                /// Affichage d'un message "problème de chronologie des dates"
                MessageBox.Show(Properties.Resources.STR_MESSAGE_DATE_ACT_PROBLEME,
                                Properties.Resources.STR_TITRE_DATE_ACT_PROBLEME,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
                /// Je quitte l'évenement
                return;
            }
            /// Vérification des prix Adhérents / Invités par une Regex (expression régulière)
            else if (!IsPrix(textBoxTarifAdherent.Text) || !IsPrix(textBoxTarifInvite.Text))
            {
                /// Si le test échoue, j'affiche un message d'erreur de tarif
                MessageBox.Show(Properties.Resources.STR_MESSAGE_TARIF_PROBLEME,
                                Properties.Resources.STR_TITRE_TARIF_PROBLEME,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
                /// Je quitte l'événement
                return;
            }
            else if (textBoxDescription.Text.Length > 15000)
            {
                MessageBox.Show(Properties.Resources.STR_MESSAGE_DESCRIPTION_PROBLEME,
                                Properties.Resources.STR_TITRE_DESCRIPTION_PROBLEME,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
            }
            /// J'exécute la requête d'update avec les valeurs nouvelles,
            /// l'IdAdherent sera la secrétaire,
            /// les valeurs anciennes seront celle du CurrentRow de la FormMain
            int nb = activiteTableAdapter.Update(
                textBoxIntituleAct.Text,
                dateTimePickerDateDebut.Value,
                dateTimePickerDateFin.Value,
                textBoxDescription.Text,
                textBoxTarifAdherent.Text,
                textBoxTarifInvite.Text,
                dateTimePickerDateLimite.Value,
                100,
                currentRow.IdType,
                null,
                publier,
                currentRowAdh.IdActivite,
                currentRowAdh.Intitulé,
                currentRowAdh.Date_de_début,
                currentRowAdh.Date_de_fin,
                currentRowAdh.Description,
                currentRowAdh.Tarif_adhérent,
                currentRowAdh.Tarif_invité,
                currentRowAdh._Date_limite_d_inscription,
                currentRowAdh.IdAdherent,
                currentRowAdh.IdType,
                currentRowAdh.Publié
                );

            /// Si la requête échoue
            if (nb == 0)
            {
                /// J'affiche un message : Mise à jour non réalisée
                MessageBox.Show(Properties.Resources.STR_MESSAGE_MAJ_NON_REALISEE,
                                Properties.Resources.STR_TITRE_MAJ_NON_REALISEE,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
                /// Je quitte l'évenement
                return;
            }
            else
            {
                /// J'affiche un message : Mise à jour non réalisée
                MessageBox.Show(Properties.Resources.STR_MESSAGE_MAJ_OK,
                                Properties.Resources.STR_TITRE_MAJ_OK,
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
                /// Je mets en variable l'IdActivité pour me repositionner dans le fenêtre main sur l'activité précédemment séléctionnée
                LastInsert = currentRowAdh.IdActivite;
                /// IsClose me servira pour savoir que la fenêtre va se fermer dans le FormMain
                IsClose = true;
                /// Je ferme la fenêtre
                Close();
            }
        }