Voici une fonction VB de calcul de clé RIB. A implanter dans une macro Excel
-- stabe --
Public Function VerifCleRIB(ByVal CodeBanque As String, ByVal CodeGuichet As String, ByVal CodeCompte As String) As String
Dim A As String
Dim B As String
Dim B1, B2 As String
Dim N1 As Integer
Dim c As String
Dim D As String
Dim N2 As Integer
Dim i As Integer
VerifCleRIB = ""
' vérif si les coordonnées bancaires ne sont pas renseignées
If CodeBanque <> "" Or CodeGuichet <> "" Or CodeCompte <> "" Then
' chaine de 23 caractères
A = CodeBanque & CodeGuichet & CodeCompte & "00"
' remplacement des lettres alphabètiques par des nombres
B = ""
For i = 1 To Len(A)
Select Case UCase(Mid(A, i, 1))
Case "A", "J": B = B + "1"
Case "B", "K", "S": B = B + "2"
Case "C", "L", "T": B = B + "3"
Case "D", "M", "U": B = B + "4"
Case "E", "N", "V": B = B + "5"
Case "F", "O", "W": B = B + "6"
Case "G", "P", "X": B = B + "7"
Case "H", "Q", "Y": B = B + "8"
Case "I", "R", "Z": B = B + "9"
Case " ": B = B + "0"
Case Else: B = B + Mid(A, i, 1)
End Select
Next i
' coupure de la chaine en 2
B1 = Left(B, 13)
B2 = Right(B, 10)
' prendre le reste de la division par 97
N1 = CDec(B1) - Int(CDec(B1) / 97) * 97
' transformer ce nombre en chaine de caractères
If N1 < 10 Then
c = "0" & CStr(N1)
Else
c = CStr(N1)
End If
' concatèner les chaines
D = c & B2
' prendre le reste de la division par 97
N2 = CDec(D) - Int(CDec(D) / 97) * 97
'N2 = CDec(D) Mod 97 ' ne fonctionne pas : dépassement de capacité
' on obtient la clé RIB
If CStr(97 - N2) < 10 Then
VerifCleRIB = "0" & CStr(97 - N2)
Else
VerifCleRIB = CStr(97 - N2)
End If