Je souhaite importer une matrice depuis un fichier excel vers une matrice creee sous VB.Net.
Mon code est le suivant :
Sub dat1()
FLName = "DA1"
Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
Dim i, j As Integer
xlApp = New Excel.ApplicationClass
xlWorkBook = xlApp.Workbooks.Open("E:\PITT\VRPTW\bin\c1.xls")
xlWorkSheet = xlWorkBook.Worksheets("c101")
For i = 0 To Nd1
For j = 0 To 6
DT_1(i, j) = xlWorkSheet.Cells(i + 1, j + 1)
Next j
Next i
etc...
Toutefois, j'ai l'erreur suivante qui apparait :
"An unhandled exception of type 'System.InvalidCastException' occurred in microsoft.visualbasic.dll
Additional information: Cast from type 'Range' to type 'Integer' is not valid."
Je crois comprendre que c'est parce que DT_1 est defini ailleurs comme etant un integer --> Dim DT_1(100, 6) As Integer
alors que xlWorkSheet.Cells(i + 1, j + 1) est de type range.
Mais je n'arrive pas a trouver la correction... Comment faire pour copier les valeurs de mon tableau Excel dans ma matrice?
Es-tu vraiment certain d'avoir à dimensionner ton tableau et à utiliser une boucle ?
Ne pourrais-tu récupérer directement le tableau qu'Execel sait parfaitement composer en fonction de la plage traitée ?
Pour mémoire, voici (exemple) depuis Excel :
Dim tablo As Variant, plage As Range
Set plage = Range(Cells(1, 1), Cells(4, 7))
tablo = plage.Value ' elle est là, ta matrice, avec toutes les cellules de la plage
Un tableau Excel est en effet déjà un tableau dynamique
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !