Conversion non demandée

Résolu
michel120147 Messages postés 17 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 9 août 2006 - 25 juin 2006 à 14:11
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 25 juin 2006 à 17:44
Bonjour,

j'ai la boucle suivante et j'ai sytématiquement une erreur qui dit que la valeur ne peut pas être
convertie en "integer". Je précise que "enreg.num" est string. Le but de cette boucle est de récupérer les chiffres qui sont contenus dans "num". (et je ne connais ni la position, ni la longueur de la chaine numérique)

voici l'erreur qui se produit dans le "If" : La conversion de la chaîne "1392A" en type 'Integer' n'est pas valide

                    dim mot,num as string
                    For i = 2 To indexmax
                        Avance.Value = i
                        FileGet(nfich, enreg, i)                        mot " " : num Trim(enreg.num)
                        For j = 1 To Len(enreg.num)
                            Try
                                If Asc(Mid(j, num, 1)) >= 48 And Asc(Mid(j, num, 1)) <= 57 Then
                                    mot = mot + Chr(Asc(Mid(j, num, 1)))
                                End If
                            Catch ex As ArgumentException
                            End Try
                        Next

Qui peut me dire pourquoi cette conversion que je ne demande pas ??

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
25 juin 2006 à 14:54
Houppps, l'erreur vient de ton instruction Mid : Mid(chaine, index de départ, longueur)

Il faut donc que tu écrive Mid(num , j , 1)

<hr /># Le partage est notre force #
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
25 juin 2006 à 14:41
Quelle est la valeur de j et la longueur de num au moment de l'erreur ?

A mon avis ton erreur viendrait plutot de là :
mot " " : num Trim(enreg.num)
For j = 1 To Len(enreg.num)

Tu parcourt ta chaine num mais selon la longueur de enreg.num. Hors si enreg.num contient des espaces, ta chaine num sera plus courte, les espaces ayant été supprimés. Dans ce cas Mid doit te renvoyer une erreur.

Alors soit tu fait Len(num), soit tu laisse tomber num et tu traite directement enreg.num : Mid(j,enreg.num,1)

<hr /># Le partage est notre force #
0
michel120147 Messages postés 17 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 9 août 2006
25 juin 2006 à 15:10
Merci,

J'avais l'erreur sous le nez et ja ne la voyait pas, ça doit être l'age !!!
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
25 juin 2006 à 17:44
Salut,

michel, peux tu accepter la réponse stp !
Merci de ta compréhension.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
Rejoignez-nous