Anonymiser des N° de téléphone

Fermé
Tessel75 - 18 nov. 2014 à 18:00
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 - 19 nov. 2014 à 01:47
Bonjour,
Qui serait intéressé à m'aider à écrire un petit code pour convertir des chiffres en lettres? Il s'agit en la circonstance d'anonymiser des N° de téléphone qui n'ont pas nécessité à être conservés en clairs.
L'idée serait d'avoir un processus aléatoire qui convertisse chaque chiffre en une lettre quelconque de sorte qu'il ne soit plus reconnaissable mais néanmoins utilisable pour une exploitation statistique.
Avec mes remerciements pour vos propositions.


11 réponses

Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
Modifié par Mike-31 le 18/11/2014 à 18:42
Bonsoir,

Sur quelle application et quelle version

et dans quoi veux tu crypter tes saisies, texbox, inputbox, une cellule ?

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Merci de ta réponse.
La version utilisée sera, au moins pour le moment, E2003, mais ce pourra être du E2010.
Parler de cryptage est un bien grand mot. Il s'agit simplement de convertir un N° comme 0123456789 en ABCDEFGHIJ. La zone de conversion sera une cellule normale avant l'importation du tableau dans une table Access.
Ma demande est la suite de ma question précédente
http://www.commentcamarche.net/forum/affich-31068767-comptage-des-repetitions-dans-un-tableau

Ma 1ère idée est d'avoir un processus itératif sur i = 1, 2, 3 ...etc menant à une formule du genre alpha = Alea(1 à 24) puis une conversion de alpha en une lettre A, B, C ..., et enfin le remplacement du chiffre du N°.

Quand j'aurai un début je ne manquerai pas de l'envoyer.
0
Re-Bonjour Mike,
je t'adresse mon travail. Si tu as, ou si quiconque d'autre, quelque chose de meilleur ce sera le bien venu.
Dim ca As Variant
For i = 0 To 9
ca = Application.WorksheetFunction.RandBetween(0, 26)
If ca = 1 Then
ca = "a"
ElseIf ca = 2 Then ca = "b"
ElseIf ca = 3 Then ca = "c"
ElseIf ca = 4 Then ca = "d"
..................................................
ElseIf ca = 24 Then ca = "x"
ElseIf ca = 25 Then ca = "y"
ElseIf ca = 26 Then ca = "z"
End If
Columns("J:J").Select
Selection.Replace What:=i, Replacement:=ca, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next
End Sub
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
18 nov. 2014 à 20:54
Bonsoir,

attention, il faut que la séquence aléatoire soit sans répétition.
sinon tu fausseras les calculs statistiques.

cdlt
0
Merci pour l'intérêt à la question posée.
Oui bien sûr, j'y ai pensé. Mais quelle est probabilité pour que la même lettre sorte 2 fois sur 9 tirages d'un choix de 26 possibilités? Et quelle probabilité pour que si la même lettre sort 2 fois elle engendre la même séquence de lettres, ou autrement dit le même mot.
Si la 1ère probabilité n'est pas nulle, la seconde peut être considérée comme négligeable.
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
18 nov. 2014 à 22:09
Bonsoir,

tu peux remplacer ta séquence de "if then elseif ...." par
ca = Chr(Asc("a") + Application.WorksheetFunction.RandBetween(0, 25))


cdlt
0
Merci ! C'est exactement le genre d'expression dont j'avais besoin et que je recherchais. Je n'étais pas du tout satisfait de ma boucle "If ... Then ...". Je considère la question comme résolue. Je la laisse ouverte encore un peu, le temps de recevoir les autres réponses possibles.
Merci
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
18 nov. 2014 à 20:44
Re,

alors pour crypter les numéros d'une colonne, tu n'as pas besoin d'aucun code.

déjà pour afficher un code postal surtout pour les numéros commençant par 0 comme 0555655566 il faut lui affecter la syntaxe code postal si non le zéro de départ ne sera pas pris en compte.
pour cela surbriller la plage concernée exemple F2:F100, clic droit sur la sélection/Format de cellule/onglet nombre/Spécial/numéro de téléphone

