Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

type incompatible '[string:""]

5 réponses
Avatar
---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_CRE=1000000+(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

5 réponses

Avatar
moi
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:""]'



Avatar
---DGI972---
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
Avatar
Gilles LAURENT [MVP]
"---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
Avatar
---DGI972---
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_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 ...
Avatar
Gilles LAURENT [MVP]
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le
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