Clef RIB
Comment calculer une clef RIB en VBA ?
Solution
Le programme Visual Basic suivant (à taper dans un module standard) effectue le calcul et renvoie une chaîne de caractères de 2 positions, de « 01 » à « 97 ».
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
' --- ' CALCUL D'UNE CLEF RIB ' --- ' Input : strRIB <- Code RIB sur 21 chiffres ' Output : ClefRIB -> Clef RIB, sur 2 caractères de 01 à 97 ' #Erreur en cas... d'erreur. ' Function ClefRIB(ByVal strRIB As String) As String Dim strLettres As String, strChiffres As String, strLettre As String Dim intI As Integer, intClef As Integer Dim lngPart1 As Long, lngPart2 As Long, lngPart3 As Long ' Le code RIB doit faire 21 signes (la clef en fera 2) If Len(strRIB) <> 21 Then MsgBox "Le code RIB doit comporter 21 chiffres.", vbExclamation ClefRIB = "#Erreur" Exit Function End If ' Remplacer les lettres éventuelles par des chiffres ' sur le principe : ' ABCDEFGHI ' JKLMNOPQR ' STUVWXYZ ' 123456789 strLettres = "ABCDEFGHIJKLMNOPQR STUVWXYZ" strChiffres = "123456789123456789123456789" For intI = 1 To Len(strRIB) strLettre = Mid(strRIB, intI, 1) If Not IsNumeric(strLettre) Then Mid(strRIB, intI, 1) = Mid(strChiffres, _ InStr(1, strLettres, strLettre, vbTextCompare), 1) End If Next ' Découper la chaîne en 3 parties lngPart1 = Val(Left(strRIB, 7)) lngPart2 = Val(Mid(strRIB, 8, 7)) lngPart3 = Val(Right(strRIB, 7)) ' Calculer la clef, sur la base d'un modulo 97 intClef = 97 - (62 * lngPart1 + 34 * lngPart2 + 3 * lngPart3) Mod 97 ClefRIB = Format(intClef, "00") End Function |
Pour utiliser le programme, appelez-le depuis une requête, un formulaire, un état ou VB en lui transmettant les 21 premiers chiffres du code RIB :
Objet | Exemple |
Requête | Clef: ClefRIB("123456789123456789123") |
Formulaire ou état | =ClefRIB("123456789123456789123") |
VBA | Dim strClef As String |