Calcul de rib

Soyez le premier à donner votre avis sur cette source.

Snippet vu 64 736 fois - Téléchargée 72 fois

Contenu du snippet

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

A voir également

Ajouter un commentaire

Commentaires

À quoi sert le calcul de RIB ?
Qu'est-ce qu'un RIB ?
cs_thebigbang
Messages postés
196
Date d'inscription
vendredi 21 décembre 2001
Statut
Membre
Dernière intervention
25 juillet 2006
-
le RIB c'est de koi tu dert pour payer ....

bigbang
bigbang00@caramail.com
nifield
Messages postés
7
Date d'inscription
mercredi 25 juin 2003
Statut
Membre
Dernière intervention
4 août 2004
-
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 !!
vouzia
Messages postés
2
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
21 octobre 2003
-
Comment mettre sur excel la formule de calcul de la clé rib
cs_bertom
Messages postés
3
Date d'inscription
vendredi 2 janvier 2004
Statut
Membre
Dernière intervention
13 février 2007
-
@ 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"

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.