Importer les valeurs d'une matrice excel dans une matrice VB.NET [Résolu]

Messages postés
4
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
18 mars 2010
- - Dernière réponse : ucfoutu
Messages postés
18039
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.
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
3
3
Merci
Bonjour,
il faut prendre le .value :
DT_1(i, j) = xlWorkSheet.Cells(i + 1, j + 1).Value


thip

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de tpoinsot
Messages postés
4
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
18 mars 2010
0
Merci
Magique, ca marche!

Merci mille fois!
Commenter la réponse de WORMADE
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
211
0
Merci
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 !
Commenter la réponse de ucfoutu