clé de contrôle

Y

yvon51

Guest
bonjour le forum

quelqu'un sait-il quel est le calcul pour trouver la clé d'un compte banquaire ou num sécurité sociale.

merci
yvon
 
J

jmps

Guest
Bonjour Yvon,

Pour un N° de Sécurité Sociale (En A1):

=97-MOD((MOD(CNUM(STXT(A1;1;7));97)*27)+(MOD(CNUM(STXT(A1;8;6));97));97)

Pour une clé RIB, j'ai quelque chose mais en javascript, il faut que je te le traduise en Excel. Ce soir si je peux.

A+

José
 
E

Eric C

Guest
Bonjour le forum
Bonjour Yvon, bonjour José

Pour que José aille plus vite faire un t'chiot Quizzzzzzzzzzzz (Amicalement)
'Module de calcul et de contrôle de clé RIB
'
'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
'__________________________________________
'
'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



Non testé pour ma part.
@ ++ Eric C
 
Y

yvon51

Guest
bonjour le forum, josé, éric

ah! ben dis donc, ça spide un max et bon, même très bon.

josé, j'ai essayé pour la sécu, c'est ok et merci beaucoup.

éric, je vais utiliser ton aide aujourd'hui et je te remercie vivement.
ùais dis-moi STP, est-ce l'explication de la fonction que tu as mis en "option Explicit"?

bonne journée à tous
yvon
 
J

jmps

Guest
Bonjour Yvon, Eric,

La fonction Clé_Rib n'esiste pas sur excel, c'est une fonction créée de toutes pièces dans le code donné par Eric. Il faut que tu la copies dans un module VBA.

Autrement, je te joins un fichier avec calcul par formule, seulement comme faire tout tenir en une seule formule serait trop long et complexe à comprendre, le calcul lest décomposé en étapes. Si tu as du mal (comme moi arf !), n'hésite pas.

Bonne journée,

José
 

Pièces jointes

  • Calcul_cle_RIB.zip
    3.7 KB · Affichages: 125
E

Eric C

Guest
Bonjour le forum
Bonjour Yvon & José

Désolé pour ma lenteur mais je "bosse" plus lorsque je suis en congé. J'ai trouvé ceci qui devrait t'intéresser <http://etienne.chouard.free.fr/Documents/TelDocExcel.htm>
@ ++ Eric C
 

Discussions similaires

Statistiques des forums

Discussions
313 009
Messages
2 094 365
Membres
106 005
dernier inscrit
Gabe68