/// <summary>
        /// Remplace la totalité des données dans le tableau
        /// </summary>
        /// <param name="iSimpleDataTable"></param>
        /// <param name="iNewDataList"></param>
        public static void ReplaceCompleteDataToSimpleDateTable(SimpleDataTable iSimpleDataTable, List <List <string> > iNewDataList)
        {
            if (iNewDataList.IsNullOrEmpty())
            {
                throw new Exception("La nouvelle liste est vide ou null");
            }

            var mergeData = new object[iNewDataList.Count, iNewDataList.First().Count];

            //Création du tableau
            int rowIndex = 0;

            foreach (var iRowItem in iNewDataList.Enum())
            {
                var columnIndex = 0;
                foreach (var iColumnItem in iRowItem.Enum())
                {
                    mergeData[rowIndex, columnIndex] = iColumnItem;
                    columnIndex++;
                }
                rowIndex++;
            }

            //Ecriture des données dans le tableau
            iSimpleDataTable.SetTableData(mergeData);
        }
        public static void AddDataToSimpleDataTable(SimpleDataTable iSimpleDataTable, List <List <string> > iNewDataList, bool iIsNewDataCanBeWider = false)
        {
            if (iNewDataList.IsNullOrEmpty())
            {
                throw new Exception("La liste ne peut pas être null");
            }

            var originalData = iSimpleDataTable.GetCachedTableData();

            var newDataIsWider = iNewDataList.First().Count() > originalData.GetLength(0) + 1;

            if (iIsNewDataCanBeWider && newDataIsWider)
            {
                throw new Exception("Les nouvelles données contiennent plus de colonnes que le tableau initial");
            }

            //Détermine les dimensions du tableau final
            var columnCount = 0;

            if (originalData.GetLength(1) > 0)
            {
                columnCount = (iNewDataList.First().Count() > originalData.GetLength(1)) ? iNewDataList.First().Count() : originalData.GetLength(1);
            }
            else
            {
                columnCount = iNewDataList.First().Count();
            }

            var mergeData = new object[iNewDataList.Count + originalData.GetLength(0), columnCount];

            //Ajout données existant dans le tableau
            for (int j = 0; j <= originalData.GetLength(0) - 1; j++)
            {
                for (int i = 0; i <= originalData.GetLength(1) - 1; i++)
                {
                    mergeData[j, i] = originalData[j, i];
                }
            }

            //Ajout des nouvelles données
            var rowIndex = originalData.GetLength(0);

            foreach (var iRowItem in iNewDataList.Enum())
            {
                var columnIndex = 0;
                foreach (var iColumnItem in iRowItem.Enum())
                {
                    mergeData[rowIndex, columnIndex] = iColumnItem;
                    columnIndex++;
                }
                rowIndex++;
            }

            iSimpleDataTable.SetTableData(mergeData);
        }