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

Access Discussion :

Générer un code alphanumérique sur access


Sujet :

Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Gabon

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2018
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Générer un code alphanumérique sur access
    Bonjour à tous! je suis nouveau ici, et j'ai besoin de votre aide. j'aimerais générer un code alphanumérique sur Access 2016, de type BA001. ce code doit s'incrémenter tout seul et apparaître sur un formulaire de saisie. j'aurais bien voulu simplifier avec le numéro auto, mais le bemol c'est que lorsqu'on supprime une saisie le numéro lui continu.

    cordialement

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    Bonjour,
    un exemple a été donné ici et, mis à part la partie formatage en hexadécimal, cela devrait convenir à ton besoin.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonjour

    Je te propose une fonction que j'avais utilisée il y a ...
    Elle permet d'incrémenter un numéro numériquement, alphabétiquement ou alpha-numériquement en fonction du CodeRech. Créer un simple champ Texte dans la table.
    Par contre, si en tête du numéro tu veux des lettres fixes, il ne faut pas les traiter. Dans ce cas, tu ajoutes dans la table un champ calculé dans lequel tu concatènes ces lettres avec le champ contenant le numéro incrémenté.
    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
    93
    94
    95
    96
    97
    98
    Function IncrementAlphaNum(NumActuel As String, CodeRech As String)
        'NumActuel : le récupérer dans la table avec un DMax sur le champ
        'CodeRech :
            'Pour chaque caractère, mettre 1 pour numérique, A pour alphabétique, Z pour alpha-numérique (chiffres avant lettres)
            'Exemple : "A111" pour 1er caractère alphabétque, numérique pour les 3 autres
            'En cas d'erreur, la fonction renvoie "Erreur" pour traitement (après mise au point, les MsgBox d'erreur peuvent être passées en commentaires)
     
        Dim NbC, PosC, Nb, Retenue, I As Integer
        Dim TypeRech, C  As String
        Retenue = 0
        Nb = 0
        NbC = Len(CodeRech)
        PosC = NbC
     
        If IsNull(NumActuel) Or NumActuel = "" Then
            For I = 1 To NbC
                TypeRech = Mid(CodeRech, I, 1)
                Select Case TypeRech
                    Case "1"
                        NumActuel = NumActuel & "0"
                    Case "A"
                        NumActuel = NumActuel & "A"
                    Case "Z"
                        NumActuel = NumActuel & "0"
                    Case Else
                        MsgBox "Le code n'est pas bon." & Chr(10) & "Il doit être exclusivement composé de 1, A ou Z.", vbCritical + vbOKOnly, "Code incompatible"
                        IncrementAlphaNum = "Erreur"
                        Exit Function
                End Select
            Next I
        End If
        If Len(NumActuel) <> NbC Then
            MsgBox "Le numéro actuel ne correspond pas au code.", vbCritical + vbOKOnly, "Incrémentation impossible"
            IncrementAlphaNum = "Erreur"
            Exit Function
        End If
        IncrementAlphaNum = NumActuel
     
    Caractère:
        Nb = Nb + 1
        C = Mid(NumActuel, PosC, 1)
        TypeRech = Mid(CodeRech, PosC, 1)
        Select Case TypeRech
            Case "1"
                If Asc(C) < 48 Or Asc(C) > 57 Then
                    MsgBox "Le numéro actuel ne correspond pas au code.", vbCritical + vbOKOnly, "Incrémentation impossible"
                    IncrementAlphaNum = "Erreur"
                    Exit Function
                End If
                If Asc(C) = 57 Then
                    C = Chr(48)
                    Retenue = 1
                Else
                    C = Chr(Asc(C) + 1)
                End If
            Case "A"
                If Asc(C) < 65 Or Asc(C) > 90 Then
                    MsgBox "Le numéro actuel ne correspond pas au code.", vbCritical + vbOKOnly, "Incrémentation impossible"
                    IncrementAlphaNum = "Erreur"
                    Exit Function
                End If
                If Asc(C) = 90 Then
                    C = Chr(65)
                    Retenue = 1
                Else
                    C = Chr(Asc(C) + 1)
                End If
            Case "Z"
                If Asc(C) < 48 Or Asc(C) > 90 Or (Asc(C) > 57 And Asc(C) < 65) Then
                    MsgBox "Le numéro actuel ne correspond pas au code.", vbCritical + vbOKOnly, "Incrémentation impossible"
                    IncrementAlphaNum = "Erreur"
                    Exit Function
                End If
                If Asc(C) = 57 Then
                    C = Chr(65)
                Else
                    If Asc(C) = 90 Then
                        C = Chr(48)
                        Retenue = 1
                    Else
                        C = Chr(Asc(C) + 1)
                    End If
                End If
        End Select
        IncrementAlphaNum = Left(IncrementAlphaNum, PosC - 1) & C & Right(IncrementAlphaNum, Len(IncrementAlphaNum) - PosC)
     
        If Retenue = 1 Then
            If Nb = NbC Then
                MsgBox "La série de numéros est complète.", vbCritical + vbOKOnly, "Incrémentation impossible"
                IncrementAlphaNum = "Erreur"
                Exit Function
            End If
            Retenue = 0
            PosC = PosC - 1
            GoTo Caractère
        End If
     
    End Function
    Titi95
    Un problème bien posé est à moitié résolu

  4. #4
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Gabon

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2018
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    merci j'ai vu la discussion, mais je ne me retrouve pas au niveau des noms des champs et tables

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Gabon

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2018
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    ok titi95, je vais voir ça

  6. #6
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonsoir

    je ne me retrouve pas au niveau des noms des champs et tables
    Comme je t'ai proposé une fonction, tu n'as rien à modifier à l'intérieur de son code.
    Il suffit de l'appeler par son nom et de renseigner ses 2 arguments. Exemple pour essayer avec une MsgBox qui affiche le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox IncrementAlphaNum("000","A00")
    Dans ton utilisation il suffira de remplacer l'argument NumActuel ("000" dans l'exemple) par la récupération du dernier numéro incrémenté attribué.
    Pour le récupérer dans une table utilises :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DMax("NomChamp", "NomTable")
    Ne pas oublier de lire les commentaires en début de la fonction.

    Titi95
    Un problème bien posé est à moitié résolu

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/05/2010, 04h22
  2. Code fermeture sur Access 2007
    Par Renardo dans le forum VBA Access
    Réponses: 5
    Dernier message: 16/07/2008, 13h46
  3. Réponses: 2
    Dernier message: 19/02/2008, 21h55
  4. Comment générer du code sur une feuille de calcul?
    Par mardona dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/05/2007, 16h20
  5. [javascript] générer un code de 6 caractère alphanumérique
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/09/2005, 17h03

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