IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Code 128 avec Code Basic


Sujet :

VBA Access

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 887
    Par défaut Code 128 avec Code Basic
    Bonjour à tous,
    Je dois créer un état sous Access 2010 avec un champ code barre (code 128), un ancien collègue avait écrit ou récupérer sur le net une fonction basic qui fonctionne sur un fichier excel dont voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
     
    Public Function Code128$(chaine$)
      'V 2.0.0
      'Paramètres : une chaine
      'Parameters : a string
      'Retour : * une chaine qui, affichée avec la police CODE128.TTF, donne le code barre
      '         * une chaine vide si paramètre fourni incorrect
      'Return : * a string which give the bar code when it is dispayed with CODE128.TTF font
      '         * an empty string if the supplied parameter is no good
      Dim i%, checksum&, mini%, dummy%, tableB As Boolean
      Code128$ = ""
      If Len(chaine$) > 0 Then
      'Vérifier si caractères valides
      'Check for valid characters
        For i% = 1 To Len(chaine$)
          Select Case Asc(Mid$(chaine$, i%, 1))
          Case 32 To 126, 203
          Case Else
            i% = 0
            Exit For
          End Select
        Next
        'Calculer la chaine de code en optimisant l'usage des tables B et C
        'Calculation of the code string with optimized use of tables B and C
        Code128$ = ""
        tableB = True
        If i% > 0 Then
          i% = 1 'i% devient l'index sur la chaine / i% become the string index
          Do While i% <= Len(chaine$)
            If tableB Then
              'Voir si intéressant de passer en table C / See if interesting to switch to table C
              'Oui pour 4 chiffres au début ou à la fin, sinon pour 6 chiffres / yes for 4 digits at start or end, else if 6 digits
              mini% = IIf(i% = 1 Or i% + 3 = Len(chaine$), 4, 6)
              GoSub testnum
              If mini% < 0 Then 'Choix table C / Choice of table C
                If i% = 1 Then 'Débuter sur table C / Starting with table C
                  Code128$ = Chr$(210)
                Else 'Commuter sur table C / Switch to table C
                  Code128$ = Code128$ & Chr$(204)
                End If
                tableB = False
              Else
                If i% = 1 Then Code128$ = Chr$(209) 'Débuter sur table B / Starting with table B
              End If
            End If
            If Not tableB Then
              'On est sur la table C, essayer de traiter 2 chiffres / We are on table C, try to process 2 digits
              mini% = 2
              GoSub testnum
              If mini% < 0 Then 'OK pour 2 chiffres, les traiter / OK for 2 digits, process it
                dummy% = Val(Mid$(chaine$, i%, 2))
                dummy% = IIf(dummy% < 95, dummy% + 32, dummy% + 105)
                Code128$ = Code128$ & Chr$(dummy%)
                i% = i% + 2
              Else 'On n'a pas 2 chiffres, repasser en table B / We haven't 2 digits, switch to table B
                Code128$ = Code128$ & Chr$(205)
                tableB = True
              End If
            End If
            If tableB Then
              'Traiter 1 caractère en table B / Process 1 digit with table B
              Code128$ = Code128$ & Mid$(chaine$, i%, 1)
              i% = i% + 1
            End If
          Loop
          'Calcul de la clé de contrôle / Calculation of the checksum
          For i% = 1 To Len(Code128$)
            dummy% = Asc(Mid$(Code128$, i%, 1))
            dummy% = IIf(dummy% < 127, dummy% - 32, dummy% - 105)
            If i% = 1 Then checksum& = dummy%
            checksum& = (checksum& + (i% - 1) * dummy%) Mod 103
          Next
          'Calcul du code ASCII de la clé / Calculation of the checksum ASCII code
          checksum& = IIf(checksum& < 95, checksum& + 32, checksum& + 105)
          'Ajout de la clé et du STOP / Add the checksum and the STOP
          Code128$ = Code128$ & Chr$(checksum&) & Chr$(211)
        End If
      End If
      Exit Function
    testnum:
      'si les mini% caractères à partir de i% sont numériques, alors mini%=0
      'if the mini% characters from i% are numeric, then mini%=0
      mini% = mini% - 1
      If i% + mini% <= Len(chaine$) Then
        Do While mini% >= 0
          If Asc(Mid$(chaine$, i% + mini%, 1)) < 48 Or Asc(Mid$(chaine$, i% + mini%, 1)) > 57 Then Exit Do
          mini% = mini% - 1
        Loop
      End If
    Return
    End Function
    Cette fonction fonctionne sous Excel 2010.
    J'ai créer une zone de texte sur un état avec le format Code 128, ma question est comment utiliser cette fonction sous Access 2010 ? Ou la placer ? Sur quel évènement ?
    Si quelqu'un a une idée merci

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 370
    Par défaut
    Il suffit de mettre dans le formulaire en 'Source' du champ texte la formule: =code128$(NomChamp)
    Cordialement.

  3. #3
    Membre averti
    Homme Profil pro
    Hobby
    Inscrit en
    Mars 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Mars 2014
    Messages : 20
    Par défaut
    Un code barre est une police de caractères tout comme Arial ou autre.
    Il suffit de régler la police de caractères dans le champs concerné de l'état

    Il faut, bien sûr, que cette police soit installée sur le PC concerné

    Bien à toi

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 370
    Par défaut
    Oui, la fonction Code128() ajoute des valeurs supplémentaires et début et fin du texte, lesquels ne me semblent pas respecter la convention de codification.

    Si j'en crois l'exemple donné sur cette page, biz devrait être converti en ÌbizgÎ, ce qui n'est pas le cas avec la fonction Code128() présentée.

    Nom : CodesBarres.jpg
Affichages : 1709
Taille : 60,0 Ko

    Bonne continuation.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 887
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Il suffit de mettre dans le formulaire en 'Source' du champ texte la formule: =code128$(NomChamp)
    Cordialement.
    ******************************************
    Après consultation de mon compte je m'apercois de votre réponse merci donc avec du retard ; c'est ce que j'avais fais.
    Merci encore

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 887
    Par défaut
    Citation Envoyé par Eddie827 Voir le message
    Un code barre est une police de caractères tout comme Arial ou autre.
    Il suffit de régler la police de caractères dans le champs concerné de l'état

    Il faut, bien sûr, que cette police soit installée sur le PC concerné

    Bien à toi
    ******************************************
    Après consultation de mon compte je m'apercois de votre réponse merci donc avec du retard ; c'est ce que j'avais fais.
    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Générer un code-barres 128 avec la police intégrée à Windows Xp
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 19/01/2018, 17h46
  2. Création d'une librairi c++ contenant du code c avec code bloc
    Par lyhleandrho dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 29/02/2012, 13h02
  3. codes pour developper un lecteur mp3 avec visual basic 6.0
    Par nap91 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 23/08/2011, 15h13
  4. Réponses: 2
    Dernier message: 20/02/2011, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo