[Calc]Controle RIB et n° INSEE (Sécu) par clé

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Avatar de l’utilisateur
PK1157
NOOuvel adepte
NOOuvel adepte
Messages : 13
Inscription : 30 janv. 2011 21:26

[Calc]Controle RIB et n° INSEE (Sécu) par clé

Message par PK1157 »

Bonsoir,
Voici deux macros qui peuvent s'avérer utiles pour un contrôle de saisie de coordonnées bancaires ou d'un n° INSEE (souvent appelé n° Sécu).
Les macros calculent la clé des données fournies et la comparaison avec la clé saisie permet de déceler une erreur de saisie, ce qui est fréquent avec des données de plus de 10 chiffres.

Code : Tout sélectionner

REM  *****  BASIC  *****
Rem '
Rem '   CleRib
Rem '   Calcule la cle d'un releve d'identite bancaire ou postal (RIB/RIP)
Rem '
Function CleRib(Banque As Integer, Guichet As Integer, NumCompte As String) As Integer
    r1 = ((Banque Mod 97) * 62) Mod 97
    r2 = ((Guichet Mod 97) * 5) Mod 97
    r3 = Right("00000000000" & UCase(NumCompte), 11)
    MsgErr=""
    
    For i = 1 To 11
        lettre = Asc(Mid(r3, i, 1))
        SELECT CASE lettre
        	CASE 48 to 57
        		r3 = Left$(r3, i - 1) & Chr$(lettre) & Right$(r3, 11 - i) : rem 0-9
         	CASE 65 to 73
        		r3 = Left$(r3, i - 1) & Chr$(lettre - 16) & Right$(r3, 11 - i) : rem A-I
            CASE 74 to 82
        		r3 = Left$(r3, i - 1) & Chr$(lettre - 25) & Right$(r3, 11 - i) : rem J-R
            CASE 83 to 90
        		r3 = Left$(r3, i - 1) & Chr$(lettre - 33) & Right$(r3, 11 - i) : rem S-Z
    		CASE ELSE
        		MsgErr="Le n° de Compte "& r3 & " contient au moins un caractère invalide"
        END SELECT
    Next
    IF MsgErr="" THEN
	    r3=Val(r3)
	    r4 = Fix(r3 / 10000000)
	    r5 = r3 - r4 * 10000000
	    r6 = ((r4 Mod 97) * 76) Mod 97
	    r7 = r5 Mod 97
	    r8 = ((r1 + r2 + r6 + r7) * 3) Mod 97
	    CleRib = 97 - r8
    ELSE
    	CleRib=0
    	MSGBOX(MsgErr)
    ENDIF
End Function

Rem '
Rem '   CleSecu
Rem '   Calcule la cle d'un numero de Secu (INSEE)
Rem '
Function CleSecu(NumSecu) As Integer
	fort = Fix(NumSecu / 1000000)
	faible = NumSecu - (fort * 1000000)
	NumSecu = (fort Mod 97) * 1000000 + faible
	CleSecu = 97 - (NumSecu Mod 97)
End Function

Libre Office sur Windows 7 et 10 et Linux Xubuntu
toucan
MOOdérateur
MOOdérateur
Messages : 182
Inscription : 22 févr. 2016 23:49

Re: [Calc]Controle RIB et n° INSEE (Sécu) par clé

Message par toucan »

Bonsoir
je ne suis pas forcément un inconditionnel de la législation, mais il me semble que pour stocker ce type de données dans un fichier informatique, il faille passer par une demande d'autorisation à la CNIL :)
Cordialement.
Avatar de l’utilisateur
PK1157
NOOuvel adepte
NOOuvel adepte
Messages : 13
Inscription : 30 janv. 2011 21:26

Re: [Calc]Controle RIB et n° INSEE (Sécu) par clé

Message par PK1157 »

Bonjour,
Bien entendu, le respect de la législation s'impose, cela va de soi.
A partir du moment où un fichier de données personnelles est convenablement déclaré ( https://www.cnil.fr/fr/declaration/ns-0 ... -personnel) ou fait l'objet d'une dispense (https://www.cnil.fr/fr/dispense/di-002- ... teur-prive), on peut, dans ce cadre, trouver l'utilité des macros que j'ai postées.
Cordialement,
PK1157
Libre Office sur Windows 7 et 10 et Linux Xubuntu
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25965
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Controle RIB et n° INSEE (Sécu) par clé

Message par Dude »

Salut,

Le RIB n'a plus vraiment d'utilité depuis l'avènement de l'IBAN.
rgisèle
Fraîchement OOthentifié
Messages : 7
Inscription : 30 déc. 2014 14:07

Re: [Calc]Controle RIB et n° INSEE (Sécu) par clé

Message par rgisèle »

Bonjour,
Sortons des propos négatifs...
Comment disposez-vous les chiffres avant l'application de vos macros ?
Plusieurs essais ont déclenché des erreurs dans Open Office Calc...
mais je suis loin d'être experte en macros...
D'avance, merci de votre réponse.
OpenOffice 4.1.1, Windows XP
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [Calc]Controle RIB et n° INSEE (Sécu) par clé

Message par Churay »

Bonjour

Un numéro de compte est composé d'un
  • - Code Banque (5 chiffres)
    - Code Guichet (5 chiffres)
    - No Compte (11 ccaractères)
    - Une Clé de RIB (2 chiffres)
Exemple :
Banque 12345
Guichet 01234
N° Compte 1234567Z901
Clé 51

Numéro complet : 12345 01234 1234567Z901

Function CleRib(Banque As Integer, Guichet As Integer, NumCompte As String) As Integer
La fonction attend donc le Code Banque et le code Guichet en Numérique, le numéro de compte en alphanumérique et retourne la clef (en numérique).
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25965
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Controle RIB et n° INSEE (Sécu) par clé

Message par Dude »

Churay a écrit :Banque 12345
Guichet 01234
Sauf à avoir des codes inférieurs à 32.767, une variable entière ne suffira pas.

Code : Tout sélectionner

Function CleRib(Banque As long, Guichet As long, NumCompte As String) As Integer
me paraît plus approprié. :lol:
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [Calc]Controle RIB et n° INSEE (Sécu) par clé

Message par Churay »

Bonjour
Dude a écrit :Sauf à avoir des codes inférieurs à 32.767, une variable entière ne suffira pas.
Je n'avais même pas fait attention... :oops:
Je traite ce genre de données en alpha, ce qui permet de ne pas se préoccuper des 0 non significatifs...
 Ajout : Dans le même style de test, on peut vérifier la cohérence d'un numéro de Carte Bancaire :
Verif CB.ods
 
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...