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 : 46 556

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

 

Commentaires et avis

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 dans le forum

calcul des jours fériés [ par fred ] Je cherche un source sur le calcul des jours fériés. En entree on a une date et on doit savoir en sortie si c'est un jour ferie ou pas.J'attends votre Calcul binaire [ par kequo ] peut on faire du calcul binaire avec VB? si oui comment Pb de calcul [ par thomas ] Salut,Je fais en ce moment un petit programme sous VB qui me permet de saisir un calcul dans une zone de saisie (text1), par exemple "8+9*36" et je vo Pb de calcul [ par thomas ] Salut,Je fais en ce moment un petit programme sous VB qui me permet de saisir un calcul dans une zone de saisie (text1), par exemple "8+9*36" et je vo Calcul de chiffres à virgule [ par WareG ] Je doit calculer des sommes à virgule, mais le probleme est le suivant, lorsque je fais la somme par le code suivant j'ai un nombre à virgule beaucoup calcul a virgule [ par WareG ] J'ai bien reç votre code pour le calcul de chiffre à virguleDim Var1, Var2 As SingleVar1 = Text1.TextVar2 = Text2.TextText2.Text = (Int((Var1 + Var2) CALCUL FORMEL [ par mr_schmit ] Bonjour,Je cherche à dévelloper un prog en VB qui fasse du calcul formel, càd calcul avec des lettres.Si qqun à une idée... @+ Cadre d'objet indépt, feuille de calcul excel [ par Julie ] En vba, comment insérer des données issues de requête dans une feuille de calcul excel créée dans un formulaire(avec l'outil: cadre d'objet indépendan Calcul du debit recu et envoyer [ par pirjo ] Bonjour,Je de dois faire une applic qui doit gerer et detecter la connection.Je voudrais savoir comment calculer,par le biais du modem, le débit recu Calcul simple de crédit [ par cgelle ] Je cherche un petit logiciel en vbscript pour effectuer une mini simulation de crédit .Qui peut m'aider ?Merci<td


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,187 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.