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 :

Validation d'un numéro de carte bancaire [AC-2000]


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Validation d'un numéro de carte bancaire
    Bonjour,

    Je suis nouveau sur ce forum et c'est mon premier message.

    Je reçois des commandes par courrier avec paiement pour certaines par Carte Bancaire, Visa ou MasterCard.

    Je voudrais pouvoir vérifier la validité du numéro de carte avant de soumettre le numéro au serveur bancaire pour traitement.

    Il s'agit d'un algorithme de Luhn. On trouve facilement la formule sur le net, mais de là à la mettre en code VBA dans une procédure événementielle de Access... Dur, dur... (en tout cas pour moi !)

    Je me demandais si quelqu'un a déjà programmé ce type de vérification et n'aurait pas le bout de code dans ses tiroirs. (Pas trouvé dans la FAQ, ni dans les sources.)

    Merci d'avance si vous pouvez m'aider.

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Essaie cette fonction :
    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
    Function ValiderCB(varNumCB As Variant) As Boolean
    Dim strNumCB As String, strCar As String
    Dim i As Integer, intLongueur As Integer, intRang As Integer
    Dim intAjoute As Integer ' valeur intermédiare
    Dim intSomme As Integer  ' Somme selon algorithme de Luhn
     
    ' Par défaut la fonction renvoie Faux
    ValiderCB = False
    ' Quitter si l'argument est Null
    If IsNull(varNumCB) Then Exit Function
     
    ' Force le type de la variante en type String
    varNumCB = CStr(varNumCB)
    ' Nettoie varNumCB
    For i = 1 To Len(varNumCB)
        strCar = Mid(varNumCB, i, 1)
        If strCar Like "[0-9]" Then strNumCB = strNumCB & strCar
    Next
    intLongueur = Len(strNumCB)
    ' Quitter s'il n'y a aucun chiffre 0 à 9
    If intLongueur = 0 Then Exit Function
     
    ' Pour chaque caractère ("0" à "9") de la chaîne
    For i = 1 To intLongueur
        strCar = Mid(strNumCB, i, 1)
        '  Numéro de rang du caractère
        intRang = intLongueur + 1 - i
        ' Si rang est impair
        If (intRang Mod 2) = 1 Then
            ' On ajoute à la somme la valeur du chiffre (0 à 9)
            intSomme = intSomme + CInt(strCar)
        ' Sinon (rang est pair)
        Else
            ' On multiplie la valeur du chiffre (0 à 9) par 2
            intAjoute = CInt(strCar) * 2
            ' Si le résultat est à deux chiffres (>9) on fait la somme
            ' des deux chiffres de ce résultat et on l'ajoute à la somme.
            ' (Ça revient à retirer 10 et ajouter 1 puisqu'on ne
            '  dépasse jamais 18)
            If intAjoute > 9 Then intAjoute = intAjoute - 9
            intSomme = intSomme + intAjoute
        End If
    Next
    ' Si la somme est multiple de 10 alors renvoyer Vrai
    If (intSomme Mod 10) = 0 Then ValiderCB = True
    End Function
    La fonction renvoie True (Numéro valide) ou False (non valide).
    Elle ne fait que vérifier que le numéro est valide selon l'algorithme de Luhn.

    Par exemple si je veux vérifier ma zone de texte txtNumCB.
    Dans l'événement "Sur sortie"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub txtNumCB_Exit(Cancel As Integer)
    ' Si le numéro n'est pas validé ...
    If ValiderCB(Me.txtNumCB) = False Then
       ' le signifier à l'utilisateur en lui proposant de
       ' recommencer ou d'ignorer l'erreur
       If MsgBox("Le numéro de carte bancaire n'est pas valide", _
                 vbRetryCancel) = vbRetry Then
          ' si l'utilisateur a choisi "recommencer"
          Cancel = True
       End If
    End If
    End Sub
    A+

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup. Je vais essayer.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Génial ! Ca marche. Merci !

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

Discussions similaires

  1. script de vérification numéro carte bancaire
    Par smahdi dans le forum Programmation système
    Réponses: 1
    Dernier message: 21/05/2011, 20h34
  2. Verification d'un numéro de carte bancaire
    Par hpalpha dans le forum Contribuez
    Réponses: 0
    Dernier message: 13/02/2011, 17h45
  3. Numéro série carte mère
    Par guen dans le forum Access
    Réponses: 2
    Dernier message: 06/02/2007, 22h47
  4. [Sécurité] Sécuriser l'envoi d'un numéro de carte
    Par Alexino2 dans le forum Langage
    Réponses: 23
    Dernier message: 02/07/2006, 22h13
  5. Réponses: 2
    Dernier message: 18/05/2006, 08h25

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