Once again, this post is in French because it’s targeted at a French audience, since it deals with French-specific bank account numbers. Summarized English version is available at the bottom.
J’ai récemment eu besoin de calculer la clé RIB d’un de mes comptes, la banque ne pouvant pas fournir le RIB elle-même pour des raisons règlementaires, que je comprends bien (compte ne pouvant pas être utilisé comme compte courant) mais qui tout de même m’embettent étant donnée mon aversion pour les chèques et ma préférence pour les virements. Du coup, ayant accès au numéro de banque, au numéro de guichet et, of course, au numéro de compte, il ne me manquait plus que la clé RIB pour avoir une numéro de compte complet utilisable pour recevoir des virements.
J’ai trouvé 1 ou 2 solutions toutes prêtes (la page Wikipedia mentionne notamment une formule Excel – pas mal sauf que je n’ai que LibreOffice en anglais), mais le plus souvent celles-ci étaient en ligne, alors bon, envoyer mon numéro de compte à un serveur inconnu, bof bof… Je me suis donc dit pourquoi pas implémenter la mienne, en R (R est un logiciel libre de stats, site officiel).
Voici donc sans plus attendre ma petite fonction, basée entièrement sur le calcul exposé sur Wikipedia. Je l’ai vérifiée sur certains de mes comptes pour lesquels j’ai le RIB, en revanche aucun ne contenait de lettre donc je n’ai pas eu l’occasion de tester sur un RIB à lettres.
claculerRIBconv = function(x){ x=as.character(x); x=gsub("A|J","1",x,ignore.case=TRUE); x=gsub("B|K|S","2",x,ignore.case=TRUE); x=gsub("C|L|T","3",x,ignore.case=TRUE); x=gsub("D|M|U","4",x,ignore.case=TRUE); x=gsub("E|N|V","5",x,ignore.case=TRUE); x=gsub("F|O|W","6",x,ignore.case=TRUE); x=gsub("G|P|X","7",x,ignore.case=TRUE); x=gsub("H|Q|Y","8",x,ignore.case=TRUE); x=gsub("I|R|Z","9",x,ignore.case=TRUE); return(as.integer(x)); } calculerRIB = function(banque,guichet,compte){ return(97 - ((89*claculerRIBconv(banque) + 15*claculerRIBconv(guichet) + 3*claculerRIBconv(compte)) %% 97)); }
La première fonction réalise les conversions lettres => chiffres, la seconde appliquement simplement la formule, prenant pour paramètre le code banque, le code guichet et le numéro de compte. Si vous voulez tester, voici un numéro de compte fictif (enfin, il existe peut-être en vrai mais en tout cas c’est pas le mien :D):
banque=17515; guichet=90000; compte=01765338426; calculerRIB(banque,guichet,compte);
English summary
French account numbers end with a 2-digit verification key (“clé RIB”), which is used to check if the account number wasn’t mistyped, but is also necessary to use the account number, for instance to send it a wire. Because in some cases the bank won’t communicate the full account number (ie, they will communicate everything but the clé RIB), you may need to calculate it yourself. The formula is well-know, notably on the Wikipedia page, but here I present a function to calculate it easily in R (cf above). To use it:
calculerRIB(bankCode,branchCode,accountNumber);
merci, ça m’évitera de devoir le faire moi-même =]
Une version qui ne supporte pas les lettres, mais qui peut s’avérer utile pour les comptes sans lettre mais qui buggent pour une raison inconnue, tel que ce numéro:
> as.integer(“5272713040”)
[1] NA
Warning message:
NAs introduced by coercion to integer range
calculerRIB = function(banque,guichet,compte){
return(97 – ((89*banque + 15*guichet + 3*compte) %% 97));
}