Page 1 sur 1
Calcul Cle EAN13

Publié:
25 Oct 2007 à 14:01
par Michael DELIQUE
- Code : Tout sélectionner
Function CleEAN13(wEAN As String) As Integer
'Déclaration Variables
Dim EAN As String
Dim Char As String
Dim i As Integer
Dim nbCoef As Integer
On Error Goto ErreurHandle
If Trim(wEAN) = "" Then
CleEAN13 = -1
Exit Function
End If
'elemination des caracteres superflux
EAN = ""
For i = 1 To Len(wEAN)
Char = Mid(wEAN,i,1)
If Char Like "[0-9]" Then
EAN = EAN + Ucase(Char)
End If
Char = ""
Next
'si 13 caratere c'est que la clé de controle est intégré au code EAN
If Len(EAN) = 13 Then
EAN = Left(EAN,12)
End If
If Len(EAN) <> 12 Then
CleEAN13 = -1
Exit Function
End If
nbCoef = 3
CleEAN13 = 0
For i = 1 To Len(EAN)
Char = Mid(EAN,i,1)
If nbCoef = 3 Then
nbCoef = 1
Else
nbCoef = 3
End If
CleEAN13 = CleEAN13 + (Cint(Char)*nbCoef)
Char = ""
Next
EAN = ""
CleEAN13 = 10 -(CleEAN13 Mod 10)
If CleEAN13 = 10 Then
CleEAN13 = 0
End If
%REM
Wikipedia
Calcul de la clé de contrôle
Le calcul de la clé de contrôle se rapproche fortement de celui de l’ISBN même si il existe des différences assez notables.
Calculons la clé de contrôle du code à barres dérivé de la séquence 471-9512-00288-x (où x est la clé de contrôle que l’on cherche), par l’utilisation du tableau suivant :
Chiffres du code à barres 4 7 1 9 5 1 2 0 0 2 8 8
Coefficient 1 3 1 3 1 3 1 3 1 3 1 3
Résultat 4*1 7*3 1*1 9*3 5*1 1*3 2*1 0*3 0*1 2*3 8*1 8*3
4 21 1 27 5 3 2 0 0 6 8 24
Le coefficient étant alternativement 1 et 3.
Il faut ensuite calculer la somme des résultats : 4+21+1+27+5+3+2+0+0+6+8+24 = 101
On soustrait à 10 le reste de la division par 10 de la somme précédement calculée : 10 - (101 % 10) = 10 - 1 = 9
La clé de controle est donc 9. Attention : Si le résultat est 10 alors la clé vaut 0.
Le code EAN 13 complet est alors 471-9512-00288-9 (les tirets ne font pas partie du code à barres et sont rajoutés pour aider à la lecture).
%END REM
Exit Function
ErreurHandle:
Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
CleEAN13 = -1
Exit Function
End Function