La fonction Clé_Rib fournit la clé
La fonction Controle_Clé_Rib contrôle une clé fournie
Source / Exemple :
'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
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.