Maintenant pour crypter les numéros surbriller la plage exemple F2:F100, clic droit sur la sélection/Format de cellule/onglet nombre/Personnalisé/dans type saisir ce code pour avoir des étoiles "**********"
pour avoir des dièses "##########"

ou pour avoir que des zéros "0000000000"
ou pour avoir ABCDEFGHIJ saisir ce format "ABCDEFGHIJ"

pour réafficher les numéros surbriller la plage concernée exemple F2:F100, clic droit sur la sélection/Format de cellule/onglet nombre/Spécial/numéro de téléphone

pour éviter qu'un utilisateur découvre comment afficher les numéros, protège la feuille après avoir déverrouillé les cellule que doivent rester accessibles
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour
si tes numero de telephone se trouve dans la colonne B

Sub TestTelephone()
Derlig = Range("B" & Rows.Count).End(xlUp).Row
For L = 2 To Derlig
Tel = ""
A = 65
For I = 1 To Len(Range("B" & L).Value)
T = Chr(Mid(Range("B" & L).Value, I, 1) + A)
Tel = Tel & T
Next
Range("C" & L).Value = Tel
Next
End Sub

A+
Maurice
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
18 nov. 2014 à 21:09
Bonjour,

utiliser le même code pour toute une liste me parait léger.
Il suffit de connaitre 2-3 N° de personnes pour tous les retrouver à mon avis.

Mike, avec le format personnalisé c'est vrai qu'on voit des **** mais va falloir supprimer la barre de formule et le double-clic ;-)

eric
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
Modifié par Mike-31 le 18/11/2014 à 21:47
Re,

Pour ne pas afficher les données dans la barre des formules, il suffit de sélectionner la plage, clic droit/Format de cellule/onglet protection et cocher Masquée, ensuite protéger la feuille et même si on autorise l'activation des cellules verrouillées la barre des formules reste blanche

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Merci à tous,
Pour aider à vous faire toucher du doigt mon problème je vous remets un extrait du tableau initial. http://cjoint.com/?3Krb0g9Jp4d
Les N° de tel sont sur la colonne J ("CallCLID"). J'y ai masqué les N° à la main avec des correspondances chiffre-lettre sorties de ma tête.

Eric, tu écris : "Il suffit de connaitre 2-3 N° de personnes pour tous les retrouver à mon avis. ". Ta remarque est très forte et bien vue, mais je ne fais pas du cryptage à proprement parlé, plutôt du masquage parce que la lecture directe des N° en clair ne présente aucun intérêt à ce niveau. Il s'agit de personnes qui appellent pour demander un rendez-vous; la compilation que je souhaite avoir est juste limitée à des calculs statistiques, entre autres combien d'appels effectifs avant d'obtenir une réponse, ou combien de personnes différentes ont appelées. La liste des N° n'est pas un trésor de guerre qui est menacé d'une exploitation extérieure parce qu'elle n'est pas destinée à être diffusée.
Mike: le simple changement de format ne suffit pas parce que le tableau est destiné à être chargé sur une table Access pour être recraché ensuite à des fins d'exploitation statistique. Le masquage a donc besoin d'être permanent quitte à ce que les vrais N° soient définitivement perdus. Pour ce pourquoi c'est fait, cela n'a aucune importance.
Maurice: peux-tu expliciter ta ligne :"T = Chr(Mid(Range("B" & L).Value, I, 1) + A) " . J'avoue que j'ai vraiment du mal à la comprendre. Quelle transformation opère-t-elle?
Encore Merci.
0
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
Modifié par Raymond PENTIER le 18/11/2014 à 22:45
Oui, Tessel75, je peux effectivement proposer une solution sans macro, avec la formule =SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(A:A;1;"U");2;"D");3;"T"); 4;"Q");5;"C");6;"S");7;"P");8;"H");9;"N");0;"Z") en colonne B ...
Bien entendu, tu mets les lettres que tu veux à la place des miennes !
Attention : ne fonctionne pas avec Excel 2003 ...

Cordialement.

C'est bien, la retraite ! Surtout aux Antilles ... :-)
Raymond (INSA, AFPA, CF/R)
0
Merci Raymond. Mais ta solution est un peu lourde; celle de JvDo correspond exactement à ce que je recherchais. J'en ai profité pour en extraire une fonction personnelle que je propose au forum : X = AleaAlpha(z) avec :
Function AleaAlpha(z)
AleaAlpha = Chr(Asc("a") + Application.WorksheetFunction.RandBetween(0, 25))
End Function

Elle extrait une lettre aléatoire sur le même modèle que X=ALEA.ENTRE.BORNES(0;25) pour les nombres
Bonne suite à tous.
Question résolue.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié par eriiic le 18/11/2014 à 23:28
Tu ne devais pas faire de stat sur combien de personnes différentes ont appelé ?
Là j'ai l'impression qu'un même chiffre sera codé différemment à chaque fois. Un même n° n'aura jamais le même codage non ?
Il te faut créer une table de codage une fois au début et la garder pour traiter toute la liste.

eric

PS: sans oublier de traiter les doublons. Deux chiffres ne doivent pas avoir le même code.

eric
0
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
18 nov. 2014 à 23:52
Oui, ma solution manque d'élégance ; mais ne manipulant pas VBA, je ne peux proposer de réponses qu'avec des outils classiques et des fonctions basiques.
Je suis quand même content d'avoir réussi à imbriquer convenablement mes SUBSTITUE pour obtenir un résultat répondant exactement à ta demande (contrairement à ta fonction personnelle dont Eric t'a montré les contraintes).
Salut à tous.
0
Salut Raymond, je n'avais lu ta réponse quand je rédigeais mon laius. Oui ta réponse répond à la question. Quant à ta manipulation des "outils classiques et des fonctions basiques", je serai également bien satisfait d'en avoir la même habileté et la même sureté. Pour ce qui est du VBA, je n'ai toujours pas compris pourquoi tu ne t'y étais collé. A l'heure du punch, par exemple !?!?!?
Bonne journée.
0
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
19 nov. 2014 à 01:47
Tu as raison ; je vais finir par m'y mettre : en effet ma petite-fille, lycéenne, a besoin de mes lumières pour ses exercices d'algoritmique, ce qui n'existait pas dans les programmes il y a 60 ans. Et j'ai pu en constater la grande ressemblance avec VBA.
Du coup je serai contraint de plonger dans le grand bain des macros !
Mais cela n'aura aucune incidence sur ma relation privilégiée avec le petit punch des Antilles ...
0
Je te remets l'introduction que j'avais écrite pour ma première question sur le même sujet :
http://www.commentcamarche.net/forum/affich-31068767-comptage-des-repetitions-dans-un-tableau :
"Je reviens avec mon problème de standard téléphonique. J'ai un tableau de données représentant les appels téléphoniques adressés à une grande entreprise. Comme les appels n'aboutissent pas toujours dès la première fois, les correspondants appellent plusieurs fois jusqu'à ce qu'ils aboutissent. Je voudrais compter le nombre d'appels chacun a fait avant d'obtenir satisfaction. Le tableau brut me donne la date et l'heure à la seconde de chaque appel, le N°Appelé (il y a plusieurs N° possibles), le N°Appelant. J'ai classé les enregistrements (une ligne) par N°Appelant et par DateHeure. Je voudrais faire mon comptage. "
Comme tu peux voir, c'est exprès que je tiens à ce que la personne qui appelle plusieurs fois soit répertoriée autant de fois qu'elle a fait d'appels. Le même codage sur toute la colonne est même la garantie que lors du tri les mêmes N° seront bien regroupés. La seule chose qui diffèrera sera à l'occasion des différents encodages. J'extraie, ou j'extrayais, mes données toutes les 2 ou 3 semaines, alors le codage sera effectivement différent, mais comme la recherche porte sur le nombre de fois et le temps que met un correspondant pour recevoir une réponse cela ne joue vraiment que pour les appels de la même journée, et ne joue en rien pour 2 séries d'appels passées à distance. Le seul évènement pour lequel il peut arriver une distorsion est le cas où une personne appelle sans succès en fin d'après-midi, appelle à nouveau le lendemain matin, et que ce nouveau jour tombe précisément le jour où il y eu interruption et reprise des relevés pour une nouvelle période. Rapportée à plus d'une centaine de milliers d'appels par année, la distorsion, s'il y a, sera insignifiante.
Bien à toi.
0