fonction val "depassement de capacité"

bob4444

XLDnaute Nouveau
Bonjour a tous
J'ai un probleme dans ma fonction VBA. La fonction doit prendre une chaine de caractere contenue dans une cellule puis extraire chaque caractere numerique. Le code bug ici :
Code:
Sub azerty()
Dim e As String
Dim c As String
Dim l As Long

c = "BAT3 ETG2D 3062D"
l = 9

e = Val(Mid(c, l))

End Sub
Normalement, le code parcour chaque cellule du fichieret chaque caractere de chaque cellule, c'est pour simplifier que je n'ai mis que la valeur qui pose probleme.

En fait je voudrais qu'il me renvoit ici e=2 (le neuvieme caractere), mais la il me met "erreur d'execution 6 : dépassement de capacité".

Je ne comprend pas pourquoi, ce code marche tres bien sur n'importe quelle autre cellule c'est juste celle la qu'il n'aime pas... Et comme e est déclaré en string et c et l en double je ne comprend vraiment pas...

Si vous avez une idée je suis preneur !
Merci d'avance :)
 

VDAVID

XLDnaute Impliqué
Re : fonction val "depassement de capacité"

Bonjour Bob4444,

Dans le code que tu as envoyé, tu as omis le troisième argument de l'instruction Mid.
Si cet argument est omis, c'est la totalité du string après la position de départ qui est prise en compte. Du coup en mettant l'argument Length à 1 ça marche chez moi.

Comme ceci:

Code:
Sub azerty()
Dim e As String
Dim c As String
Dim l As Long

c = "BAT3 ETG2D 3062D"
l = 9

e = Val(Mid(c, l, 1))

End Sub

Bon après-midi
 

Dranreb

XLDnaute Barbatruc
Re : fonction val "depassement de capacité"

Bonjour.

Je me suis tout de même demandé pourquoi cela provoquait un dépassement de capacité, car normalement Val restitue ce qu'il pu interpréter. Du fait qu'un "C" ne saurait faire partie d'un nombre :
Val("123 C 3") --> 123 mais :
Val("123 E 3") --> 123000 soit (123.*10^3), mais, surprise :
Val("123 D 3") --> 123000 aussi ! Le "D" est aussi reconnu comme annonçant un exposant de puissance de 10.
On dirait une influence d'un vieux langage: le FORTRAN, où c'était une façon normale d'exprimer un nombre en double précision.
Dans l'exemple il avait donc reconnu 2 * 10^3062. Un peu grand l'exposant …
 

bob4444

XLDnaute Nouveau
Re : fonction val "depassement de capacité"

Merci pour ces précisions ! J'avais effectivement déja eu ce probleme avec le E je n'aurais jamais pensé que le D était également considéré comme un exposant... En tout cas merci beaucoup :)
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 581
Messages
2 089 916
Membres
104 306
dernier inscrit
Bouhlal