Données anonymes sans peine.

ROGER2327

XLDnaute Barbatruc
Bonjour à tous


Sous le prétexte de confidentialité, sensibilité, voire propriété intellectuelle (!) des données, il arrive qu'il soit difficile d'obtenir un document à l'appui d'un questionnement. C"est vrai qu'il faut être prudent car le monde virtuel est dangereux.

Comme je suis feignant moi aussi, pardon, je veux dire comme je suis prudent, je me suis fabriqué un petit bidule pour neutraliser les données sensibles et confidentielles telles que le prix du kilogramme de pommes de terre, l'âge du capitaine et le cours de l'action Plumeau le quinze août mil neuf cent treize sur la place de Londres ; sans oublier CNK-18-30-TU8-000613, référence du couteau de sécurité des Établissements Déloque-Alizée Père et Fils depuis 1876. L'importance stratégique de cette référence n'échappera à personne, dès lors qu'on saura qu'il s'agit de celle du meilleur des couteaux sans lame. D'où son appellation couteau de sécurité. Appellation protégée en France, en Bretagne (quelle qu'en soit la taille), en Corse, au Pays d'Auge et dans ses contrées limitrophes, en Lorraine (tant méridionale que septentrionale, occidentale, orientale, et, bien entendu, centrale), plus généralement, dans les Restes du Monde, à l'exclusion toutefois de Cuba et de la Corée du Nord. (Il faut être raisonnable, tout de même.)

Mais je m'égare...

Mon petit bidule (et on ne ricane pas, s'il vous plait !), mon petit bidule, donc, s'applique à des données qu'on veut neutraliser.
Pour ce faire, on sélectionne une plage de cellules (qui peut être réduite à une seule cellule, mais qui peut être aussi une plage comportant des zones discontinues comme A2:A80, C2:D50, F10:AZ11. On exécute la procédure XXX.
S'il y a des formules dans la sélection, elles sont conservées.
Les dates sont conservées ou décalées de dix-neuf semaines vers le passé, au choix.
Les données textuelles sont modifiées par substitution de lettres, en conservant la casse et la ponctuation.
Les données numériques sont modifiées par substitution de chiffres, en conservant le nombre de chiffres et le signe.

Par exemple, en sélectionnant les données écrites en rouge (il y a une formule dans la quatrième colonne, pour prendre les initiales des mots de la première) :​

BOURGOIN SimonLIC.055.POD-46986,72B. S.6, rue du Quai, LE HAVRE (Seine inférieure)
DESROCHERS AdélaïdeLIC.253.ZGC33220,28D. A.Bourrique ou mulet ?
LIRETTE FernandeLIC.083.JIN0L. F.Chelou…

on obtient :​

QKYCYQJD MfzdaLIC.055.POD-98919,17Q. M.7, ylx em Jpaj, SC GBVFU (Zumrh cigéliqlvm)
ALHTXVECAD JeézwïpsLIC.253.ZGC58864,16A. J.Dahpjrohf ll jzijz ?
XFZZWNQ LeqpwjbnLIC.083.JIN0X. L.Fcjtyq…


Tout le code est dans le module Neutraliser. Je joins le fichier .bas correspondant, dans un fichier .zip car il n'est pas possible de joindre directement un fichier .bas.
On trouvera quelques commentaires sur le code dans le classeur joint.

Bien entendu, critiques, suggestions et tous commentaires sont bienvenus !



ROGER2327
#6889


Vendredi 6 Haha 141 (Sainte Tourte, lyrique et Sainte Bévue, sociologique - fête Suprême Quarte)
20 Vendémiaire An CCXXII, 7,1682h - pressoir
2013-W41-5T17:12:13Z
 

Pièces jointes

  • Neutraliser.zip
    1 KB · Affichages: 36
  • Neutraliser des données.xls
    93.5 KB · Affichages: 51
  • Neutraliser des données.xlsm
    40.7 KB · Affichages: 67
  • Neutraliser.zip
    1 KB · Affichages: 36
  • Neutraliser.zip
    1 KB · Affichages: 35

Staple1600

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Bonjour à tous, M13, 00


ROGER2327
J'espère que ton outil aura plus de succès que le mien (91 affichages) que j'avais déposé dans le salon en 2008.
https://www.excel-downloads.com/thr...r-pour-creer-des-donnees-anonymes-kdo.104960/
Je vais voir ton fichier de ce pas ;) car je ne doute pas de la beauté vbaistique que je vais y trouver.

EDITION: Le mien générait des données "bidons", le tien anonymise des données réelles.
La boucle est bouclée.
En espérant que les nouveaux membres passent leur fichier dans ton Anonymizator.
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Re , Bonjour 00, Jean-Marie

J'espère que ton outil aura plus de succès que le mien (91 affichages) que j'avais déposé dans le salon en 2008.
Lien supprimé

Ah, oui, j'avais bien aimé ton utilitaire :).

Sinon pour les liens hypertexte, il suffit de rajouter.
Code:
Sub a()
ActiveSheet.Hyperlinks.Delete
End Sub
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Bonjour à tous et merci pour vos contributions !


  • Je ne connaissais pas le travail de Staple1600 sur la question (je n'étais pas encore membre du forum à cette époque) ; c'est effectivement une autre approche intéressante.

  • La remarque de MJ13 à propos des hyperliens est fondée ! Il faut évidemment neutraliser les adresses personnelles ou tout autre lien privé.
    Mais je trouve que la solution proposée
    Code:
    Sub a()
    ActiveSheet.Hyperlinks.Delete
    End Sub
    est trop radicale.


En effet, mon projet vise à neutraliser les données sensibles (comme la référence au célèbre couteau sans lame des Établissements Déloque-Alizée Père et Fils depuis 1876) en respectant au mieux la structure de la feuille.
Cette exigence implique que les hyperliens ne soient pas systématiquement supprimés : certains peuvent être nécessaires à la résolution d'un problème, comme, par exemple des liens renvoyant à une autre cellule du même classeur.
D'autre part, il est souhaitable que si un hyperlien existe, il en reste une trace après qu'il soit neutralisé, ne serait-ce que pour informer le lecteur qu'une cellule contient normalement un lien et qu'il faut en tenir compte en cas de modification de cette cellule.


Je propose d'insérer cette ligne entre les lignes 16 et 17 du code :​
VB:
            If .Hyperlinks.Count Then Call SecretH(.Hyperlinks)
et de traiter les hyperliens par cette fonction :​
VB:
Sub SecretH(Hpl As Hyperlinks)
Dim Lig As Hyperlink
    If MsgBox("Souhaitez-vous neutraliser les hyperliens ?", vbYesNo + vbDefaultButton1, _
        "A T T E N T I O N   !") <> 6 Then Exit Sub
    For Each Lig In Hpl: Lig.Address = "": Lig.SubAddress = Lig.Parent.Address: Next
End Sub
Ce faisant, les liens neutralisés sont remplacés par un lien... ...neutre (comme disait Monsieur de La Palice).

Le code devient :​
VB:
Option Explicit

Dim DecDate As Boolean, tfDecDate As Boolean

Sub XXX()
Dim Lig As Hyperlink, Zon As Range, Cel As Range, m()
    m = Array("Voulez-vous neutraliser l", "a", " ", "plag", "e", " sélectionné", "e", " ?", _
        vbLf & vbLf & "Si oui, notez que des données peuvent être modifiées sans rémission.")
    With Selection
        If .Cells.Count = 1 Then
            m(3) = "cellul"
        ElseIf .Areas.Count > 1 Then
            m(1) = "es": m(4) = "es": m(6) = "es"
        End If
        If MsgBox(Join(m, ""), vbOKCancel + vbDefaultButton2, "A T T E N T I O N   !") = 1 Then
            DecDate = True: tfDecDate = False
            With Application: .ScreenUpdating = 0: .EnableEvents = 0: .Calculation = -4135: End With
            If .Hyperlinks.Count Then Call SecretH(.Hyperlinks)
            For Each Zon In .Areas: For Each Cel In Zon.Cells
                With Cel
                    If Not .HasFormula Then
                        If Not IsEmpty(.Value) Then
                            Select Case VarType(.Value)
                            Case 5: .Value = Secret5(.Value)
                            Case 7: .Value = Secret7(.Value)
                            Case 8: .Value = Secret8(.Value)
                            End Select
                        End If
                    End If
                End With
            Next Cel, Zon
            With Application: .Calculation = -4105: .EnableEvents = 1: .ScreenUpdating = 1: End With
            DecDate = False: tfDecDate = False
        End If
    End With
End Sub

Sub SecretH(Hpl As Hyperlinks)
Dim Lig As Hyperlink
    If MsgBox("Souhaitez-vous neutraliser les hyperliens ?", vbYesNo + vbDefaultButton1, _
        "A T T E N T I O N   !") <> 6 Then Exit Sub
    For Each Lig In Hpl: Lig.Address = "": Lig.SubAddress = Lig.Parent.Address: Next
End Sub

Function Secret5#(s$)
Dim k&, l&, c$
    If CDbl(s) <> 0# Then
        k = 1 - (Left$(s, 1) = "-")
        For l = 1 To Len(s)
            Select Case Asc(Mid$(s, l, 1))
            Case 48 To 57: If l = k Then c = c & 1 + Int(9 * Rnd()) Else c = c & Int(10 * Rnd())
            Case Else: c = c & Mid$(s, l, 1)
            End Select
        Next
    Else
        c = "0"
    End If
    Secret5 = CDbl(c)
End Function

Function Secret7(s As Date) As Date
    If DecDate Then
        DecDate = False
        If MsgBox("Souhaitez-vous décaler les dates ?", vbYesNo + vbDefaultButton2) = 6 Then tfDecDate = True
    End If
    Secret7 = s + tfDecDate * 7 * 19
End Function

Function Secret8$(s$)
Dim l&, c$
    For l = 1 To Len(s$)
        Select Case Asc(Mid$(s, l, 1))
        Case 48 To 57: c = c & Int(10 * Rnd())
        Case 65 To 90: c = c & Chr(65 + Int(26 * Rnd()))
        Case 97 To 122: c = c & Chr(97 + Int(26 * Rnd()))
        Case Else: c = c & Mid$(s, l, 1)
        End Select
    Next
    Secret8 = c
End Function

Si vous voyez d'autres choses à corriger ou modifier, je suis toujours preneur !


Bon dimanche !


ROGER2327
#6898


Dimanche 8 Haha 141 (Fête du Haha - fête Suprême Seconde)
22 Vendémiaire An CCXXII, 6,0783h - pêche
2013-W41-7T14:35:17Z
 

Pièces jointes

  • Neutraliser.zip
    1.1 KB · Affichages: 35
  • Neutraliser.zip
    1.1 KB · Affichages: 36
  • Neutraliser.zip
    1.1 KB · Affichages: 37
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Bonjour Roger

Merci Roger pour cette nouvelle version :).

Par contre j'ai un bug. Ayant supprimé les liens hypertextes, avec la nouvelle macro XXX. Mais quand je veux voir le lien hypertexte, sur XL2007, j'ai un bug et Excel cesse de fonctionner (donc à tester sur un classeur sans autres fichiers d'ouvert!).
 

ROGER2327

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Re...


Bonjour Roger

Merci Roger pour cette nouvelle version :).

Par contre j'ai un bug. Ayant supprimé les liens hypertextes, avec la nouvelle macro XXX. Mais quand je veux voir le lien hypertexte, sur XL2007, j'ai un bug et Excel cesse de fonctionner (donc à tester sur un classeur sans autres fichiers d'ouvert!).
Damned !
Là, je sèche...



ROGER2327
#6899


Dimanche 8 Haha 141 (Fête du Haha - fête Suprême Seconde)
22 Vendémiaire An CCXXII, 7,0218h - pêche
2013-W41-7T16:51:09Z
 

ROGER2327

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Re...


Re-bonjour,



Oui, Michel :), le test provoque, chez moi itou, un "bug" :(.

A bientôt :)
Pas ce problème avec Excel2010.
Je n'ai pas d'autre version pour tester.

Est-ce que ce problème se produit aussi avec un lien "normal", j'entends par là un lien non traité par ma procédure ?

Merci.​


ROGER2327
#6900


Dimanche 8 Haha 141 (Fête du Haha - fête Suprême Seconde)
22 Vendémiaire An CCXXII, 7,9403h - pêche
2013-W41-7T19:03:24Z
 

DoubleZero

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Bonjour, le Fil :), le Forum,

ROGER2327 :),

Ci-après, les résultats de quelques tests, effectués sur la plage B2:F14 de l’onglet « Copie ».

En F1 : adresse mail (toto@live.fr).

En F2 : lien hypertexte (Données originales'!A1).

Test 1 : Souhaitez-vous neutraliser les hyperliens ?

Réponse : non

Résultats :



  • toto@liver.fr devient oinl@obof.zy et le lien vers la messagerie demeure opérationnel ;


  • le lien hypertexte devient Xhfyéek jizpndxaus'!G9 et le lien vers l’onglet Données originales demeure opérationnel.

Test 2 : Souhaitez-vous neutraliser les hyperliens ?

Réponse : oui

Résultats :



  • toto@liver.fr devient oinl@obof.zy et le lien vers la messagerie est inopérant ;


  • le lien hypertexte devient Xhfyéek jizpndxaus'!G9 et le lien vers l’onglet Données originales est inopérant ;


  • Un clic droit pour tenter de modifier le lien des cellules F1 et F2 génère le message « Microsoft Office Excel a cessé de fonctionner » et provoque la fermeture d’Excel.

Mais qu'importe... Votre travail est superbe :D... comme d'habitude.

A bientôt :):)
 

ROGER2327

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Re...


(...)

Ci-après, les résultats de quelques tests, effectués sur la plage B2:F14 de l’onglet « Copie ».

En F1 : adresse mail (toto@live.fr).

En F2 : lien hypertexte (Données originales'!A1).

Test 1 : Souhaitez-vous neutraliser les hyperliens ?

Réponse : non

Résultats :



  • toto@liver.fr devient oinl@obof.zy et le lien vers la messagerie demeure opérationnel ;


  • le lien hypertexte devient Xhfyéek jizpndxaus'!G9 et le lien vers l’onglet Données originales demeure opérationnel.

Test 2 : Souhaitez-vous neutraliser les hyperliens ?

Réponse : oui

Résultats :



  • toto@liver.fr devient oinl@obof.zy et le lien vers la messagerie est inopérant ;


  • le lien hypertexte devient Xhfyéek jizpndxaus'!G9 et le lien vers l’onglet Données originales est inopérant ;


  • Un clic droit pour tenter de modifier le lien des cellules F1 et F2 génère le message « Microsoft Office Excel a cessé de fonctionner » et provoque la fermeture d’Excel.

(...)
Merci pour ce test complet.

Il donne le résultat que je visais, à l'exception de ce point :

  • Un clic droit pour tenter de modifier le lien des cellules F1 et F2 génère le message « Microsoft Office Excel a cessé de fonctionner » et provoque la fermeture d’Excel.



Cela ne se produit pas avec Excel2010.

Ce que j'aimerais savoir maintenant :

Est-ce que ce problème se produit aussi avec un lien "normal", j'entends par là un lien non traité par ma procédure ?

Merci d'avance !​


ROGER2327
#6903


Lundi 9 Haha 141 (Tautologie - Vacuation)
23 Vendémiaire An CCXXII, 4,6821h - navet
2013-W42-1T11:14:13Z
 

Discussions similaires

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 184
dernier inscrit
amiko