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

  1. #1
    Nouveau Candidat au 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
    Points : 0
    Points
    0
    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
    Expert confirmé
    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
    Points : 4 005
    Points
    4 005
    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
    Nouveau Candidat au 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
    Points : 0
    Points
    0
    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 expérimenté
    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
    Points : 1 745
    Points
    1 745
    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
    Nouveau Candidat au 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
    Points : 0
    Points
    0
    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 expérimenté
    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
    Points : 1 745
    Points
    1 745
    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...

  7. #7
    Nouveau Candidat au 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
    Points : 0
    Points
    0
    Par défaut re
    Bonjour,

    Je comprend ce que tu me dit mais le problème je n'arrive pas a savoir ou le placer pourrait tu me montrer un exemple avec mon code.
    1 case qui contient le code
    1 bouton pour vérifier
    2 Réponse : code juste / code faut
    et a côté un endroit pour dire a qu'elle compagnie appartient le code.

    Merci

  8. #8
    Expert confirmé
    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
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Si tu as compris l intervention d ebastien qui t a deja largement aiguillé sur ton problème ( ) so "going to learn the basics" ...... il y a des cours complet ici :
    http://plasserre.developpez.com/cours/vb-net/

    PS : tu peux fermer ton topic.

    @+

  9. #9
    Membre expérimenté
    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
    Points : 1 745
    Points
    1 745
    Par défaut
    Merci Wallace1 pour ton soutien car là, à part envoyer un zip avec le projet complet (et une facture ) je ne vois pas ce qu'on peut faire.

  10. #10
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    À noter à toutes fins utiles que la bibliothèque Dvp.NET possède déjà une classe Luhn (documentation) toute faite qu'il ne reste qu'à intégrer à son projet au besoin
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

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