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 :

fonction ean passage d'argument


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Par défaut fonction ean passage d'argument
    Bonjour,

    J'utilise access 2002 sp3
    J'ai un champs calculé codebarre: "1" & Format([Date];"ddmmyy") & Format([N° classi];"00000")

    Je veux l'imprimer en codebarre à l'aide la fonction VBA ean13$
    en passant comme argument codebarre mais je n'arrive pas à trouver la bonne fonction de conversion. J'ai essayé CChaine STR ect.. sans résultat

    Merci d'avance

    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
    Public Function EAN13$(chaine$)
      'Cette fonction est régie par la Licence Générale Publique Amoindrie GNU (GNU LGPL)
      'This function is governed by the GNU Lesser General Public License (GNU LGPL)
      'V 1.1.1
      'Paramètres : une chaine de 12 chiffres
      'Parameters : a 12 digits length string
      'Retour : * une chaine qui, affichée avec la police EAN13.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 EAN13.TTF font
      '         * an empty string if the supplied parameter is no good
      Dim i%, checksum%, first%, codebarre$, tableA As Boolean
    "  EAN13$ = """""
      'Vérifier qu'il y a 12 caractères
      'Check for 12 characters
      If Len(chaine$) = 12 Then
        'Et que ce sont bien des chiffres
        'And they are really digits
        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
          'Calcul de la clé de contrôle
          'Calculation of the checksum
          For i% = 12 To 1 Step -2
            checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
          Next
          checksum% = checksum% * 3
          For i% = 11 To 1 Step -2
            checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
          Next
          chaine$ = chaine$ & (10 - checksum% Mod 10) Mod 10
          'Le premier chiffre est pris tel quel, le deuxième vient de la table A
          'The first digit is taken just as it is, the second one come from 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 / Add middle separator"
          For i% = 8 To 13
            codebarre$ = codebarre$ & Chr$(97 + Val(Mid$(chaine$, i%, 1)))
          Next
    "      CodeBarre$ = CodeBarre$ & ""+""   'Ajout de la marque de fin / Add end mark"
          EAN13$ = codebarre$
        End If
      End If
    End Function

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Bonjour,

    Comme te l'expliquait mout1234 dans ta précédente discussion, il faut être précis et complet pour nous "aider" à t'aider.
    Sinon tu nous imposes le "jeu des devinettes" et, à la longue, c'est usant. re-

    Citation Envoyé par alex5580 Voir le message
    J'ai un champs calculé codebarre: "1" & Format([Date];"ddmmyy") & Format([N° classi];"00000")

    Je veux l'imprimer en codebarre à l'aide la fonction VBA ean13$
    en passant comme argument codebarre mais je n'arrive pas à trouver la bonne fonction de conversion. J'ai essayé CChaine STR ect.. sans résultat
    Apparemment, ça se passe dans un état... pour imprimer le code barre.
    Tu confirmes ?

    Ensuite, cet état est basé sur une requête qui comporte un champ calculé nommé codebarre ?
    Tu confirmes toujours ?

    Si c'est bien ça, je ne comprends pas pourquoi tu parles de fonction de conversion... il y a sûrement une raison, mais laquelle ?
    Tu pourrais nous dire ?

    Je crois que le plus simple est de créer un contrôle calculé:
    (1) créer un contrôle zone de texte dans l'état,
    (2) afficher la fenêtre des propriétés de ce contrôle et sélectionner l'onglet Données,
    (3) renseigner la propriété Source contrôle avec l'expression à évaluer pour obtenir le code barre EAN.
    L'expression devrait être ceci:
    ou encore (le caractère $ n'est pas important)
    Voilà tout.
    Tiens nous au courant et bon courage.
    _

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Par défaut
    Bonjour, il s'agit bien d'un état voici l'image en mode création [IMG]ftp://ftp.onera.fr/incoming/xtmp/vj/etatcreation.jpg[/IMG]

    lorsque je passe en mode donné j'obtiens

    [IMG]ftp://ftp.onera.fr/incoming/xtmp/vj/ean13parametre.jpg[/IMG]

    je rentre un code à 12 choffre pour voir

    et j'ai
    [IMG]ftp://ftp.onera.fr/incoming/xtmp/vj/etatean13.jpg[/IMG]

    je ne comprends pas pourquoi j'ai la fenetre parametre qui apparait
    Pouvez-vous m'expliquer pourquoi

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    Bonjour,
    Citation Envoyé par alex5580 Voir le message
    je ne comprends pas pourquoi j'ai la fenetre parametre qui apparait
    Pouvez-vous m'expliquer pourquoi
    Access tente d'évaluer l'expression =EAN([codebarre]).

    Que représente le symbole EAN ???
    Toi tu le sais, mais pas Access. Donc Access doit rechercher ce symbole parmi:
    * les noms de procédures Function utilisateur,
    * les fonctions intégrées d'Access,
    * les fonctions VBA,
    * les contrôles de l'état,
    * les champs de la source de données...

    Si ce symbole est introuvable, alors l'ultime recours pour Access est de le considérer comme un paramètre utilisateur et d'ouvrir une fenêtre de saisie.
    C'est ce que tu nous as signalé.

    Bon, tu l'as compris, Access ne "trouve" pas la fonction EAN().
    A toi de vérifier si cette fonction est correctement définie, et dans quel module de code.

    Ta fonction devrait être présente dans un module de code de ton application.
    Au choix:
    * le module de code de l'état,
    * un module de code indépendant, mais dans ce cas la fonction doit être de portée Public.
    _

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 6
    Par défaut
    Bonjour,

    ma fonction est dans un module voir image
    [IMG]ftp://ftp.onera.fr/incoming/xtmp/vj/ean13.jpg[/IMG]
    [IMG]ftp://ftp.onera.fr/incoming/xtmp/vj/moduleean13.jpg[/IMG]

    Peut-être je ne l'ai pas déclré comme il se doit?

    merci d'avance

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Par défaut
    La déclaration est OK. C'est l'utilisation qui n'est pas correcte...
    Citation Envoyé par alex5580 Voir le message
    ma fonction est dans un module voir image
    [IMG]ftp://ftp.onera.fr/incoming/xtmp/vj/ean13.jpg[/IMG]
    [IMG]ftp://ftp.onera.fr/incoming/xtmp/vj/moduleean13.jpg[/IMG]

    Peut-être je ne l'ai pas déclré comme il se doit?
    Tu as bien fait d'envoyer les images, car ce qui saute au nez c'est que dans le module de code ean13, la fonction s'appelle EAN13().

    Access connaît EAN13(), mais il ne connaît pas EAN() ... sans le 13 ! Ok !?

    D'ailleurs, dans mon premier message je vois que c'était déjà avec le 13:
    Une fin de semaine difficile peut-être ?
    L'important c'est d'avoir trouvé.

    Bon courage pour la suite.
    _

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

Discussions similaires

  1. Assigner une fonction avec passage d'arguments
    Par r0seBa dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/03/2010, 10h54
  2. Réponses: 5
    Dernier message: 23/10/2007, 14h26
  3. passage des arguments aux fonctions
    Par onejock dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/09/2007, 15h00
  4. passage d'argument dans une fonction
    Par wadcyr8_197 dans le forum C++
    Réponses: 5
    Dernier message: 20/07/2007, 09h41
  5. [JAVASCRIPT] passage d'argument à une fonction
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/06/2005, 18h17

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