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 :

Vérification de la validité d'un N° de compte bancaire: dépassement de capacité


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 62

    Informations forums :
    Inscription : Mai 2006
    Messages : 45
    Points : 45
    Points
    45
    Par défaut Vérification de la validité d'un N° de compte bancaire: dépassement de capacité
    slt,
    Vérification de la validité d'un n° de compte avant encodage :
    Isoler les 10 premiers chiffres du n° de compte soit X
    calculer result = X Mod 97
    result doit être égal aux 2 derniers chiffres sinon le n° de compte est erroné.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function test()
    Dim no As String
    Dim x As Double
    Dim y, z As Byte
        no = Me.Texte0
        x = Left(no, 10)
        z = Right(no, 2)
        y = x Mod 97
    If y = z Then
        MsgBox "n° de compte correct"
    Else
        MsgBox "n° de compte erroné"
    End If
    End Function
    Avec un n° de compte tel que : 001182386853 ca marche
    Avec un n° de compte tel que : 360056054181 ca plante lors du calcul du Modulo alors que le résultat "rentre" dans un byte ?!?!?

    Pourquoi ?

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    change

    pour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim y  As Byte, z As Byte
    Là tu as déclaré y comme un variant et Access fait ce qu'il veut avec les variants.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 62

    Informations forums :
    Inscription : Mai 2006
    Messages : 45
    Points : 45
    Points
    45
    Par défaut
    slt,
    Exact dans ce cas Y est dimentionné comme un variant , c'était volontaire de ma part pour essayer d'éviter l'erreur (par définition un variant accepte n'importe quelle valeur même null).
    J'avais au départ dimentionné x et y séparément en byte comme tu le préconise et ça ne change rien.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Ok,

    essaye y=CByte(tonCalcul)

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    Bonjour,

    bizarre car si on décompose le calcul ça fonctionne :
    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
     
     
    Public Function test()
    Dim no As String
    Dim x As Double, w As Double
    Dim y As Byte, z As Byte
        no = Me.Texte0
        x = Left(no, 10)
        z = Right(no, 2)
        w = x / 97
        y = CByte((w - Int(w)) * 97)
    If y = z Then
        MsgBox "n° de compte correct"
    Else
        MsgBox "n° de compte erroné"
    End If
    End Function

  6. #6
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 62

    Informations forums :
    Inscription : Mai 2006
    Messages : 45
    Points : 45
    Points
    45
    Par défaut
    Oui comme tu dis ... bizarre !!

    Merci pour la version décomposée , je vais m'en servir en attendant de comprendre.

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

Discussions similaires

  1. vérification de la validiter d'une chaine
    Par zOoOm_10 dans le forum C
    Réponses: 2
    Dernier message: 20/03/2011, 03h45
  2. Vérification de la validité d'un SIREN et d'un SIRET
    Par Shamard dans le forum Contribuez
    Réponses: 5
    Dernier message: 02/03/2011, 09h09
  3. Vérification de la validité d'une URL
    Par cyscek dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 19/03/2010, 14h54
  4. Réponses: 5
    Dernier message: 18/04/2009, 14h18
  5. [Active Directory] Vérification de la validité d'un password
    Par cinemania dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 21/08/2007, 00h57

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