Page 1 sur 1

Calculer la clef d'un RIB

Publié : ven. 21/oct./2005 21:54
par Flype
Voici quelques fonctions bancaires :

1/ vérifie la validité d'un RIB
2/ vérifie la validité d'un N° CB

Code : Tout sélectionner

Procedure.b RIB_Valider(rib.s)  ; Retourne Vrai si la clé du RIB est correcte. 
  
  rib = UCase(rib)
  rib = ReplaceString(rib," ","") 
  rib = ReplaceString(rib,".","") 
  rib = ReplaceString(rib,"-","")
  
  rib = ReplaceString(rib,"A","1") 
  rib = ReplaceString(rib,"B","2") 
  rib = ReplaceString(rib,"C","3") 
  rib = ReplaceString(rib,"D","4") 
  rib = ReplaceString(rib,"E","5") 
  rib = ReplaceString(rib,"F","6") 
  rib = ReplaceString(rib,"G","7") 
  rib = ReplaceString(rib,"H","8") 
  rib = ReplaceString(rib,"I","9") 
  rib = ReplaceString(rib,"J","1") 
  rib = ReplaceString(rib,"K","2") 
  rib = ReplaceString(rib,"L","3") 
  rib = ReplaceString(rib,"M","4") 
  rib = ReplaceString(rib,"N","5") 
  rib = ReplaceString(rib,"O","6") 
  rib = ReplaceString(rib,"P","7") 
  rib = ReplaceString(rib,"Q","8") 
  rib = ReplaceString(rib,"R","9") 
  rib = ReplaceString(rib,"S","2") 
  rib = ReplaceString(rib,"T","3") 
  rib = ReplaceString(rib,"U","4") 
  rib = ReplaceString(rib,"V","5") 
  rib = ReplaceString(rib,"W","6") 
  rib = ReplaceString(rib,"X","7") 
  rib = ReplaceString(rib,"Y","8") 
  rib = ReplaceString(rib,"Z","9") 
  
  d1 = Val(Mid(rib,01,7)) 
  d2 = Val(Mid(rib,08,7)) 
  d3 = Val(Mid(rib,15,7)) 
  d4 = Val(Mid(rib,22,2))
  
  If d4 = (97-(62*d1+34*d2+3*d3)%97) 
    ProcedureReturn #True 
  EndIf 
  
EndProcedure 
Procedure.b CB_Valider(cb.s)    ; Retourne Vrai si le n° CB est correcte. 
  
  cb = UCase(cb) 
  cb = ReplaceString(cb," ","") 
  cb = ReplaceString(cb,".","") 
  cb = ReplaceString(cb,"-","") 
  
  For i=1 To 16 
    d = Val(Mid(cb,i,1)) 
    somme + d 
    If (i%2) 
      somme + d 
      If d >= 5 
        somme + 1 
      EndIf 
    EndIf 
  Next 
  
  If (somme%10)=0 
    ProcedureReturn #True 
  EndIf 
  
EndProcedure

Debug RIB_Valider ("11111-22222-12345678901-32") 
Debug RIB_Valider ("22222-33333-01234567890-09") 
Debug RIB_Valider ("12345-56789-12345678901-67") 

Debug CB_Valider("0000-0000-0000-0000")
ps:
les numéros cités en exemples sont totalement factices.
essayez plutot le votre, c'est toujours plus sympa :wink:

Publié : ven. 21/oct./2005 22:03
par Chris
Ca marche!

Publié : dim. 23/oct./2005 10:37
par Anonyme
Nickel! J'ai fait une sorte de calculateur de n° de CB valide, j'ai enregistrer
toutes les n° de CB dans un .txt ; Le fichier fait 4,22 Go (4 534 042 624 octets) & le pc à planté cette nuit, donc je ne sais pas si le programme avait fini de calculer.

@++

Publié : dim. 23/oct./2005 12:57
par lionel_om
t'aurais pus optimiser ta fnction RIB_Formater().
Une boucle avec un for i = 1 to 26 et des modulo
Mais sinon sympa :wink:

Publié : dim. 23/oct./2005 13:20
par Dr. Dri
lionel_om a écrit :t'aurais pus optimiser ta fnction RIB_Formater().
Une boucle avec un for i = 1 to 26 et des modulo
Mais sinon sympa :wink:
apparament nan
en tout cas pas avec simplement des modulos parce que ca ne se répete pas tant que ca

Dri ;)

Publié : dim. 23/oct./2005 14:25
par Frenchy Pilou
calcule la clef d'un RIB
Quelle est l'utilité :?:
A quoi cela sert-il pour le vulgus pecus ?
Est-ce border line ?

Publié : dim. 23/oct./2005 15:00
par Anonyme2
Frenchy Pilou a écrit :
calcule la clef d'un RIB
Quelle est l'utilité :?:
A quoi cela sert-il pour le vulgus pecus ?
Est-ce border line ?
idem pour moi #jaune

Publié : lun. 24/oct./2005 9:31
par lionel_om
Dr. Dri a écrit : apparament nan
en tout cas pas avec simplement des modulos parce que ca ne se répete pas tant que ca
AH oué, j'ai regardé trop vite !!! :lol:

Publié : lun. 24/oct./2005 18:13
par Flype
Frenchy Pilou a écrit :
calcule la clef d'un RIB
Quelle est l'utilité :?:
A quoi cela sert-il pour le vulgus pecus ?
Est-ce border line ?
à rien c vrai, vérifier la validité suffit, je l'avais ajouté pour trouver les clefs valides des pseudo RIB cités en exemples. voilà.

au fait vulgus pecus je comprends... :P
par contre pourquoi 'border line' désolé mais ca veut dire quoi ?

ps: j'ai changé le source du début du post. :wink: