cs_yohann59
Messages postés12Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention15 janvier 2008
-
6 nov. 2006 à 16:44
cs_yohann59
Messages postés12Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention15 janvier 2008
-
7 nov. 2006 à 02:34
Bonjour à tous.
J'utilise cette source pour imprimer mes codes barres ( 2 parmi 5 ), Mais je n'arrive pas à mettre le checksum à la fin de celui-ci, pourtant le calcul de checksum est bien géré dans la source ....
http://www.vbfrance.com/codes/CODE-BARRE-CODE39-EAN13-5I_34654.aspx
Ce qui me donne un Code sur 11 Caractères.
Ma question est donc, Comment ajouter le Checksum à la fin de mon codebarre par rapport à cette source ( apparament le calcul de checksum est intégré mais je n'arrive pas à l'utiliser )
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 6 nov. 2006 à 17:23
Le cancre --> Il s'agit ici d'un code barre de type "2 of 5 interleaved" ou si tu préfrère "2 parmis 5 entrelacé". Ce code ne permet de coder que des chiffres dont le nombre est illimité mais obligatoirement pair. Le codage se fait sur 5 blocs pour 2 chiffres, le premier étant codé sur les barres noires, le second sur les barre blanches.
yohann59 --> La source n'est visiblement pas complète, il y a bien un calcul du checksum, mais c'est un simple calcul. aucun résultat n'est rajouter au code. Il est prevu un emplacement pour un message d'erreur si le checksum n'est pas valide, mais aucun message de codé. Il smeblerait que c'est une fonctionnalité que l'auteur n'a pas terminé.
Le mieux est que tu te fasse ta propre routine de calcul du checksum en fonction de tes besoins.
Tu epux je pense même refaire ta propre source en élaguant tout ce que tu n'a pas besoin.
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
cs_yohann59
Messages postés12Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention15 janvier 2008 6 nov. 2006 à 16:56
En faite tout fonctionne très bien si par exemple je met ceci :
CodeBarre = Format(DDate, "1" & "yymmdd" & Seqd.Text) & "1"
Ce qui me donne un codebarre à 12 chiffres donc ok il s'imprime comme il faut
Si je supprime le & "1"
Je passe à 11 et du coup le code barre n'est plus valide puisque il faut un nombre paire de caractères.
je voudrais donc à la place du & "1" mettre le calcul du checksum
Mais même si tu veux tester plus facilement, telecharge la source dans mon poste précédent et teste simplement le fichier donné en exemple.
avec :
CodeBarre = "1234567890" 'ca fonctionne bien
CodeBarre = "123456789" 'ca ne marche plus
et moi je veux utiliser le "123456789" avec en 10eme caractére le calcul du checksum
Je n'y arrive pas mais c'est peut être aussi parce que je débute et donc je ne comprend pas tout.
le cancre
Messages postés292Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention27 novembre 2009 6 nov. 2006 à 17:13
voici ma fonction pour ean2/5
Public Function Code25(strCode As String)
Dim tmp(20) As String
Dim Bar1, Bar2, Bar3, Bar4
If Not IsNumeric(strCode) Then
MsgBox "Veuillez respecter la norme du code ean 2/5"
Exit Function
End If
Bar1 = Split("1,2,3,4,5,6,7,8,9,0", ",")
Bar2 = Split("3-1-1-1-3,1-3-1-1-3,3-3-1-1-1,1-1-3-1-3,3-1-3-1-1,1-3-3-1-1,1-1-1-3-3,3-1-1-3-1,1-3-1-3-1,1-1-3-3-1", ",")
sBar = "1111"
For i0 = 1 To Len(strCode)
For i1 = 0 To UBound(Bar1)
If Mid(strCode, i0, 1) = Bar1(i1) Then
tmp(i0 - 1) = Bar2(i1)
End If
Next i1
Next i0
i0 = 0
Do Until i0 = Len(strCode)
Bar3 = Split(tmp(i0), "-")
Bar4 = Split(tmp(i0 + 1), "-")
For i1 = 0 To 4
sBar = sBar & Bar3(i1) & Bar4(i1)
Next i1
i0 = i0 + 2
Loop
sBar = sBar & "311"
End Function
cs_yohann59
Messages postés12Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention15 janvier 2008 6 nov. 2006 à 17:18
Je ne comprend pas le 2 parmi 5 peut être codé sur autant de caractères que tu veux
la seule contrainte est qu'il faut un nombre de caractères paire dans le code barre
le cancre
Messages postés292Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention27 novembre 2009 6 nov. 2006 à 19:02
Re,
picturebox : pic
et une textbox
voici le code (t'as juste à faire un copier/coller)
Dim sBar As String, i0 As Integer, i1 As Integer
Private Function Code25(strCode As String)
Dim tmp(20) As String
Dim Bar1, Bar2, Bar3, Bar4
Bar1 = Split("1,2,3,4,5,6,7,8,9,0", ",")
Bar2 = Split("3-1-1-1-3,1-3-1-1-3,3-3-1-1-1,1-1-3-1-3,3-1-3-1-1,1-3-3-1-1,1-1-1-3-3,3-1-1-3-1,1-3-1-3-1,1-1-3-3-1", ",")
sBar = "1111"
For i0 = 1 To Len(strCode)
For i1 = 0 To UBound(Bar1)
If Mid(strCode, i0, 1) = Bar1(i1) Then
tmp(i0 - 1) = Bar2(i1)
End If
Next
Next
i0 = 0
Do Until i0 = Len(strCode)
Bar3 = Split(tmp(i0), "-")
Bar4 = Split(tmp(i0 + 1), "-")
For i1 = 0 To 4
sBar = sBar & Bar3(i1) & Bar4(i1)
Next
i0 = i0 + 2
Loop
sBar = sBar & "311"
Debug.Print Len(sBar)
End Function
Private Function Barcode(strCode As String, Pic As Object, barHeight As Single, StartX As Single, startY As Single)
Dim barWidth As Single, i0 As Integer, barStart As Single, barscale As Integer
barscale = 1
Dim iA
strCode = IIf(Len(strCode) Mod 2 > 0, strCode & "0", strCode): Code25 strCodePic.Picture Nothing: barStart StartX
For iA = 1 To Len(sBar)
barWidth = barWidth + Mid(sBar, iA, 1) * barscale + 1
Next iA
barscale = barscale + 1
For i0 = 1 To Len(sBar)
barWidth = Mid(sBar, i0, 1) * barscale
If i0 Mod 2 > 0 Then Pic.Line (barStart, startY)-Step(barWidth, barHeight), Pic.ForeColor, BF
barStart = barStart + IIf(i0 Mod 2 > 0, barWidth, barWidth * 1.3)
Next i0
Pic.FontSize = 16
Pic.CurrentX = 20
Pic.Print strCode
Pic.Picture = Pic.Image: Pic.Refresh
End Function
Private Sub Command1_Click()
Call Barcode(Text1.Text, Pic, 100, 20, 20)
End Sub