FaridP
XLDnaute Occasionnel
Bonjour à Tous,
Je cherche en vain une fonction permettant de tester la validité d'un RIB.
J'ai trouvé des fonctions permettant de calculer la clé RIB mais j'aimerais pouvoir contrôler sur des exports que je reçois la validité des informations saisies et la clé RIB y figure également.
Je vous remercie de l'aide que vous pourrez m'apporter parce ça dépasse mes connaissances limitées en VBA.
Que la Force soit avec vous.
Et encore Merci,
Farid
Re-Moi,
Je viens de trouver la réponse (3 fonctions bien complètes) donc je les donne pour celles et ceux qui sont intéressés :
Merci et bonne continuation à Tous
Je cherche en vain une fonction permettant de tester la validité d'un RIB.
J'ai trouvé des fonctions permettant de calculer la clé RIB mais j'aimerais pouvoir contrôler sur des exports que je reçois la validité des informations saisies et la clé RIB y figure également.
Je vous remercie de l'aide que vous pourrez m'apporter parce ça dépasse mes connaissances limitées en VBA.
Que la Force soit avec vous.
Et encore Merci,
Farid
Re-Moi,
Je viens de trouver la réponse (3 fonctions bien complètes) donc je les donne pour celles et ceux qui sont intéressés :
Code:
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
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
Merci et bonne continuation à Tous
Dernière édition: