Calcul de conformité clé ean13

Contenu du snippet

un petit programme pour tester la validité d'un code EAN13 (surtout la clé)
je rajouterais dans une prochaine mise à jour pour les autres formats (dun14,EAN13 + 2 EAN13 +5 EAN8)

Source / Exemple :


Réalisé sous access 2007 peut être porté sous d'autres langages 
un formulaire que l'on nomme FORM_FEAN13
un Module
dans le form un champ text EAN13TXT
un bouton de commande

Dans le code du formulaire:

Sub Commande0_Click()
Dim MonCodeEAN13, Mylen, Mychek
MonCodeEAN13 = Form_FEAN13.EAN13TXT.Value
Mychek = IsNumeric(MonCodeEAN13)
If Mychek = True Then
Mylen = Len(MonCodeEAN13)
If Mylen = 13 Then
Debug.Print MonCodeEAN13
MaVerif = verif_ean13(MonCodeEAN13)
If MaVerif = True Then
MsgBox "EAN 13 valide", vbOKOnly, "Contrôle EAN 13"
Else: MsgBox "EAN 13 non valide, vérifiez votre saisie ou la clé de contrôle (dernier chiffre)", vbCritical, "Contrôle EAN 13"
End If
ElseIf Mylen > 13 Then

MsgBox "longueur EAN13 incorrecte il y a  " & Mylen & " chiffre en plus controlez votre saisie", vbCritical, "Longueur EAN13 incorrecte"
Else
Mylen = (13 - Mylen)
MsgBox "longueur EAN13 incorrecte il manque " & Mylen & " chiffre controlez votre saisie", vbCritical, "Longueur EAN13 incorrecte"
End If
Else
MsgBox "Le champ EAN13 ne doit contenir que des chiffres, controlez votre saisie", vbCritical, "Donnée EAN13 saisie invalide"
End If
End Sub

Dans le module:
Public Function verif_ean13(ean13) As Boolean

Rem ean13 = '4719512002889' pour test

Dim C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12 As Variant
Dim C13 As Integer
Dim result1, result2, result3 As Integer

C1 = Mid(ean13, 1, 1) * 1
C2 = Mid(ean13, 2, 1) * 3
C3 = Mid(ean13, 3, 1) * 1
C4 = Mid(ean13, 4, 1) * 3
C5 = Mid(ean13, 5, 1) * 1
C6 = Mid(ean13, 6, 1) * 3
C7 = Mid(ean13, 7, 1) * 1
C8 = Mid(ean13, 8, 1) * 3
C9 = Mid(ean13, 9, 1) * 1
C10 = Mid(ean13, 10, 1) * 3
C11 = Mid(ean13, 11, 1) * 1
C12 = Mid(ean13, 12, 1) * 3
C13 = Mid(ean13, 13, 1) 'clé de contrôle

result1 = ((C1 + C2 + C3 + C4 + C5 + C6 + C7 + C8 + C9 + C10 + C11 + C12) / 10)
If Len(result1) = 4 Then
result2 = (Mid(result1, 4, 1)) ' le resultat de la division est par exemple 10,1
result3 = 10 - result2 'résultat de la clé de contrôle calculée
ElseIf Len(result1) = 3 Then
result2 = (Mid(result1, 3, 1)) ' le resultat de la division est par exemple 8,1
result3 = 10 - result2 'résultat de la clé de contrôle calculée
Else
'cas de figure ou le resulat est un entier pure
result3 = 10 - result2 'résultat de la clé de contrôle calculée
End If

verif_ean13 = (result3 = C13) 'renvoie vrai ou faux

End Function

Conclusion :


très utile dans la gestion des produits :)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.