De nombreux numéros/nombres possèdent un système de vérification afin d'éviter des erreurs de saisie via une clé de contrôle.
Calcul de la clé n° SS/NIR
Voir Numéro de sécurité sociale en France — Wikipédia (wikipedia.org)
N° en A1 (n° à 13 ou 15 chiffres avec la clé) :
=97-MOD(GAUCHE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(A1;CAR(160);"");" ";"");"2A";19);"2B";18);13);97)
- On supprime les espaces et espaces insécables (CAR(160).
- On gère le cas de la Corse (2A et 2B).
- On ignore la clé (GAUCHE( 13)).
Calcul de la clé RIB
Voir Clé RIB — Wikipédia (wikipedia.org)
RIB en A1 (n° à 21 ou 23 caractères avec la clé) :
=LET(r;CONCAT(LET(c;MAP(SEQUENCE(21);LAMBDA(v;STXT(A1;v;1)));
SI(ESTNUM(c*1);c;DROITE(CHERCHE(c;"ABCDEFGHI@JKLMNOPQR@@STUVWXYZ");1))));
97-MOD(15*GAUCHE(r;10)+3*STXT(r;11;11);97))
- r est le RIB modifié (sans les lettres).
- Les @ servent à remplir les blancs dans la table de substitution Lettre/Chiffre.
- MAP permet de parcourir toute la chaîne pour faire les substitutions (évite ainsi l'imbrication de 26 fonctions SUBSTITUE !).
Calcul de la clé IBAN
Voir International Bank Account Number — Wikipédia (wikipedia.org)
IBAN en A1 (27 caractères) :
=LET(iNet;SUBSTITUE(SUBSTITUE(SUBSTITUE(F14;" ";"");CAR(160);"");"-";"");
iMod;STXT(iNet;5;99)&GAUCHE(iNet;4);
iConv;CONCAT(LET(c;MAP(SEQUENCE(NBCAR(iMod));LAMBDA(v;STXT(iMod;v;1)));SI(ESTNUM(c*1);c;CODE(c)-55)));
MOD(LET(i;MOD(GAUCHE(iConv;14);97)&STXT(iConv;15;99);MOD(GAUCHE(i;14);97)&STXT(i;15;9));97))
L'IBAN est correcte si le résultat est 1.
Merci pour votre attention bienveillante.