XL 2010 création automatique de code barre à 8 ou 13 valeurs

306255

XLDnaute Occasionnel
Bonjour à tous,

Est-il possible de créer dans la colonne M des codes-barres de 8 ou 13 chiffres suivant le cas automatiquement en fonction de la colonne U

Merci d’avance
 

Pièces jointes

  • TEST TABAC.xlsm
    218.7 KB · Affichages: 120

Patrice33740

XLDnaute Impliqué
Bonjour,

Testes la longueur du code avec =SI(NBCAR(... pour exécuter ean13 () ou ean8().
Essaies avec ces codes pour les 2 fonctions :
VB:
Public Function ean8$(code As String)
' Calcul code barre EAN8.
' Arguments : Code                [in]  chaine de 8 chiffres à convertir
' Retour    : String              Code barre EAN8 à afficher avec la police Ean13.ttf (vide si code incorrect)
' 31/01/18    Patrice33740
Dim i%, a$
  a = code
  If Len(a) <> 8 Then Exit Function
  For i = 1 To 8
    If InStr(1, "0123456789", Mid(a, i, 1)) = 0 Then Exit Function
  Next
  For i = 1 To 4
    Mid(a, i, 1) = Chr(Val(Mid(a, i, 1)) + 65)
  Next i
  For i = 5 To 8
    Mid(a, i, 1) = Chr(Val(Mid(a, i, 1)) + 97)
  Next i
  ean8 = ":" & Mid(a, 1, 4) & "*" & Mid(a, 5, 4) & "+"
End Function

Public Function ean13$(code As String)
' Calcul code barre EAN13.
' 31/01/18    Patrice33740
Const t$ = "AAAAAA AAKAKK AAKKAK AAKKKA AKAAKK AKKAAK AKKKAA AKAKAK AKAKKK AKKAKA"
Dim i%, s%, a$, d$
  a = code
  If Len(a) <> 13 Then Exit Function
  For i = 1 To 13
    If InStr(1, "0123456789", Mid(a, i, 1)) = 0 Then Exit Function
  Next
  d = " " & Split(t, " ")(Left(a, 1))
  s = Val(Left(a, 1))
  For i = 2 To 7
    s = s + Val(Mid(a, i, 1)) + Val(Mid(a, i, 1)) * 2 * ((i + 1) Mod 2)
    Mid(a, i, 1) = Chr(Val(Mid(a, i, 1)) + Asc(Mid(d, i, 1)))
  Next i
  For i = 8 To 12
    s = s + Val(Mid(a, i, 1)) + Val(Mid(a, i, 1)) * 2 * ((i + 1) Mod 2)
    Mid(a, i, 1) = Chr(Val(Mid(a, i, 1)) + 97)
  Next i
  s = 97 + ((300 - s) Mod 10)
  If Chr(s) <> Chr(Val(Mid(a, 13, 1)) + 97) Then Exit Function
  ean13 = Mid(a, 1, 7) & "*" & Mid(a, 8, 5) & Chr(s) & "+"
End Function
 
Dernière édition:

gosselien

XLDnaute Barbatruc
Bonjour ,
nbcar() et len() sont la même fonction en excel et en vba

If Len(a) <> 8 Then Exit Function veut dire:

si la longueur de "a" qui vient lui même de "code" ("code" qui dans la 1er ligne) est mesurée et doit être absolument d'une longueur de 8 caractères.

Public Function ean8$(code As String) <---- ici code qui devient a dans le if len(a) dans la ligne: "a = code"

Donc "code" arrive et est placé dans la variable "a" que l'on mesure en simple :)

P.
 

Patrice33740

XLDnaute Impliqué
Par exemple avec une procédure commune.

En M11 de ton fichier tu mets la formule :
=ean8_ean13(U11)

Et dans le module, tu ajoutes :
VB:
Public Function ean8_ean13(cel As Range) As String
'Calcule un code EAN8 ou EAN 13 selon la longueur de la valeur transmise
  If Len(CStr(cel.Value)) = 13 Then
  ean8_ean13 = ean13(CStr(cel.Value))
  ElseIf Len(CStr(cel.Value)) = 8 Then
  ean8_ean13 = ean8(CStr(cel.Value))
  End If
End Function
 

Pièces jointes

  • TEST TABAC.xlsm
    244.1 KB · Affichages: 82

306255

XLDnaute Occasionnel
Par exemple avec une procédure commune.

En M11 de ton fichier tu mets la formule :
=ean8_ean13(U11)

Et dans le module, tu ajoutes :
VB:
Public Function ean8_ean13(cel As Range) As String
'Calcule un code EAN8 ou EAN 13 selon la longueur de la valeur transmise
  If Len(CStr(cel.Value)) = 13 Then
  ean8_ean13 = ean13(CStr(cel.Value))
  ElseIf Len(CStr(cel.Value)) = 8 Then
  ean8_ean13 = ean8(CStr(cel.Value))
  End If
End Function

Bonjour Patrice je rencontre un souci pour des code barre commençant par 8, il s’avère illisible.


upload_2018-2-16_12-51-18.png


Merci pour votre aide
 

Patrice33740

XLDnaute Impliqué
Bonjour,

Essaies : 8719214552442, avec 13 chiffres ça fonctionne bien

Il y a 14 chiffres dans ton code, il ne s'agit donc pas d'un code barre EAN13

L'EAN14 n'est pas un code à barres destiné à identifier un produit,
il sert généralement à identifier un sur-emballage,
il ne doit pas figurer sur le produit lui-même !!!
 

306255

XLDnaute Occasionnel

Pièces jointes

  • 5 -TABAC MAJ 01-02.xlsm
    233.1 KB · Affichages: 60

Patrice33740

XLDnaute Impliqué
NON , ce se sont pas des codes EAN 13 !!!
Avec 14 Chiffres, ça aurait pu être de l'EAN14 code barré au format ITF14 mais, au vu tes images, ce n'est pas le cas.
Je n'ai rien trouvé qui ressemble à ce type de code barre à 14 chiffres, il s'agit peut-être d'un code spécifique d'un fabricant ou d'un fournisseur.
 

Discussions similaires

Statistiques des forums

Discussions
312 152
Messages
2 085 797
Membres
102 979
dernier inscrit
brossadan