type incompatible '[string:""]
Le
---DGI972---

Bonjour tous le monde,
Je suis confronté a un petit Pb de type incompatible '[string:""]'
Voici un exemple de ligne (longueur 200) ou je fais une extraction de
zone :
40520002020000002000200200000001206178900240021077000000000020000005719516000000000000200000500366
0 0 89 000000000000000001206178
voici le bout de code qui pose Pb:
CH6_CRE=Mid(Sline,13,9) 'Index image'
CH7_CRE00000+(Mid(CH6_CRE,5,5)) '100 0000 + index image numérique'
Je veux faire la somme de 1000000 et le résultat de l'extraction de la
zone de ma variable CH6_CRE (ou c'est un nombre longueur 9 caractères)
Ca coisse car je suppose que le résultat d'un Mid c'est de
l'alphanumérique et que je ne pas faire des sommes avec
Comment faire alors ?
Cordialement,
DGI972
Je suis confronté a un petit Pb de type incompatible '[string:""]'
Voici un exemple de ligne (longueur 200) ou je fais une extraction de
zone :
40520002020000002000200200000001206178900240021077000000000020000005719516000000000000200000500366
0 0 89 000000000000000001206178
voici le bout de code qui pose Pb:
CH6_CRE=Mid(Sline,13,9) 'Index image'
CH7_CRE00000+(Mid(CH6_CRE,5,5)) '100 0000 + index image numérique'
Je veux faire la somme de 1000000 et le résultat de l'extraction de la
zone de ma variable CH6_CRE (ou c'est un nombre longueur 9 caractères)
Ca coisse car je suppose que le résultat d'un Mid c'est de
l'alphanumérique et que je ne pas faire des sommes avec
Comment faire alors ?
Cordialement,
DGI972
il y a sans doute d'autres méthodes disponibles...
... j'aime bien "execute" :
Sline =
"40520002020000002000200200000001206178900240021077000000000020000005719516"
CH6=Mid(Sline,13,9)
' CH6 est une chaine
msgbox "Chaine CH6 : " & CH6
execute("NB6 = " & CH6)
' NB6 est un nombre
Truc = NB6 + 7
msgbox "Nombre NB6 + 7 : " & Truc
execute("NB7 = 1000000 + " & Mid(CH6,5,5))
' NB7 est un nombre
Truc = NB7 + 6
msgbox "Nombre NB7 + 6 : " & Truc
CH7 = Cstr(NB7)
' CH7 est une chaine
msgbox "Chaine CH7 : " & CH7
' Test
Truc = NB7 + NB6
msgbox "Nombre NB7 + NB6 : " & Truc
A+
HB
---DGI972--- wrote:
Bonjour,
Votre exemple fonctionne a merveille.
Mais je suis incapable de le restranscrire dans mon code (et pourtant
il n'est pas si tard ...)
CH6_CLO=Mid(Sline,13,9) 'index images numeriques'
execute("NCH6_CLO = 1000000 + " & Mid(CH6_CL0,5,5)) '100 0000 + index'
CH7_CLO=NCH6_CLO
j'ai une erreur de syntax à la ligne execute.
Je suis vraiment désolé je ne vois pas (déjà execute ...)
lol
Merci d'avance
Le problème ne provient pas du calcul de la somme (VBScript effectue dans ce
cas le typage "Double" automatiquement) mais probablement du fait que sLine
est vide dans votre boucle. Si sLine est vide, soit "" alors en effet vous
obtenez l'erreur indiquée. J'ai donc simplement ajouté un test pour d'une
part s'assurer que la chaine n'est pas vide et d'autre part que celle-ci à
une taille supérieure ou égale à 21 caractères. Bien entendu, je considère
ici que sLine ne contient que des caractères numériques. Par exemple :
sLine="4052000202000000200201034567"
If sLine<>"" And Len(sLine)=>21 Then
sIndex=Mid(sLine, 13, 9) ' String
dwSum0000 + (Mid (sIndex, 5, 5)) ' Double
WScript.Echo sIndex, dwSum
End If
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Bonsoir,
Ca marche pas ...
les valeurs sont numériques
par ex: CH6_CRE 0200201
Je contourne le Pb en faisant:
Sline="4052000202000000200201034567"
CH6_CRE=Mid(Sline,13,9) 'Index image'
CH7_CRE00000+CH6_CRE '100 0000 + index image numérique'
et le résultat est correcte:12000201
Les zéros devant la variable CH6_CRE sont gérés.
Merci quand même ...
news:
| Bonsoir,
Bonsoir,
| Ca marche pas ...
Comment ça ? Je dirai plutôt que le résultat ne répond pas à votre
attente :-) J'ai en fait uniquement conservé la fonction Mid (sIndex, 5,
5) ne connaissant pas précisément votre besoin. Vous l'aviez compris,
hein ?
| Merci quand même ...
Pas de quoi ;-)
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr