Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
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