Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

macro vbs code ok, but invalid expression

Hello,

this macro is ok for the code :

Public Function ean13(chaine)  'V 1.0

  'Paramètres : une chaine de 12 chiffres

  'Retour : * une chaine qui, affichée avec la police EAN13.TTF, donne le code barre

  '         * une chaine vide si paramètre fourni incorrect

  Dim i, checksum, first, CodeBarre, tableA

  ean13 = ""

  'Vérifier qu'il y a 12 caractères

  If Len(chaine) = 12 Then

    'Et que ce sont bien des chiffres

    For i = 1 To 12

      If Asc(Mid(chaine, i, 1)) < 48 Or Asc(Mid(chaine, i, 1)) > 57 Then

        i = 0

        Exit For

      End If

    Next

    If i = 13 Then

      'Calcul de la clé de contrôle

      For i = 2 To 12 Step 2

        checksum = checksum + Val(Mid(chaine, i, 1))

      Next

      checksum = checksum * 3

      For i = 1 To 11 Step 2

        checksum = checksum + Val(Mid(chaine, i, 1))

      Next

      chaine = chaine & (10 - checksum Mod 10) Mod 10

      'Le premier chiffre est pris tel quel, le deuxième vient de la table A

      CodeBarre = Left(chaine, 1) & Chr(65 + Val(Mid(chaine, 2, 1)))

      first = Val(Left(chaine, 1))

      For i = 3 To 7

        tableA = False

         Select Case i

         Case 3

           Select Case first

           Case 0, 1, 2, 3

             tableA = True

           End Select

         Case 4

           Select Case first

           Case 0, 4, 7, 8

             tableA = True

           End Select

         Case 5

           Select Case first

           Case 0, 1, 4, 5, 9

             tableA = True

           End Select

         Case 6

           Select Case first

           Case 0, 2, 5, 6, 7

             tableA = True

           End Select

         Case 7

           Select Case first

           Case 0, 3, 6, 8, 9

             tableA = True

           End Select

         End Select

       If tableA Then

         CodeBarre = CodeBarre & Chr(65 + Val(Mid(chaine, i, 1)))

       Else

         CodeBarre = CodeBarre & Chr(75 + Val(Mid(chaine, i, 1)))

       End If

     Next

      CodeBarre = CodeBarre & "*"   'Ajout séparateur central

      For i = 8 To 13

        CodeBarre = CodeBarre & Chr(97 + Val(Mid(chaine, i, 1)))

      Next

      CodeBarre = CodeBarre & "+"   'Ajout de la marque de fin

      ean13 = CodeBarre

    End If

  End If

End Function

but when i apply this function it's ko :

EAN.jpg

EAN erreur.jpg

Thanks for your help.

Sophie

1 Solution
3 Replies
m_woolf
Master II
Master II

It looks like you are trying to call a vbs function from a QlikView text box. The ean13 function is available only from the module code.

Anonymous
Not applicable
Author

Thank you, i can use this function in expression now.

But the function is not correct, return null value, i am not expert in vbs could you help me to debug this function ?

Sophie