OVH Cloud OVH Cloud

problème de mise en forme de format pour les N° SS français

9 réponses
Avatar
Antoine76
Bonjour à tous

Je suis bloqué dans la recherche d'une solution pour "l'harmonisation" de
l'affichage des numéros de sécurité sociale (français) à la problématique
suivante :
De nombreux fichiers contiennent, toujours en colonne B, les N° SS. Le
problème est que ces numéros ont été rentrés de manière "non standardisée",
voulant dire par là que
- les numéros ont toujours été rentrés avec espaces(1 23 45 67 789...),
- et avec un "/" lorsque les 2 chiffres de la clé étaient fournis(sinon sans
le /, ni les 2 chiffres),
- et que parfois, même la totalité des 13 chiffres de base, car parfois il
n'en a été communiqué que 7 ou 10 premiers chiffres (ou...).

L'objectif serait,
- d'utiliser une MEFC pour le format de la cellule
(#""##""##""##""###""###" ou #""##""##""##""###""###"/"##")
ce qui ne semble pas possible avec ma version d'Excel 2000,
- à défaut, d'intégrer des formules dans le format personnalisé de ces
cellules (?)

L'idée serait d'avoir toujours, pour l'affichage de la cellule, un
"remplissage" qui commence par le 1er chiffre de gauche... et qui après le
13ème chiffre insère un / Je précise, par ailleurs que le contenu de cette
cellule est exploité, soit pour déterminer le sexe et donc les formules de
politesse correspondantes, soit pour déterminer un âge approché en l'absence
de la date de naissance.

J'ai peur d'avoir trouvé un gros os qui est peut-être même en silex
!Attention aux dents...

L'usage d'une macro ne m'apporterais malheureusement pas ce que je veux, car
des N° SS continuerons à être rentrés dans le fichier, et avec toujours les
même problèmes potentiels...

Merci à tous pour vos idées

Antoine

9 réponses

Avatar
Pounet95
Bonjour,
J'ai pas essayé mais ça devrait le faire :
menu Format / Spécial et Numéro Sécurité Sociale ?


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Antoine76" a écrit dans le message de news:

Bonjour à tous

Je suis bloqué dans la recherche d'une solution pour "l'harmonisation" de
l'affichage des numéros de sécurité sociale (français) à la problématique
suivante :
De nombreux fichiers contiennent, toujours en colonne B, les N° SS. Le
problème est que ces numéros ont été rentrés de manière "non
standardisée",
voulant dire par là que
- les numéros ont toujours été rentrés avec espaces(1 23 45 67 789...),
- et avec un "/" lorsque les 2 chiffres de la clé étaient fournis(sinon
sans
le /, ni les 2 chiffres),
- et que parfois, même la totalité des 13 chiffres de base, car parfois il
n'en a été communiqué que 7 ou 10 premiers chiffres (ou...).

L'objectif serait,
- d'utiliser une MEFC pour le format de la cellule
(#""##""##""##""###""###" ou #""##""##""##""###""###"/"##")
ce qui ne semble pas possible avec ma version d'Excel 2000,
- à défaut, d'intégrer des formules dans le format personnalisé de ces
cellules (?)

L'idée serait d'avoir toujours, pour l'affichage de la cellule, un
"remplissage" qui commence par le 1er chiffre de gauche... et qui après le
13ème chiffre insère un / Je précise, par ailleurs que le contenu de cette
cellule est exploité, soit pour déterminer le sexe et donc les formules de
politesse correspondantes, soit pour déterminer un âge approché en
l'absence
de la date de naissance.

J'ai peur d'avoir trouvé un gros os qui est peut-être même en silex
!Attention aux dents...

L'usage d'une macro ne m'apporterais malheureusement pas ce que je veux,
car
des N° SS continuerons à être rentrés dans le fichier, et avec toujours
les
même problèmes potentiels...

Merci à tous pour vos idées

Antoine




Avatar
RaMa
Bonjour

Vite fait mais essaie ça en copiant dans le module feuille correspondant à
celui de la saisie SS

Private Sub Worksheet_Change(ByVal Target As Range)
Dim QQ, WW
If Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then Exit Sub
'modifier le No de colonne en fonction de la colonne SS
If Target.Column = 1 And _
Target.Row > 1 And Target.Row < 3000 Then
'modifier les No de ligne en fonction du champ SS
QQ = Target.Value
QQ = Application.WorksheetFunction.Substitute(QQ, " ", "")
QQ = Application.WorksheetFunction.Substitute(QQ, "/", "")
QQ = QQ & Left(" ", 16 - Len(QQ))
WW = Left(QQ, 1) & " " & Mid(QQ, 2, 2) & " " & Mid(QQ, 4, 2) & " " & Mid(QQ,
6, 2) _
& " " & Mid(QQ, 8, 3) & " " & Mid(QQ, 11, 3) & "/" & Mid(QQ, 14, 2)
Application.EnableEvents = False
ActiveCell.Value = WW
Application.EnableEvents = True
End If
End Sub

Salutations

RaMa

"Antoine76" a écrit dans le message de news:

Bonjour à tous

Je suis bloqué dans la recherche d'une solution pour "l'harmonisation" de
l'affichage des numéros de sécurité sociale (français) à la problématique
suivante :
De nombreux fichiers contiennent, toujours en colonne B, les N° SS. Le
problème est que ces numéros ont été rentrés de manière "non
standardisée",
voulant dire par là que
- les numéros ont toujours été rentrés avec espaces(1 23 45 67 789...),
- et avec un "/" lorsque les 2 chiffres de la clé étaient fournis(sinon
sans
le /, ni les 2 chiffres),
- et que parfois, même la totalité des 13 chiffres de base, car parfois il
n'en a été communiqué que 7 ou 10 premiers chiffres (ou...).

L'objectif serait,
- d'utiliser une MEFC pour le format de la cellule
(#""##""##""##""###""###" ou #""##""##""##""###""###"/"##")
ce qui ne semble pas possible avec ma version d'Excel 2000,
- à défaut, d'intégrer des formules dans le format personnalisé de ces
cellules (?)

L'idée serait d'avoir toujours, pour l'affichage de la cellule, un
"remplissage" qui commence par le 1er chiffre de gauche... et qui après le
13ème chiffre insère un / Je précise, par ailleurs que le contenu de cette
cellule est exploité, soit pour déterminer le sexe et donc les formules de
politesse correspondantes, soit pour déterminer un âge approché en
l'absence
de la date de naissance.

J'ai peur d'avoir trouvé un gros os qui est peut-être même en silex
!Attention aux dents...

L'usage d'une macro ne m'apporterais malheureusement pas ce que je veux,
car
des N° SS continuerons à être rentrés dans le fichier, et avec toujours
les
même problèmes potentiels...

Merci à tous pour vos idées

Antoine




Avatar
Modeste
Bonsour® Pounet95 avec ferveur ;o))) vous nous disiez :

J'ai pas essayé .....
menu Format / Spécial et Numéro Sécurité Sociale ?


en effet mais cela ne s'applique qu'a des n°SS corrects et complets ;o)))

;o))) alors allons-y d'une petite fonction personnalisée
avec en bonus quand c'est possible
recalcul de clé
indication mois incorrect

Utilisation :
A1 B1 =N_SS(A1)
1-5702- 95/491002 1 57 02 95 491 002 18
2 57 02 95 491 002 2 57 02 95 491 002 18
1570295491 1 57 02 95 491 ??? xx
2572295491032/46 2 57 22 95 491 032 17 !! mois incorrect !!


Function N_SS(target)
' --- ne s'applique qu'aux N°SS Français
' --- Usage VBA possible : Cells(x,y)=N_SS(Cells(w,z))
numeros = "0123456789"
SS = ""
For i = 1 To Len(target)
If InStr(numeros, Mid(target, i, 1)) <> 0 Then
SS = SS & Mid(target, i, 1)
End If
Next
' --- re-calcul de la clé
If Len(SS) >= 13 Then
NumSS = CDbl(Left(SS, 13))
cle = 97 - (NumSS - 97 * Int(NumSS / 97))
Else
cle = "xx"
End If
' --- formatage résultat avec caractère insecable (Chr(160)
N_SS = ""
' --- pour etre sûr de traiter 13 caractères
SS = SS & " "
For i = 1 To 13
n = Mid(SS, i, 1)
N_SS = N_SS & IIf(InStr(numeros, n) <> 0, n, "?")
Select Case i
Case 1, 3, 5, 7, 10
N_SS = N_SS & Chr(160)
End Select
Next
'--- ajout de la clé avec caractère insécable chr(160)
N_SS = N_SS & Chr(160) & Format(cle, "00")
'--- controle du N° de mois
If CInt(Mid(N_SS, 6, 2)) > 12 Then N_SS = N_SS & " !! mois incorrect !!"
End Function:




"Antoine76" a écrit dans le message de news:

Bonjour à tous

Je suis bloqué dans la recherche d'une solution pour "l'harmonisation"
de
l'affichage des numéros de sécurité sociale (français) à la
problématique
suivante :
De nombreux fichiers contiennent, toujours en colonne B, les N° SS. Le
problème est que ces numéros ont été rentrés de manière "non
standardisée",
voulant dire par là que
- les numéros ont toujours été rentrés avec espaces(1 23 45 67 789...),
- et avec un "/" lorsque les 2 chiffres de la clé étaient fournis(sinon
sans
le /, ni les 2 chiffres),
- et que parfois, même la totalité des 13 chiffres de base, car parfois
il
n'en a été communiqué que 7 ou 10 premiers chiffres (ou...).

L'objectif serait,
- d'utiliser une MEFC pour le format de la cellule
(#""##""##""##""###""###" ou #""##""##""##""###""###"/"##")
ce qui ne semble pas possible avec ma version d'Excel 2000,
- à défaut, d'intégrer des formules dans le format personnalisé de ces
cellules (?)

L'idée serait d'avoir toujours, pour l'affichage de la cellule, un
"remplissage" qui commence par le 1er chiffre de gauche... et qui après
le
13ème chiffre insère un / Je précise, par ailleurs que le contenu de
cette
cellule est exploité, soit pour déterminer le sexe et donc les formules
de
politesse correspondantes, soit pour déterminer un âge approché en
l'absence
de la date de naissance.

J'ai peur d'avoir trouvé un gros os qui est peut-être même en silex
!Attention aux dents...

L'usage d'une macro ne m'apporterais malheureusement pas ce que je veux,
car
des N° SS continuerons à être rentrés dans le fichier, et avec toujours
les
même problèmes potentiels...

Merci à tous pour vos idées

Antoine



--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr


Avatar
Pounet95
Salut Modeste,
OK, mais j'ai cru comprendre que
<< L'usage d'une macro ne m'apporterais malheureusement pas ce que je veux,
car des N° SS continuerons à être rentrés dans le fichier, et avec toujours
les même problèmes potentiels... >>

ALors, amha, en partant de ce format et en l'incorporant dans une MEFC, il
devrait avoir moyen de faire
avec quelques tests sur le nbre de caractères par exemple.
Qu'en penses-tu ?

Bonne journée
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Modeste" a écrit dans le message de news:

Bonsour® Pounet95 avec ferveur ;o))) vous nous disiez :

J'ai pas essayé .....
menu Format / Spécial et Numéro Sécurité Sociale ?


en effet mais cela ne s'applique qu'a des n°SS corrects et complets ;o)))

;o))) alors allons-y d'une petite fonction personnalisée
avec en bonus quand c'est possible
recalcul de clé
indication mois incorrect

Utilisation :
A1 B1 =N_SS(A1)
1-5702- 95/491002 1 57 02 95 491 002 18
2 57 02 95 491 002 2 57 02 95 491 002 18
1570295491 1 57 02 95 491 ??? xx
2572295491032/46 2 57 22 95 491 032 17 !! mois incorrect !!


Function N_SS(target)
' --- ne s'applique qu'aux N°SS Français
' --- Usage VBA possible : Cells(x,y)=N_SS(Cells(w,z))
numeros = "0123456789"
SS = ""
For i = 1 To Len(target)
If InStr(numeros, Mid(target, i, 1)) <> 0 Then
SS = SS & Mid(target, i, 1)
End If
Next
' --- re-calcul de la clé
If Len(SS) >= 13 Then
NumSS = CDbl(Left(SS, 13))
cle = 97 - (NumSS - 97 * Int(NumSS / 97))
Else
cle = "xx"
End If
' --- formatage résultat avec caractère insecable (Chr(160)
N_SS = ""
' --- pour etre sûr de traiter 13 caractères
SS = SS & " "
For i = 1 To 13
n = Mid(SS, i, 1)
N_SS = N_SS & IIf(InStr(numeros, n) <> 0, n, "?")
Select Case i
Case 1, 3, 5, 7, 10
N_SS = N_SS & Chr(160)
End Select
Next
'--- ajout de la clé avec caractère insécable chr(160)
N_SS = N_SS & Chr(160) & Format(cle, "00")
'--- controle du N° de mois
If CInt(Mid(N_SS, 6, 2)) > 12 Then N_SS = N_SS & " !! mois incorrect !!"
End Function:




"Antoine76" a écrit dans le message de news:

Bonjour à tous

Je suis bloqué dans la recherche d'une solution pour "l'harmonisation"
de
l'affichage des numéros de sécurité sociale (français) à la
problématique
suivante :
De nombreux fichiers contiennent, toujours en colonne B, les N° SS. Le
problème est que ces numéros ont été rentrés de manière "non
standardisée",
voulant dire par là que
- les numéros ont toujours été rentrés avec espaces(1 23 45 67 789...),
- et avec un "/" lorsque les 2 chiffres de la clé étaient fournis(sinon
sans
le /, ni les 2 chiffres),
- et que parfois, même la totalité des 13 chiffres de base, car parfois
il
n'en a été communiqué que 7 ou 10 premiers chiffres (ou...).

L'objectif serait,
- d'utiliser une MEFC pour le format de la cellule
(#""##""##""##""###""###" ou #""##""##""##""###""###"/"##")
ce qui ne semble pas possible avec ma version d'Excel 2000,
- à défaut, d'intégrer des formules dans le format personnalisé de ces
cellules (?)

L'idée serait d'avoir toujours, pour l'affichage de la cellule, un
"remplissage" qui commence par le 1er chiffre de gauche... et qui après
le
13ème chiffre insère un / Je précise, par ailleurs que le contenu de
cette
cellule est exploité, soit pour déterminer le sexe et donc les formules
de
politesse correspondantes, soit pour déterminer un âge approché en
l'absence
de la date de naissance.

J'ai peur d'avoir trouvé un gros os qui est peut-être même en silex
!Attention aux dents...

L'usage d'une macro ne m'apporterais malheureusement pas ce que je
veux,
car
des N° SS continuerons à être rentrés dans le fichier, et avec toujours
les
même problèmes potentiels...

Merci à tous pour vos idées

Antoine



--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr





Avatar
Modeste
Bonsour® Pounet95 avec ferveur ;o))) vous nous disiez :

<< L'usage d'une macro ne m'apporterais malheureusement pas ce que je
veux,
car des N° SS continuerons à être rentrés dans le fichier, et avec
toujours
les même problèmes potentiels... >>


;o)))
c'est vrai Excel n'est pas devin et ne peut mettre les chiffres manquant
on pourrait controler le sexe 1 ou 2 ( je ne sais si la Sécu utilise
d'autres chiffres ;o)))
je ne sais non plus différencier une personne née en 1905 d'une née en 2005
???
mais la détection du N° de mois et recalcul de la clé sont éventuellement
possibles
le n° de département 99 c'est pour les étrangers
le N° de commune INSEE peut etre controlé dans une table (35xxx communes
;o)))
ex : INSEE 95491 anct 78491 commune CodePostal 95130

j'avais pourtant noté :
' --- Usage VBA possible : Cells(x,y)=N_SS(Cells(w,z))



une peite boucle sur la plage considérée

for each Cellule in Laplage
Cellule=N_SS(Cellule)
next

à inclure dans un evenement de feuille ou de classeur (pourquoi pas ??
WorkBook_Open ou Close)


--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr


Avatar
Antoine76
Merci à tous

J'ai testée la fonction fournie par Modeste qui fonctionne parfaitement.
Pour contourner le problème d'application aux futures données qui seront
entrées, je vais la mettre dans une boucle en Auto_Open, ce qui remplira
99.99 % du "formatage", le 100 % pouvant être par activation de la macro sur
appel d'un bouton...

Merci à tous

Antoine

"Pounet95" a écrit dans le message de news:
#v6t$
Salut Modeste,
OK, mais j'ai cru comprendre que
<< L'usage d'une macro ne m'apporterais malheureusement pas ce que je
veux,

car des N° SS continuerons à être rentrés dans le fichier, et avec
toujours

les même problèmes potentiels... >>

ALors, amha, en partant de ce format et en l'incorporant dans une MEFC, il
devrait avoir moyen de faire
avec quelques tests sur le nbre de caractères par exemple.
Qu'en penses-tu ?

Bonne journée
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Modeste" a écrit dans le message de news:

Bonsour® Pounet95 avec ferveur ;o))) vous nous disiez :

J'ai pas essayé .....
menu Format / Spécial et Numéro Sécurité Sociale ?


en effet mais cela ne s'applique qu'a des n°SS corrects et complets
;o)))



;o))) alors allons-y d'une petite fonction personnalisée
avec en bonus quand c'est possible
recalcul de clé
indication mois incorrect

Utilisation :
A1 B1 =N_SS(A1)
1-5702- 95/491002 1 57 02 95 491 002 18
2 57 02 95 491 002 2 57 02 95 491 002 18
1570295491 1 57 02 95 491 ??? xx
2572295491032/46 2 57 22 95 491 032 17 !! mois incorrect !!


Function N_SS(target)
' --- ne s'applique qu'aux N°SS Français
' --- Usage VBA possible : Cells(x,y)=N_SS(Cells(w,z))
numeros = "0123456789"
SS = ""
For i = 1 To Len(target)
If InStr(numeros, Mid(target, i, 1)) <> 0 Then
SS = SS & Mid(target, i, 1)
End If
Next
' --- re-calcul de la clé
If Len(SS) >= 13 Then
NumSS = CDbl(Left(SS, 13))
cle = 97 - (NumSS - 97 * Int(NumSS / 97))
Else
cle = "xx"
End If
' --- formatage résultat avec caractère insecable (Chr(160)
N_SS = ""
' --- pour etre sûr de traiter 13 caractères
SS = SS & " "
For i = 1 To 13
n = Mid(SS, i, 1)
N_SS = N_SS & IIf(InStr(numeros, n) <> 0, n, "?")
Select Case i
Case 1, 3, 5, 7, 10
N_SS = N_SS & Chr(160)
End Select
Next
'--- ajout de la clé avec caractère insécable chr(160)
N_SS = N_SS & Chr(160) & Format(cle, "00")
'--- controle du N° de mois
If CInt(Mid(N_SS, 6, 2)) > 12 Then N_SS = N_SS & " !! mois incorrect !!"
End Function:




"Antoine76" a écrit dans le message de news:

Bonjour à tous

Je suis bloqué dans la recherche d'une solution pour
"l'harmonisation"




de
l'affichage des numéros de sécurité sociale (français) à la
problématique
suivante :
De nombreux fichiers contiennent, toujours en colonne B, les N° SS.
Le




problème est que ces numéros ont été rentrés de manière "non
standardisée",
voulant dire par là que
- les numéros ont toujours été rentrés avec espaces(1 23 45 67
789...),




- et avec un "/" lorsque les 2 chiffres de la clé étaient
fournis(sinon




sans
le /, ni les 2 chiffres),
- et que parfois, même la totalité des 13 chiffres de base, car
parfois




il
n'en a été communiqué que 7 ou 10 premiers chiffres (ou...).

L'objectif serait,
- d'utiliser une MEFC pour le format de la cellule
(#""##""##""##""###""###" ou #""##""##""##""###""###"/"##")
ce qui ne semble pas possible avec ma version d'Excel 2000,
- à défaut, d'intégrer des formules dans le format personnalisé de
ces




cellules (?)

L'idée serait d'avoir toujours, pour l'affichage de la cellule, un
"remplissage" qui commence par le 1er chiffre de gauche... et qui
après




le
13ème chiffre insère un / Je précise, par ailleurs que le contenu de
cette
cellule est exploité, soit pour déterminer le sexe et donc les
formules




de
politesse correspondantes, soit pour déterminer un âge approché en
l'absence
de la date de naissance.

J'ai peur d'avoir trouvé un gros os qui est peut-être même en silex
!Attention aux dents...

L'usage d'une macro ne m'apporterais malheureusement pas ce que je
veux,
car
des N° SS continuerons à être rentrés dans le fichier, et avec
toujours




les
même problèmes potentiels...

Merci à tous pour vos idées

Antoine



--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr








Avatar
Antoine76
Petite précision que je voulais donner et qui m'a échappée : il existe bien
des N° SS qui commencent par autre chose que des 1 ou des 2;
Il y a le 3 par exemple ;
Non ! Non ! Ce n'est pas pour ceux qui sont atteint du syndrome de Turner
(anomalie génétique lors de la fécondation, qui fait que l'individu se
retrouve, pour la 23ème paire de chromosomes, avec un chromosome X tout
seul, et pas de 2ème X ou Y, c'est à dire ni homme (au sens génétique c'est
à dire un X ET un Y) et ni femme (c'est à dire une PAIRE de chromosome X);
ils ont une morphologie plutôt féminine, avec un développement mammaire
plutôt féminin, une allure un peu enrobée et une apparence de vieillissement
accélérée... Fin de l'écart !)) Le 3, qui n'est pas rare, est peut-être pour
ceux qui ont un statut vis à vis de l'INSEE qui est stable et donc
pérenne(??).
Il y a aussi des 7, moins fréquents pour ...? et aussi des 8 encore plus
rares (réfugiés politiques en instance d'asile ???)
Le seul problème(informatiquement parlant bien sûr !) avec les 3, les 7, les
8, et éventuellement les autres, c'est que l'on ne peut pas "en déterminer"
le sexe !... pour exploitation honorable (était-il nécessaire de préciser ?)

Antoine
"Pounet95" a écrit dans le message de news:
#v6t$
Salut Modeste,
OK, mais j'ai cru comprendre que
<< L'usage d'une macro ne m'apporterais malheureusement pas ce que je
veux,

car des N° SS continuerons à être rentrés dans le fichier, et avec
toujours

les même problèmes potentiels... >>

ALors, amha, en partant de ce format et en l'incorporant dans une MEFC, il
devrait avoir moyen de faire
avec quelques tests sur le nbre de caractères par exemple.
Qu'en penses-tu ?

Bonne journée
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Modeste" a écrit dans le message de news:

Bonsour® Pounet95 avec ferveur ;o))) vous nous disiez :

J'ai pas essayé .....
menu Format / Spécial et Numéro Sécurité Sociale ?


en effet mais cela ne s'applique qu'a des n°SS corrects et complets
;o)))



;o))) alors allons-y d'une petite fonction personnalisée
avec en bonus quand c'est possible
recalcul de clé
indication mois incorrect

Utilisation :
A1 B1 =N_SS(A1)
1-5702- 95/491002 1 57 02 95 491 002 18
2 57 02 95 491 002 2 57 02 95 491 002 18
1570295491 1 57 02 95 491 ??? xx
2572295491032/46 2 57 22 95 491 032 17 !! mois incorrect !!


Function N_SS(target)
' --- ne s'applique qu'aux N°SS Français
' --- Usage VBA possible : Cells(x,y)=N_SS(Cells(w,z))
numeros = "0123456789"
SS = ""
For i = 1 To Len(target)
If InStr(numeros, Mid(target, i, 1)) <> 0 Then
SS = SS & Mid(target, i, 1)
End If
Next
' --- re-calcul de la clé
If Len(SS) >= 13 Then
NumSS = CDbl(Left(SS, 13))
cle = 97 - (NumSS - 97 * Int(NumSS / 97))
Else
cle = "xx"
End If
' --- formatage résultat avec caractère insecable (Chr(160)
N_SS = ""
' --- pour etre sûr de traiter 13 caractères
SS = SS & " "
For i = 1 To 13
n = Mid(SS, i, 1)
N_SS = N_SS & IIf(InStr(numeros, n) <> 0, n, "?")
Select Case i
Case 1, 3, 5, 7, 10
N_SS = N_SS & Chr(160)
End Select
Next
'--- ajout de la clé avec caractère insécable chr(160)
N_SS = N_SS & Chr(160) & Format(cle, "00")
'--- controle du N° de mois
If CInt(Mid(N_SS, 6, 2)) > 12 Then N_SS = N_SS & " !! mois incorrect !!"
End Function:




"Antoine76" a écrit dans le message de news:

Bonjour à tous

Je suis bloqué dans la recherche d'une solution pour
"l'harmonisation"




de
l'affichage des numéros de sécurité sociale (français) à la
problématique
suivante :
De nombreux fichiers contiennent, toujours en colonne B, les N° SS.
Le




problème est que ces numéros ont été rentrés de manière "non
standardisée",
voulant dire par là que
- les numéros ont toujours été rentrés avec espaces(1 23 45 67
789...),




- et avec un "/" lorsque les 2 chiffres de la clé étaient
fournis(sinon




sans
le /, ni les 2 chiffres),
- et que parfois, même la totalité des 13 chiffres de base, car
parfois




il
n'en a été communiqué que 7 ou 10 premiers chiffres (ou...).

L'objectif serait,
- d'utiliser une MEFC pour le format de la cellule
(#""##""##""##""###""###" ou #""##""##""##""###""###"/"##")
ce qui ne semble pas possible avec ma version d'Excel 2000,
- à défaut, d'intégrer des formules dans le format personnalisé de
ces




cellules (?)

L'idée serait d'avoir toujours, pour l'affichage de la cellule, un
"remplissage" qui commence par le 1er chiffre de gauche... et qui
après




le
13ème chiffre insère un / Je précise, par ailleurs que le contenu de
cette
cellule est exploité, soit pour déterminer le sexe et donc les
formules




de
politesse correspondantes, soit pour déterminer un âge approché en
l'absence
de la date de naissance.

J'ai peur d'avoir trouvé un gros os qui est peut-être même en silex
!Attention aux dents...

L'usage d'une macro ne m'apporterais malheureusement pas ce que je
veux,
car
des N° SS continuerons à être rentrés dans le fichier, et avec
toujours




les
même problèmes potentiels...

Merci à tous pour vos idées

Antoine



--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr








Avatar
Pounet95
Re,
Je ne sais pas répondre au problème mais au moins là c'est de l'info.
J'étais persuadé que le n° de SS ne pouvait commencer que par 1 ou 2.
Il y a là matière à claer quelques grosses têtes, je pense

Bon réveillon et à l'Année prochaine.

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Antoine76" a écrit dans le message de news:

Petite précision que je voulais donner et qui m'a échappée : il existe
bien
des N° SS qui commencent par autre chose que des 1 ou des 2;
Il y a le 3 par exemple ;
Non ! Non ! Ce n'est pas pour ceux qui sont atteint du syndrome de Turner
(anomalie génétique lors de la fécondation, qui fait que l'individu se
retrouve, pour la 23ème paire de chromosomes, avec un chromosome X tout
seul, et pas de 2ème X ou Y, c'est à dire ni homme (au sens génétique
c'est
à dire un X ET un Y) et ni femme (c'est à dire une PAIRE de chromosome X);
ils ont une morphologie plutôt féminine, avec un développement mammaire
plutôt féminin, une allure un peu enrobée et une apparence de
vieillissement
accélérée... Fin de l'écart !)) Le 3, qui n'est pas rare, est peut-être
pour
ceux qui ont un statut vis à vis de l'INSEE qui est stable et donc
pérenne(??).
Il y a aussi des 7, moins fréquents pour ...? et aussi des 8 encore plus
rares (réfugiés politiques en instance d'asile ???)
Le seul problème(informatiquement parlant bien sûr !) avec les 3, les 7,
les
8, et éventuellement les autres, c'est que l'on ne peut pas "en
déterminer"
le sexe !... pour exploitation honorable (était-il nécessaire de préciser
?)

Antoine
"Pounet95" a écrit dans le message de news:
#v6t$
Salut Modeste,
OK, mais j'ai cru comprendre que
<< L'usage d'une macro ne m'apporterais malheureusement pas ce que je
veux,

car des N° SS continuerons à être rentrés dans le fichier, et avec
toujours

les même problèmes potentiels... >>

ALors, amha, en partant de ce format et en l'incorporant dans une MEFC,
il
devrait avoir moyen de faire
avec quelques tests sur le nbre de caractères par exemple.
Qu'en penses-tu ?

Bonne journée
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Modeste" a écrit dans le message de news:

Bonsour® Pounet95 avec ferveur ;o))) vous nous disiez :

J'ai pas essayé .....
menu Format / Spécial et Numéro Sécurité Sociale ?


en effet mais cela ne s'applique qu'a des n°SS corrects et complets
;o)))



;o))) alors allons-y d'une petite fonction personnalisée
avec en bonus quand c'est possible
recalcul de clé
indication mois incorrect

Utilisation :
A1 B1 =N_SS(A1)
1-5702- 95/491002 1 57 02 95 491 002 18
2 57 02 95 491 002 2 57 02 95 491 002 18
1570295491 1 57 02 95 491 ??? xx
2572295491032/46 2 57 22 95 491 032 17 !! mois incorrect !!


Function N_SS(target)
' --- ne s'applique qu'aux N°SS Français
' --- Usage VBA possible : Cells(x,y)=N_SS(Cells(w,z))
numeros = "0123456789"
SS = ""
For i = 1 To Len(target)
If InStr(numeros, Mid(target, i, 1)) <> 0 Then
SS = SS & Mid(target, i, 1)
End If
Next
' --- re-calcul de la clé
If Len(SS) >= 13 Then
NumSS = CDbl(Left(SS, 13))
cle = 97 - (NumSS - 97 * Int(NumSS / 97))
Else
cle = "xx"
End If
' --- formatage résultat avec caractère insecable (Chr(160)
N_SS = ""
' --- pour etre sûr de traiter 13 caractères
SS = SS & " "
For i = 1 To 13
n = Mid(SS, i, 1)
N_SS = N_SS & IIf(InStr(numeros, n) <> 0, n, "?")
Select Case i
Case 1, 3, 5, 7, 10
N_SS = N_SS & Chr(160)
End Select
Next
'--- ajout de la clé avec caractère insécable chr(160)
N_SS = N_SS & Chr(160) & Format(cle, "00")
'--- controle du N° de mois
If CInt(Mid(N_SS, 6, 2)) > 12 Then N_SS = N_SS & " !! mois incorrect
!!"
End Function:




"Antoine76" a écrit dans le message de news:

Bonjour à tous

Je suis bloqué dans la recherche d'une solution pour
"l'harmonisation"




de
l'affichage des numéros de sécurité sociale (français) à la
problématique
suivante :
De nombreux fichiers contiennent, toujours en colonne B, les N° SS.
Le




problème est que ces numéros ont été rentrés de manière "non
standardisée",
voulant dire par là que
- les numéros ont toujours été rentrés avec espaces(1 23 45 67
789...),




- et avec un "/" lorsque les 2 chiffres de la clé étaient
fournis(sinon




sans
le /, ni les 2 chiffres),
- et que parfois, même la totalité des 13 chiffres de base, car
parfois




il
n'en a été communiqué que 7 ou 10 premiers chiffres (ou...).

L'objectif serait,
- d'utiliser une MEFC pour le format de la cellule
(#""##""##""##""###""###" ou #""##""##""##""###""###"/"##")
ce qui ne semble pas possible avec ma version d'Excel 2000,
- à défaut, d'intégrer des formules dans le format personnalisé de
ces




cellules (?)

L'idée serait d'avoir toujours, pour l'affichage de la cellule, un
"remplissage" qui commence par le 1er chiffre de gauche... et qui
après




le
13ème chiffre insère un / Je précise, par ailleurs que le contenu de
cette
cellule est exploité, soit pour déterminer le sexe et donc les
formules




de
politesse correspondantes, soit pour déterminer un âge approché en
l'absence
de la date de naissance.

J'ai peur d'avoir trouvé un gros os qui est peut-être même en silex
!Attention aux dents...

L'usage d'une macro ne m'apporterais malheureusement pas ce que je
veux,
car
des N° SS continuerons à être rentrés dans le fichier, et avec
toujours




les
même problèmes potentiels...

Merci à tous pour vos idées

Antoine



--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr












Avatar
Antoine76
pour être plus précis, je "penserai" (...) que le 3 serait pour ceux
étrangers et nés sur un sols étranger
le 7 pour les Français de l'étranger et qui n'avaient pas encore été
enregistré INSEE, et le 8 pour les étrangers temporaires, en instance de ?
mais qui auraient néanmoins le droit de travailler. En effet, tout ce que
j'écris ici est on ne peut plus subjectif, et est basé sur la vision de
fichiers qui comportent peut-être au total 50 000 N° SS, mais dans tous les
cas de personnes qui ont travaillé officiellement et légalement pour des
entreprises du secteur privé, majoritairement sur la région parisienne.

Je ne saurais ajouter mot !

Antoine

"Antoine76" a écrit dans le message de news:

Petite précision que je voulais donner et qui m'a échappée : il existe
bien

des N° SS qui commencent par autre chose que des 1 ou des 2;
Il y a le 3 par exemple ;
Non ! Non ! Ce n'est pas pour ceux qui sont atteint du syndrome de Turner
(anomalie génétique lors de la fécondation, qui fait que l'individu se
retrouve, pour la 23ème paire de chromosomes, avec un chromosome X tout
seul, et pas de 2ème X ou Y, c'est à dire ni homme (au sens génétique
c'est

à dire un X ET un Y) et ni femme (c'est à dire une PAIRE de chromosome X);
ils ont une morphologie plutôt féminine, avec un développement mammaire
plutôt féminin, une allure un peu enrobée et une apparence de
vieillissement

accélérée... Fin de l'écart !)) Le 3, qui n'est pas rare, est peut-être
pour

ceux qui ont un statut vis à vis de l'INSEE qui est stable et donc
pérenne(??).
Il y a aussi des 7, moins fréquents pour ...? et aussi des 8 encore plus
rares (réfugiés politiques en instance d'asile ???)
Le seul problème(informatiquement parlant bien sûr !) avec les 3, les 7,
les

8, et éventuellement les autres, c'est que l'on ne peut pas "en
déterminer"

le sexe !... pour exploitation honorable (était-il nécessaire de préciser
?)


Antoine
"Pounet95" a écrit dans le message de news:
#v6t$
Salut Modeste,
OK, mais j'ai cru comprendre que
<< L'usage d'une macro ne m'apporterais malheureusement pas ce que je
veux,

car des N° SS continuerons à être rentrés dans le fichier, et avec
toujours

les même problèmes potentiels... >>

ALors, amha, en partant de ce format et en l'incorporant dans une MEFC,
il


devrait avoir moyen de faire
avec quelques tests sur le nbre de caractères par exemple.
Qu'en penses-tu ?

Bonne journée
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Modeste" a écrit dans le message de news:

Bonsour® Pounet95 avec ferveur ;o))) vous nous disiez :

J'ai pas essayé .....
menu Format / Spécial et Numéro Sécurité Sociale ?


en effet mais cela ne s'applique qu'a des n°SS corrects et complets
;o)))



;o))) alors allons-y d'une petite fonction personnalisée
avec en bonus quand c'est possible
recalcul de clé
indication mois incorrect

Utilisation :
A1 B1 =N_SS(A1)
1-5702- 95/491002 1 57 02 95 491 002 18
2 57 02 95 491 002 2 57 02 95 491 002 18
1570295491 1 57 02 95 491 ??? xx
2572295491032/46 2 57 22 95 491 032 17 !! mois incorrect !!


Function N_SS(target)
' --- ne s'applique qu'aux N°SS Français
' --- Usage VBA possible : Cells(x,y)=N_SS(Cells(w,z))
numeros = "0123456789"
SS = ""
For i = 1 To Len(target)
If InStr(numeros, Mid(target, i, 1)) <> 0 Then
SS = SS & Mid(target, i, 1)
End If
Next
' --- re-calcul de la clé
If Len(SS) >= 13 Then
NumSS = CDbl(Left(SS, 13))
cle = 97 - (NumSS - 97 * Int(NumSS / 97))
Else
cle = "xx"
End If
' --- formatage résultat avec caractère insecable (Chr(160)
N_SS = ""
' --- pour etre sûr de traiter 13 caractères
SS = SS & " "
For i = 1 To 13
n = Mid(SS, i, 1)
N_SS = N_SS & IIf(InStr(numeros, n) <> 0, n, "?")
Select Case i
Case 1, 3, 5, 7, 10
N_SS = N_SS & Chr(160)
End Select
Next
'--- ajout de la clé avec caractère insécable chr(160)
N_SS = N_SS & Chr(160) & Format(cle, "00")
'--- controle du N° de mois
If CInt(Mid(N_SS, 6, 2)) > 12 Then N_SS = N_SS & " !! mois incorrect
!!"



End Function:




"Antoine76" a écrit dans le message de news:

Bonjour à tous

Je suis bloqué dans la recherche d'une solution pour
"l'harmonisation"




de
l'affichage des numéros de sécurité sociale (français) à la
problématique
suivante :
De nombreux fichiers contiennent, toujours en colonne B, les N° SS.
Le




problème est que ces numéros ont été rentrés de manière "non
standardisée",
voulant dire par là que
- les numéros ont toujours été rentrés avec espaces(1 23 45 67
789...),




- et avec un "/" lorsque les 2 chiffres de la clé étaient
fournis(sinon




sans
le /, ni les 2 chiffres),
- et que parfois, même la totalité des 13 chiffres de base, car
parfois




il
n'en a été communiqué que 7 ou 10 premiers chiffres (ou...).

L'objectif serait,
- d'utiliser une MEFC pour le format de la cellule
(#""##""##""##""###""###" ou #""##""##""##""###""###"/"##")
ce qui ne semble pas possible avec ma version d'Excel 2000,
- à défaut, d'intégrer des formules dans le format personnalisé de
ces




cellules (?)

L'idée serait d'avoir toujours, pour l'affichage de la cellule, un
"remplissage" qui commence par le 1er chiffre de gauche... et qui
après




le
13ème chiffre insère un / Je précise, par ailleurs que le contenu
de





cette
cellule est exploité, soit pour déterminer le sexe et donc les
formules




de
politesse correspondantes, soit pour déterminer un âge approché en
l'absence
de la date de naissance.

J'ai peur d'avoir trouvé un gros os qui est peut-être même en silex
!Attention aux dents...

L'usage d'une macro ne m'apporterais malheureusement pas ce que je
veux,
car
des N° SS continuerons à être rentrés dans le fichier, et avec
toujours




les
même problèmes potentiels...

Merci à tous pour vos idées

Antoine



--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr