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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
moi
Le #18108051
bonsoir,

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 tous le monde,

Je suis confronté a un petit Pb de type incompatible '[string:""]'



---DGI972---
Le #18108951
moi a présenté l'énoncé suivant :
bonsoir,

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 tous le monde,

Je suis confronté a un petit Pb de type incompatible '[string:""]'




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
Gilles LAURENT [MVP]
Le #18111431
"---DGI972---" wrote:

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
---DGI972---
Le #18117421
Gilles LAURENT [MVP] a pensé très fort :
"---DGI972---" wrote:

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



Bonsoir,

Ca marche pas ...
les valeurs sont numériques
par ex: CH6_CRE0200201

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 ...
Gilles LAURENT [MVP]
Le #18123181
"---DGI972---" message de
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
Publicité
Poster une réponse
Anonyme