Importer les valeurs d'une matrice excel dans une matrice VB.NET

Résolu
WORMADE Messages postés 4 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 18 mars 2010 - 9 déc. 2009 à 05:23
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 9 déc. 2009 à 09:13
Bonjour,

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?

Merci d'avance.

3 réponses

tpoinsot Messages postés 345 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 octobre 2014 4
9 déc. 2009 à 08:02
Bonjour,
il faut prendre le .value :
DT_1(i, j) = xlWorkSheet.Cells(i + 1, j + 1).Value


thip
3
WORMADE Messages postés 4 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 18 mars 2010
9 déc. 2009 à 08:38
Magique, ca marche!

Merci mille fois!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
9 déc. 2009 à 09:13
Bonjour,

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 !
0
Rejoignez-nous