Bonjour
J'ai un problème avec mon programme développé en C#.
Ce programme cherche des informations sur une base de données en ligne puis se charge de les rentrer dans un fichier Excel.
J'ai réussi à faire ce programme sur mon ordi fixe et tout marche pour le mieux. Cependant, voulant voir s'il marche sur mon ordi portable, je l'ai lancé via Visual Studio dessus et, là, rien ne va plus.
Voilà mon erreur :
"COMException was unhandled : Index non valide. (Exception de HRESULT : 0x8002000B (DISP_E_BADINDEX))"
Elle intervient dans ma fonction qui remplit mon fichier Excel à la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part MySheet = (Excel.Worksheet)MyBook.Sheets[pnbPatient];nbPatient est une variable qui s'incrémente normalement à la fin d'un boucle et qui est envoyé à la fonction Remplissage_Excel en paramètre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 private void Remplissage_Excel(string pName, int pnbPatient) { MySheet = (Excel.Worksheet)MyBook.Sheets[pnbPatient]; MySheet.Name = pName; MySheet.Cells[1, 1] = "Date"; MySheet.Cells[2, 1] = "Valeur"; //for (int i = 0; i <= MyDict[pName]; i++) int boucle = Nombrenonevent; for (int i = 0; i <= MyDict[pName]; i++) { if (Nombrenonevent > 0) { MySheet.Cells[1, i + 2] = tab[0, i]; MySheet.Cells[2, i + 2] = tab[1, i]; Nombrenonevent--; } else { MySheet.Cells[1, i + 2] = tabevent[0, i-boucle]; MySheet.Cells[2, i + 2] = tabevent[1, i-boucle]; } /*MySheet.Cells[1, i + 2] = tab[0, i]; MySheet.Cells[2, i + 2] = tab[1, i]; MySheet.Cells[4,i+2] = tabevent[0,i]; MySheet.Cells[5,i+2] = tabevent[1,i];*/ } MySheet.Columns.AutoFit(); }
Pour information, j'utilise la librairie "using Excel = Microsoft.Office.Interop.Excel;"
Code : Sélectionner tout - Visualiser dans une fenêtre à part Remplissage_Excel(Name, nbPatient);
Voilà comment j'initialise l'Excel :
Une différence également peut-être notable est que mon ordi fixe utilise Excel 2010 alors que pour portable a Excel 2013. Es-ce que cela joue ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 private void Initialize_Excel() { try { MyApp = new Excel.Application(); } catch { Quit_Excel("Impossible de créer le fichier Excel."); } MyApp.DisplayAlerts = false; MyApp.Visible = false; try { MyBook = MyApp.Workbooks.Add(); } catch { Quit_Excel("Impossible de créer les feuilles de travail Excel."); } }
Merci pour votre aide![]()
Partager