begin process at 2010 02 10 06:04:43
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Modules

 > CALCUL DE RIB

CALCUL DE RIB


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Modules Classé sous :calcul, rib Niveau :Initié Date de création :21/11/2000 Vu :49 169

Auteur : Jacques PRESTREAU

Ecrire un message privé
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


 Sources du même auteur

BOÎTES DE DIALOGUE STANDARDISÉES
PILOTER EXCEL PAR OLE AVEC ACCESS OU VB
PILOTER WORD PAR OLE AVEC ACCESS OU VB
CALCUL SIREN ET SIRET
CALCUL CLÉ INSEE (N° SÉCURITÉ SOCIALE)

 Sources de la même categorie

GÉNÉRATEUR DE MAIL LOTUS NOTES AVEC MISE EN FORME VIA UNE SY... par 8Tnerolf8
Source avec Zip Source avec une capture VB6 ADDIN - FAITES DISPARAITRE LES MSGBOX D'ERREUR IDE par EBArtSoft
MODULE DE COMMUNICATION ENTRE APPLICATION par PROTEUS91
REGISTRE WINDOWS par Duke49
Source avec Zip Source avec une capture LECTURE / ÉCRITURE SUR LE PORT PARALLÈLE FACILEMENT AVEC INP... par Moritus

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CALCULE HEURES DE NUIT 2 par ocejade
Source .NET (Dotnet) OBTENIR L'HEURE DE DÉMARRAGE D'UN PC DISTANT EN SE CONNECTAN... par monpcmenerve
BON CALCUL D'UN NOMBRE NEGATIF AVEC UN EXPOSANT FRACTIONNAIR... par us_30
Source avec Zip Source avec une capture ECBS CALCUL CLÉ RIB ET IBAN par NeO78
Source avec Zip Source avec une capture GESTION RIB BANCAIRE (POUR MADFLO QUESTION FORUM AIDE) par pcpunch

Commentaires et avis

Commentaire de thebigbang le 06/01/2002 10:33:12

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

bigbang
bigbang00@caramail.com

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 !!

Commentaire de vouzia le 16/10/2003 16:31:57

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

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"

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

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,108 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales