CALCUL DE CONFORMITÉ CLÉ EAN13

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 8 déc. 2011 à 07:11
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018 - 8 déc. 2011 à 09:16
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

cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
8 déc. 2011 à 09:16
Voir aussi : VÉRIFIER LA CONFORMITÉ D'UN CODE EAN (EUROPEAN ARTICLE NUMBERING) SUR 13 CARACTÈRES
www.vbfrance.com/code.aspx?ID=28143
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 déc. 2011 à 07:12
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
Rejoignez-nous