Voici les fonctions indispensables qui permettent d'éditer un code-barres avec la police ean13.ttf.
C'est copié de ce qu'on trouve sur le forum (mais qu'on ne peut pas ouvrir, merci GrandZébu !) mais adapté à Excel et tellement simple à utiliser, du genre :
Cells(i,j) = EAN13(code), code étant les 12 chiffres du code à imprimer, le 13ème, la clef de contrôle, est ajouté dans la fonction par l'intermédiaire de la function Clef ci-dessous.
Bonne réception et bon travail !
LouisAvona
Function EAN13$(chaine$)
Dim i%, first%, CodeBarre$, tableA As Boolean, clé As Byte
'V 1.1.1
'Paramètres reçu : une chaine de 12 chiffres
'Retour de la fonction : une chaine qui, affichée avec la police EAN13.TTF, donne le code barre
' ou une chaine vide si paramètre fourni incorrect.
EAN13 = ""
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
clé = Clef(chaine)
chaine = chaine & clé
'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 To 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
Function Clef(EAN13$) As Byte 'String 'Byte
Dim k%, i%, total%
'Calcul de la clé de contrôle
EAN13 = Left(Trim(EAN13), 12)
k = 3 'facteur'
For i = Len(EAN13) To 1 Step -1
total = total + Mid(EAN13, i, 1) * k
k = 4 - k
Next i
Clef = CStr(10 - IIf(total Mod 10 <> 0, total Mod 10, 10))
End Function