Parcours de cellule excel, problème de types

Signaler
Messages postés
25
Date d'inscription
mercredi 11 février 2009
Statut
Membre
Dernière intervention
23 avril 2009
-
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010
-
Bonjour , voici mon problème.
Je développe une application en VB.net, dont le but est de traiter des données excel et les ranger dans une base access.
Je souhaite trouver une valeur  contenue dans une variable 'mavar' déclarée en string, dans ma feuille excel :

Dim mavar As String = "toto"
If worksheet.Cells(i, j).Value <> Nothing And worksheet.Cells(i, j).Value = mavar Then

Le problème étant : J'ai déclaré mavar en string , mais lorsqu'elle passe sur une case contenant un double, une erreur se produit de type 'Impossible de convertir la cellule en string'.
Quand je mets un   worksheet.Cells(i, j).Value .toString = mavar,  ça me mets une erreur de type 'L'exception nullréférence n'as pas été gérée'

Quelqu'un aurait-il donc une solution pour parcourir et comparer la valeur contenue dans ma cellule avec ma variable, et ce quelqu'en soit le type ?

4 réponses

Messages postés
25
Date d'inscription
mercredi 11 février 2009
Statut
Membre
Dernière intervention
23 avril 2009

Edit : J'avais pour habitude de travailler en java, ou il existe une fonction instanceof() qui reconnait si une variable est d'un type souhaité, ce qui contournait le problème de concordance des types.

J'ai donc cherché en C# l'équivalent, et je l'ai traduit en VB.net , ce qui donne :  If worksheet.Cells(i, j).value.[GetType]().IsAssignableFrom(mavar.[GetType]()

Cependant, la boucle ne marche toujours pas. Si quelqu'un a une meilleure méthode pour la concordance des types, merci d'avance.
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010

Salut
et si "mavar" était déclarée en Object (type Vb.Net), équivalant à "Variant" (type VB6 et VBA Excel 2000) ?

CNTJC
Messages postés
25
Date d'inscription
mercredi 11 février 2009
Statut
Membre
Dernière intervention
23 avril 2009

bonjour,

Merci de ta suggestion , mais les mêmes erreurs se reproduisent.
C'est assez frustrant de ne pas pouvoir faire en VB ce que j'aurai fait en java.
Je vais continuer a chercher , merci quand même

cordialement
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010

Salut
Est ce que "Nothing" est bien employé dans ton test?
Et pourquoi pas utiliser la fonction "IsNumeric" .

If Not IsNumeric(ActiveSheet.Cells(i, j).Value) And ActiveSheet.Cells(i, j).Value = mavar Then

Affaire à suivre

CNTJC