CALCUL DE CONFORMITÉ CLÉ EAN13

Signaler
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53844-calcul-de-conformite-cle-ean13

Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

Voir aussi : VÉRIFIER LA CONFORMITÉ D'UN CODE EAN (EUROPEAN ARTICLE NUMBERING) SUR 13 CARACTÈRES
www.vbfrance.com/code.aspx?ID=28143
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
Dim C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13 As Integer

ici, seul C13 est un Integer, les autres seront des Variants

C12 = Mid(ean13, 12, 1) * 3

manque un Val ou un test sur la numéricité du tout, non ?

If result3 = C13 Then
verif_ean13 = True
Else: verif_ean13 = False
End If
se dit :verif_ean13 (result3 C13)

result2 = (Mid(result1, 4, 1))
pourquoi 4 ? il te faut prendre le chiffre des unités...

Je coderai :

Sub test()
'9782940199617
MsgBox verif_ean13("4719512002889")
End Sub

Public Function verif_ean13(ean13 As String) As Boolean
Dim xsParts() As Byte
Dim i As Integer
Dim c As Integer
Dim Cumul As Long
If Len(ean13) = 13 Then
xsParts = StrConv(ean13, vbFromUnicode)
For i = 0 To 11
c = xsParts(i) - 48
If c < 0 Or c > 9 Then
Exit Function
End If
Cumul = Cumul + c + (2 * c * (i And 1))
Next
c = xsParts(i) - 48
Cumul = 10 - (Cumul - 10 * (Cumul \ 10)) verif_ean13 (c Cumul)
End If
End Function