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

VB.NET Discussion :

Formule de Luhn


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Par défaut Formule de Luhn
    Bonjour,

    Je souhaiterai intégré la Formule de Luhn dans un logiciel, j'ai chercher sur le forum mais les codes ont des érreurs.

    Quelqu'un pourrait me le faire dans un logiciel avec un textbox pour inséré le numéro de carte et un autre endroit pour nous dire si elle est valide ou pas.


    Merci

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    bonjour,

    Je t invite vivement à lire la charte de la communauté !
    Nous serons heureux de t apporter notre aide dès lors que tu nous auras montré ou se situe le réel problème.

    a+

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Par défaut re
    Bonjour,

    Le problème : Je n'arrive pas a intégré la formule de luhn dans un code pour visual basic 2013 avec un form ou un text box nous permet de marquer le numéro de carte.

    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 ValidCard(ByVal CardNumber As String) As Boolean
     
    Dim intCount As Integer
    Dim intValue As Integer
    Dim intArr() As Integer
    Dim intStart As Integer
    Dim intArrValue As Integer
     
        ValidCard = False
     
        If Not IsNumeric(CardNumber) Then Exit Function
     
        If Left(CardNumber, 4) = 2131 Or Left(CardNumber, 4) _
           = 1800 Then
            'JCB
            If Len(CardNumber) <> 15 Then Exit Function
        ElseIf Left(CardNumber, 4) = 2149 Or _
              Left(CardNumber, 4) = 2014 Then
            'enroute
            If Len(CardNumber) = 15 Then
                ValidCard = True
            End If
            Exit Function
        ElseIf Left(CardNumber, 4) = 6011 Then
            'discover
            If Len(CardNumber) <> 16 Then Exit Function
        ElseIf (Left(CardNumber, 3) >= 300 And _
            Left(CardNumber, 3) <= 305) Or _
            Left(CardNumber, 2) = 36 Or Left(CardNumber, 2) = 38 Then
            'diners club
            If Len(CardNumber) <> 14 Then Exit Function
        ElseIf Left(CardNumber, 2) = 34 Or _
              Left(CardNumber, 2) = 37 Then
            'amex
            If Len(CardNumber) <> 15 Then Exit Function
        ElseIf Left(CardNumber, 2) >= 51 And _
               Left(CardNumber, 2) <= 55 Then
            'mastercard
            If Len(CardNumber) <> 16 Then Exit Function
        ElseIf Left(CardNumber, 1) = 4 Then
            'visa
            If Not (Len(CardNumber) = 13 Or Len(CardNumber) = 16) _
                Then Exit Function
        ElseIf Left(CardNumber, 1) = 3 Then
            'jcb (2)
            If Len(CardNumber) <> 16 Then Exit Function
        Else
            'unknown card.....
            Exit Function
        End If
        ReDim intArr(Len(CardNumber))
        For intCount = Len(CardNumber) - 1 To 1 Step -2
            intValue = Mid(CardNumber, intCount, 1) * 2
            intArr(intCount) = intValue
        Next intCount
     
        intValue = 0
     
        If Len(CardNumber) Mod 2 = 0 Then
            intStart = 2
        Else
            intStart = 1
        End If
     
        For intCount = intStart To Len(CardNumber) Step 2
            intValue = intValue + Mid(CardNumber, intCount, 1)
            intArrValue = intArr(intCount - 1)
            If intArrValue < 10 Then
                intValue = intValue + intArrValue
            Else
                intValue = intValue + Left(intArrValue, 1) + _
                  Right(intArrValue, 1)
            End If
        Next intCount
     
        If intValue Mod 10 <> 0 Then
            Exit Function
        Else
            ValidCard = True
        End If
     
    End Function

    Merci de m'aider a l'intégré dans un form.

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,

    Je ne comprends pas bien ton problème. Ton algorithme est certes bien plus complexe qu'il ne devrait et ressemble à du VB6 mais il a l'air de fonctionner...
    En recherchant l'algo de Luhn sur le net, tu trouves plein de code (les tests concernant le type de carte est une autre histoire). En vb.net, il tient sur une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function ValidLuhn(value As String)
            Return value.Select(Function(c, i) (AscW(c) - 48) << ((value.Length - i - 1) And 1)).Sum(Function(n) If(n > 9, n - 9, n)) Mod 10 = 0
        End Function
    Si tu veux du code un peu plus lisible, sur wikipedia on trouve ça (Il a fallu corrigé un ou deux bug et le transformer en vb.net) :
    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
    Private Function checkLuhn(purportedCC As String) As Boolean
            Dim sum As Integer = 0
            Dim nDigits As Integer = purportedCC.Length()
            Dim parity As Integer = nDigits And 1
            Dim digit As Integer
            For i As Integer = nDigits - 1 To 0 Step -1
                Integer.TryParse(purportedCC(i), digit)
                If (i And 1) = parity Then
                    digit = digit * 2
                    If digit > 9 Then
                        digit = digit - 9
                    End If
                End If
                sum = sum + digit
            Next
            Return (sum Mod 10) = 0
        End Function
    Je te conseille toutefois de séparer le test concernant le type de carte et la fonction retournant sa validité par l'algo le Luhn.
    Au dela de ça, il ne te reste qu'à faire une form et d'intégrer ce code. Si le problème est là, je te conseille de lire le cours qui fait référence sur ce forum

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Par défaut re
    Bonjour et merci a toi

    Je suis sur visual basic 2013 et je voudrais intégré cette algorithme dans un logiciel ( windows forms ) peux tu me le mettre car je débute et je comprend pas comment faire.
    Je pense qu'il faut un textbox met pour le reste je sais pas.
    La fomule que j'ai mis en haut pour le type de carte je voudrais qu'elle y soit intégré s'il te plait



    Merci

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    C'est pourtant assez trivial. Personne ici ne le fera pour toi.
    Tu crées un nouveau projet Windows Form,
    Dans le code de la Form, tu copies-colle ta ou tes fonctions,
    Tu ajoutes une textbox que tu nommes par exemple txtCarteNum,
    Tu ajoutes un bouton et tu double-cliques dessus et là tu appelles ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     If Not checkLuhn(txtCarteNum.Text) Then
      MessageBox.Show("numéro de carte non valide")
    End If
    Maintenant, si tu veux te lancer dans le développement d'applications, il faut quand même que tu apprennes les bases et ça, c'est le début du commencement de la base...

Discussions similaires

  1. Vérifier un numéro SIRET (la formule de Luhn)
    Par mnitu dans le forum Contribuez
    Réponses: 0
    Dernier message: 09/12/2011, 16h59
  2. [Crystal] Formules ...
    Par Antichoc dans le forum Formules
    Réponses: 3
    Dernier message: 25/11/2003, 10h52
  3. évaluateur de formule mathématique
    Par lyrau dans le forum Générateurs de compilateur
    Réponses: 5
    Dernier message: 28/03/2003, 22h50
  4. [Formule] Lever et coucher du soleil
    Par psl dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/10/2002, 16h37
  5. [reseaux] Comment creer un compte user à partir d'un formul avec perl
    Par oulai_evado dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 01/10/2002, 19h54

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