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 :

Incrémenter un compteur alphanumérique [AC-2007]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 685
    Par défaut Incrémenter un compteur alphanumérique
    Bonjour,
    J'ai un champ texte dans une table CLIENT. (la table provient d'un import d'un fichier texte d'un autre logiciel)

    Le champ se nomme CODETARIF (3 caractères txt)

    Mon pb est que je dois le faire évoluer et je ne sais pas comment m'y prendre.

    Le code ressemble à ceci dans plusieurs fiches CLIENTS :
    100
    109
    1AB
    1FE
    1ZZ
    ...
    Bref le code est sur 3 caractères :
    le 1er toujours le chiffre 1 (ne changera jamais)
    le 2ème les chiffres de 0 à 9 puis les lettres de A à Z
    le 3ème les chiffres de 0 à 9 puis les lettres de A à Z

    Donc si dans une fiche client, je trouve :
    100 -- je dois obtenir --> 101
    109 -- je dois obtenir --> 110
    1AB -- je dois obtenir --> 1AC
    1FE -- je dois obtenir --> 1FF
    1ZZ -- je dois obtenir --> 100 (ici j'ai fait le tour !)

    Savez-vous comment je peux gérer un tel comptage ?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 122
    Par défaut
    Salutations,

    Petite fonction qui je l'espère répondra à ton besoin (J'ai joué sur la table ascii pour l'incrémentation) :

    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
    Function GetNextCode(code As String) As String
     
    Dim retenue As Integer
    Dim car2 As String
    Dim car3 As String
     
    retenue = 0
     
    If code = "1ZZ" Then
        GetNextCode = "100"
        Exit Function
    End If
     
    If Val(code) >= 100 And Val(code) <= 199 Then
        GetNextCode = CStr(Val(code) + 1)
        Exit Function
    Else
        If Asc(Mid(code, 3, 1)) = 57 Then
            car3 = Chr(65)
        ElseIf Asc(Mid(code, 3, 1)) = 90 Then
            car3 = Chr(48)
            retenue = 1
        Else
            car3 = Chr(Asc(Mid(code, 3, 1)) + 1)
        End If
     
        If retenue = 1 Then
            If Asc(Mid(code, 2, 1)) = 57 Then
                car2 = Chr(65)
            Else
                car2 = Chr(Asc(Mid(code, 2, 1)) + 1)
            End If
        Else
            car2 = Mid(code, 2, 1)
        End If
    End If
     
    GetNextCode = "1" & car2 & car3
     
    End Function
    Cette fonction suit l'incrémentation suivante :

    - De 100 à 199
    - De 1A0 (juste après 199) à 1AZ
    - De 1B0 (juste après 1AZ) à 1BZ
    - ....jusqu'à 1ZZ

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 685
    Par défaut
    Merci je vais tester ceci ce soir.

    En attendant pour ceux qui liraient ce post un jour. Dans la soluce de Manhexter, voici l'explication de fonctions que je ne connaissais pas
    (si cela peut aider) :

    the Val function accepts a string as input and returns the numbers found in that string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Val("10 Main Street")  	'would return 10
    Val("34 10 Main Street") 	'would return 3410
    Val("  34 10 Main Street") 	'would return 3410
    Val("  34 - 10 Main Street") 	'would return 34
    Val("075") 	'would return 75

    the CStr function converts a value to a string.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim LValue As String
    LValue = CStr(8)
    The LValue variable would now contain the string value of "8"

    La fonction ASC
    Permet de récupérer la valeur d'un caractère dans un jeu de caractères.
    VB6-VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox Asc("a") 'Renvoie 97
    MsgBox Asc("A") 'renvoie 65
    La fonction CHR
    Permet de récupérer un caractère en fonction de sa valeur dans un jeu de caractères.
    VB6-VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox Chr(97) 'renvoie a
    MsgBox Chr(65) 'renvoie A

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 122
    Par défaut
    Oui, désolé je n'avais pas vraiment le temps de commenter le code car j'ai fait ça assez rapidement pendant le boulot . Si mon chef savait ça

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Par défaut Incrémenter un compteur alphabétique
    J'ai besoin d'incrémenter un compteur alphabétique de AAA à ZZZ, comment faire?

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 24/01/2008, 09h10
  2. Incrémenter un compteur oracle avc VB .NET
    Par requinham dans le forum Oracle
    Réponses: 4
    Dernier message: 11/06/2007, 17h20
  3. compteur alphanumérique à choix
    Par chris670 dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 22/01/2006, 21h59
  4. Incrémenter un compteur
    Par Didi17 dans le forum Access
    Réponses: 8
    Dernier message: 19/10/2005, 11h24

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