begin process at 2008 05 16 05:13:27
1 173 215 membres
58 nouveaux aujourd'hui
13 970 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CALCUL DE RIB


Information sur la source

Catégorie :Modules Classé sous : calcul, rib Niveau : Initié Date de création : 21/11/2000 Vu : 37 881

Note :
8 / 10 - par 12 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

La fonction Clé_Rib fournit la clé
La fonction Controle_Clé_Rib contrôle une clé fournie

Source

  • 'Module de calcul et de contrôle de clé RIB
  • '__________________________________________
  • '
  • 'Jeux d'essai :
  • ' 12345 67890 12345678901 clé => 04
  • ' 54321 54321 10987654321 clé => 47
  • ' 99999 55555 16589A45566 clé => 63
  • ' 20001 75200 12345678901 clé => 05
  • Option Explicit
  • Function Calcul_pour_Clé_RIB(ByVal Code_banque As String, ByVal Code_guichet As String, ByVal N°_Compte As String)
  • '
  • '© Jacques PRESTREAU, 1999
  • '
  • 'Renvoie False en cas d'erreur
  • 'Renvoie un entier en cas de succès
  • '
  • Dim Compteur1, Reste, N°_Compte_Converti, Valeur_Ascii_Caractère
  • If Not IsNumeric(Code_banque) Then
  • MsgBox "Code banque non numérique"
  • Calcul_pour_Clé_RIB = False
  • Exit Function
  • End If
  • If Not IsNumeric(Code_guichet) Then
  • MsgBox "Code guichet non numérique"
  • Calcul_pour_Clé_RIB = False
  • Exit Function
  • End If
  • 'Substitution des Lettres par les chiffres correspondants
  • N°_Compte_Converti = ""
  • For Compteur1 = 1 To Len(N°_Compte)
  • Valeur_Ascii_Caractère = Asc(Mid$(N°_Compte, Compteur1, 1))
  • Select Case Valeur_Ascii_Caractère
  • Case Is > 82
  • N°_Compte_Converti = N°_Compte_Converti + Chr$(48 + ((Valeur_Ascii_Caractère - 81) Mod 10))
  • Case Is > 73
  • N°_Compte_Converti = N°_Compte_Converti + Chr$(48 + ((Valeur_Ascii_Caractère - 73) Mod 10))
  • Case Is > 57
  • N°_Compte_Converti = N°_Compte_Converti + Chr$(48 + ((Valeur_Ascii_Caractère - 64) Mod 10))
  • Case Else
  • N°_Compte_Converti = N°_Compte_Converti + Chr$(Valeur_Ascii_Caractère)
  • End Select
  • Next Compteur1
  • Calcul_pour_Clé_RIB = Val(Code_banque) Mod 97
  • Calcul_pour_Clé_RIB = ((Calcul_pour_Clé_RIB * 100000) + Val(Code_guichet)) Mod 97
  • Calcul_pour_Clé_RIB = ((Calcul_pour_Clé_RIB * 1000000) + Val(Left$(Format$(N°_Compte_Converti, "00000000000"), 6))) Mod 97
  • Calcul_pour_Clé_RIB = ((Calcul_pour_Clé_RIB * 100000) + Val(Right$(Format$(N°_Compte_Converti, "00000000000"), 5))) Mod 97
  • End Function
  • Function Controle_Clé_Rib(ByVal Code_banque As String, ByVal Code_guichet As String, ByVal N°_Compte As String, ByVal Clé_Rib As String) As Boolean
  • '
  • '© Jacques PRESTREAU, 1999
  • '
  • 'Renvoie False en cas d'erreur
  • 'Renvoie True en cas de succès
  • '
  • Dim Pré_Calcul
  • Pré_Calcul = Calcul_pour_Clé_RIB(Code_banque, Code_guichet, N°_Compte)
  • If (Not Pré_Calcul = False) And (((Pré_Calcul * 100) + Val(Clé_Rib)) Mod 97) <> 0 Then
  • MsgBox "Clé RIB erronée"
  • Controle_Clé_Rib = False
  • Else
  • Controle_Clé_Rib = True
  • End If
  • End Function
  • Function Clé_Rib(ByVal Code_banque As String, ByVal Code_guichet As String, ByVal N°_Compte As String)
  • '
  • '© Jacques PRESTREAU, 1999
  • '
  • 'Renvoie False en cas d'erreur
  • 'Renvoie la clé en String en cas de succès
  • '
  • Dim Pré_Calcul
  • Pré_Calcul = Calcul_pour_Clé_RIB(Code_banque, Code_guichet, N°_Compte)
  • If (Not Pré_Calcul = False) Then
  • Clé_Rib = Format$(((97 - Pré_Calcul) * 100) Mod 97, "00")
  • End If
  • End Function
'Module de calcul et de contrôle de clé RIB
'__________________________________________
'
'Jeux d'essai :
' 12345 67890 12345678901 clé => 04
' 54321 54321 10987654321 clé => 47
' 99999 55555 16589A45566 clé => 63
' 20001 75200 12345678901 clé => 05

Option Explicit

Function Calcul_pour_Clé_RIB(ByVal Code_banque As String, ByVal Code_guichet As String, ByVal N°_Compte As String)
'
'© Jacques PRESTREAU, 1999
'
'Renvoie False en cas d'erreur
'Renvoie un entier en cas de succès
'
Dim Compteur1, Reste, N°_Compte_Converti, Valeur_Ascii_Caractère

If Not IsNumeric(Code_banque) Then
   MsgBox "Code banque non numérique"
   Calcul_pour_Clé_RIB = False
   Exit Function
End If
If Not IsNumeric(Code_guichet) Then
   MsgBox "Code guichet non numérique"
   Calcul_pour_Clé_RIB = False
   Exit Function
End If
    
'Substitution des Lettres par les chiffres correspondants

N°_Compte_Converti = ""
 
For Compteur1 = 1 To Len(N°_Compte)
   Valeur_Ascii_Caractère = Asc(Mid$(N°_Compte, Compteur1, 1))
   Select Case Valeur_Ascii_Caractère
   Case Is > 82
      N°_Compte_Converti = N°_Compte_Converti + Chr$(48 + ((Valeur_Ascii_Caractère - 81) Mod 10))
   Case Is > 73
      N°_Compte_Converti = N°_Compte_Converti + Chr$(48 + ((Valeur_Ascii_Caractère - 73) Mod 10))
   Case Is > 57
      N°_Compte_Converti = N°_Compte_Converti + Chr$(48 + ((Valeur_Ascii_Caractère - 64) Mod 10))
   Case Else
      N°_Compte_Converti = N°_Compte_Converti + Chr$(Valeur_Ascii_Caractère)
   End Select
Next Compteur1
 
Calcul_pour_Clé_RIB = Val(Code_banque) Mod 97
Calcul_pour_Clé_RIB = ((Calcul_pour_Clé_RIB * 100000) + Val(Code_guichet)) Mod 97
Calcul_pour_Clé_RIB = ((Calcul_pour_Clé_RIB * 1000000) + Val(Left$(Format$(N°_Compte_Converti, "00000000000"), 6))) Mod 97
Calcul_pour_Clé_RIB = ((Calcul_pour_Clé_RIB * 100000) + Val(Right$(Format$(N°_Compte_Converti, "00000000000"), 5))) Mod 97
 
End Function

Function Controle_Clé_Rib(ByVal Code_banque As String, ByVal Code_guichet As String, ByVal N°_Compte As String, ByVal Clé_Rib As String) As Boolean
'
'© Jacques PRESTREAU, 1999
'
'Renvoie False en cas d'erreur
'Renvoie True en cas de succès
'
Dim Pré_Calcul

Pré_Calcul = Calcul_pour_Clé_RIB(Code_banque, Code_guichet, N°_Compte)

If (Not Pré_Calcul = False) And (((Pré_Calcul * 100) + Val(Clé_Rib)) Mod 97) <> 0 Then
   MsgBox "Clé RIB erronée"
   Controle_Clé_Rib = False
Else
   Controle_Clé_Rib = True
End If

End Function

Function Clé_Rib(ByVal Code_banque As String, ByVal Code_guichet As String, ByVal N°_Compte As String)
'
'© Jacques PRESTREAU, 1999
'
'Renvoie False en cas d'erreur
'Renvoie la clé en String en cas de succès
'
Dim Pré_Calcul

Pré_Calcul = Calcul_pour_Clé_RIB(Code_banque, Code_guichet, N°_Compte)

If (Not Pré_Calcul = False) Then
   Clé_Rib = Format$(((97 - Pré_Calcul) * 100) Mod 97, "00")
End If

End Function
 

Conclusion

La fonction Clé_Rib fournit la clé
La fonction Controle_Clé_Rib contrôle une clé fournie

La fonction Calcul_pour_Clé_RIB est à usage interne des deux autres fonctions
  • signaler à un administrateur
    Commentaire de thebigbang le 06/01/2002 10:33:12

    le RIB c'est de koi tu dert pour payer ....

    bigbang
    bigbang00@caramail.com

  • signaler à un administrateur
    Commentaire de nifield le 25/06/2003 18:03:27

    Est-ce que la fonction Controle_Clé_Rib fonctionne bien ?

    Code banque : 18306
    Code guichet : 00035
    N° Compte : 03079163000

    La clé RIB correspondant à ce compte est 97 et est valide.
    Si je donne n'importe quelle nombre (pour renseigner la clé) la clé est considérée comme valide alors que seul 97 devrait l'être !!

  • signaler à un administrateur
    Commentaire de vouzia le 16/10/2003 16:31:57

    Comment mettre sur excel la formule de calcul de la clé rib

  • signaler à un administrateur
    Commentaire de bertom le 11/08/2005 15:55:25

    @ nifield
    Le test "If (Not Pré_Calcul = False)" n'est pas valable quand pré_calcul = 0 (ce qui est le cas quand la clé vaut 97).
    L'instruction 68 devient:
    If (Not Pré_Calcul = False Or Pré_Calcul=0) And (((Pré_Calcul * 100) + Val(Clé_Rib)) Mod 97) <> 0 Then ....
    Linstruction 88 devient:
    If (Not Pré_Calcul = False Or Pré_Calcul=0) Then ......
    De plus, on n'a pas droit à une clé égale à 0, donc il faut rajouter à la ligne 91:
    If Clé_Rib = "00" then Clé_RIB ="97"

  • signaler à un administrateur
    Commentaire de Thalyee le 15/10/2005 20:23:25

    impec avec la modif de BERTOM en espérant qu'il
    n'y as pas d'autre trous
    mais ça dépanne bien
    merci

Ajouter un commentaire

Discussions en rapport avec ce code source

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS