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

ROGER2327

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Re...

Re



Non, pas de bug au départ sur Xl2007 :).
Merci !

Je ne vois pas de solution (si ce n'est de préciser que mon code n'est pas compatible avec Excel2007).

J'ai relu l'aide à propos des nouveautés d'Excel2010. Je n'ai rien trouvé à propos des hyperliens.

Si ce n'est pas abuser, auriez-vous l'obligeance de voir ce qui se passe avec cette version de SecretH ?​
VB:
Sub SecretH(Hpl As Hyperlinks)
Dim Lig As Hyperlink, p
    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
        Set p = Lig.Parent
        Lig.Delete
        Hpl.Add Anchor:=p, Address:="", SubAddress:=p.Address
    Next
End Sub
Au lieu de modifier le lien existant, elle le détruit puis en recrée un nouveau.
Dommage collatéral : Avec la destruction du lien, Bill offre en prime la destruction de la mise en forme de la cellule...​


À suivre...


ROGER2327
#6904


Lundi 9 Haha 141 (Tautologie - Vacuation)
23 Vendémiaire An CCXXII, 5,0673h - navet
2013-W42-1T12:09:42Z
 

DoubleZero

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Re-bonjour,

... ce qui se passe avec cette version de SecretH ?..

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

Si, toutefois, la macro devient :

Code:
Sub SecretH(Hpl As Hyperlinks)
Dim Lig As Hyperlink, p
    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
        Set p = Lig.Parent
        Lig.Delete
    Next
End Sub

chaque lien est détruit et l’insertion de tout nouveau lien, par clic droit, ne provoque aucune fermeture intempestive d’Excel.

A bientôt :):)
 

ROGER2327

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Re...


À DoubleZero : merci encore pour cette contribution.

Il ne reste plus qu'à trouver le changement d'Excel2007 à Excel2010 qui explique la différence de comportement de la procédure entre les deux versions.

Je n'ai aucune idée sur la question. Comme la seule version d'Excel que je possède est la version 2010, je n'ai guère de chance de résoudre seul ce problème.

D'où : Appel à toutes les bonnes volontés. S'il vient une bonne idée à quelqu'un(e), je prends !

Pas de réaction du côté des utilisateurs d'autres versions : veut-ce dire que le problème ne touche qu'Excel2007 ou qu'aucun utilisateur des versions 97, 2003, 2013 n'a testé la chose ?
Dans la deuxième hypothèse, tout retour d'expérience est bienvenu !

Merci d'avance.​


Bonne soirée.


ROGER2327
#6909


Lundi 9 Haha 141 (Tautologie - Vacuation)
23 Vendémiaire An CCXXII, 7,0728h - navet
2013-W42-1T16:58:29Z
 

MJ13

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Re

Roger: Tu ne te prends pas un peu la tête avec ces histoires. Vu que tu veux anonymiser les données. Le code que j'avais fourni devrait suffire. Je l'avais testé et je n'avais pas remarqué de bugs, mais c'est une piste à tester.

Des fois, "il ne faut pas être plus Royaliste que le Roi", surtout avec Excel :eek:.

Code:
Sub a()
 ActiveSheet.Hyperlinks.Delete
 End Sub
 

ROGER2327

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Re

Roger: Tu ne te prends pas un peu la tête avec ces histoires. (...)
Si !
J'aime bien :
  1. Savoir comment fonctionnent les outils que j'utilise.
  2. Obtenir le résultat que je désire.
    Qui c'est Raoul, nom de dieu ?


(...) Vu que tu veux anonymiser les données. Le code que j'avais fourni devrait suffire. Je l'avais testé et je n'avais pas remarqué de bugs, mais c'est une piste à tester.

Des fois, "il ne faut pas être plus Royaliste que le Roi", surtout avec Excel :eek:.

Code:
Sub a()
 ActiveSheet.Hyperlinks.Delete
 End Sub
Certes.
Dans le genre, ceci n'est pas mal :​
Code:
Sub toto()
Dim Feuille As Worksheet
    For Each Feuille In Worksheets: Feuille.Cells.Clear: Next
End Sub
À user avec modération !
Plaisanterie mise à part, j'aimerais réellement comprendre pourquoi la ligne​
Code:
        Hpl.Add Anchor:=p, Address:="", SubAddress:=p.Address
pose un problème, et surtout, comment l'écrire proprement.

En attendant, merci d'avoir poussé les tests et découvert cette faille dans mon code : écrire du code est une chose (généralement pas trop difficile), s'assurer de sa correction en est une autre (souvent beaucoup plus difficile).​


Bonne nuit !


ROGER2327
#6910


Lundi 9 Haha 141 (Tautologie - Vacuation)
23 Vendémiaire An CCXXII, 8,3987h - navet
2013-W42-1T20:09:25Z
 

Staple1600

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Bonsoir à tous

ROGER2327
J'ai testé sous Excel 2013
1) avec le fichier *.bas de ton message de 16h36 (message #6)
Pas de soucis rencontrés
2) J'ai remplacé SecretH par ta version du message #16
Là encore aucun bug ne s'est manifesté.

Une suggestion à l'intuition (mais sans trop y croire) avec cette modif.
Dim Lig As Hyperlink, p As Range
 

ROGER2327

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Bonsoir à tous.


Merci pour les essais sous Excel 2003 et 2013.

À klin89 : J'ai fait quelques essais en bouclant à l'envers. Apparemment, pas de changement dans le résultat obtenu.

À Staple1600 : Oui, p As Range bien sûr ! (Mais, comme vous, sans trop y croire.)

Autre idée (sans conviction) :​
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 = "": Next
End Sub
Les liens traités sont complètement morts. Ça a l'air de bien fonctionner avec 2010. Pour les autres versions, mystère...​


Bonne nuit.


ROGER2327
#6915


Mercredi 11 Haha 141 (Sortie de Saint Lucas Cranach, apocalypticien - fête Suprême Quarte)
25 Vendémiaire An CCXXII, 0,2561h - bœuf
2013-W42-3T00:36:52Z
 

ROGER2327

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Suite...

(...)

Cela fonctionne parfaitement avec 2007.

(...)
Merci d'avoir essayé. Tant mieux si les choses s'arrangent...

Comme il n'y a pas de réaction vraiment négative, j'ai poursuivi le développement.
Je propose maintenant la suppression (évidemment facultative !) des formules sélectionnées et leur remplacement par leurs valeurs. Cette option permet, par exemple, d'éviter de fournir des fichiers d'essais comportant des formules prenant leurs arguments dans des classeurs inaccessibles.
(Je trouve peu convivial de fournir un classeur d'essai dont l'ouverture déclenche premièrement les commentaires d'Excel se plaignant de ne pas trouver les données qu'il attend pour fonctionner...)

D'autre part, j'ai rectifié quelques imprécisions du code (genre typage de données) en tenant compte de vos retours d'essais.

J'ai ajouté un petit gestionnaire d'erreurs, très-sommaire pour l'instant.

Je joins la nouvelle version du module de code, nommé Neutraliser_v1_1.bas, et le classeur d'essai avec ce code.

En espérant, ne pas avoir fait trop de con...ries.​


Bonne soirée.


ROGER2327
#6919


Samedi 14 Haha 141 (Exhibition de la Daromphe - fête Suprême Quarte)
28 Vendémiaire An CCXXII, 6,5522h - tomate
2013-W42-6T15:43:31Z
 

Pièces jointes

  • Neutraliser_v1_1.zip
    1.7 KB · Affichages: 17
  • Neutraliser des données v1.1.xlsm
    42 KB · Affichages: 42
  • Neutraliser des données v1.1.xls
    94.5 KB · Affichages: 30

MJ13

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Bonjour à tous

Merci Roger :) pour ces nouvelles moutures.

Sinon, j'ai développé cettre petite routine pour neutraliser les données type Adresse mail et Lien internet:

A tester :).

Code VBA:
Public cell As Variant, adressemail1 As String, adressemail As String, adresseInternet1 As String
Option Compare Text
Sub Neutralise_Adresse_Mail_Internet()
ActiveWorkbook.Names.Add Name:="seladr", RefersToR1C1:=Selection
For Each cell In Selection
cell.Select
If cell Like "*@*" Then adr = cell.Address: Selection.Hyperlinks.Delete
If cell Like "http*" Then adr = cell.Address: Selection.Hyperlinks.Delete
Next
Range("seladr").Select
remplace_Lettre_Alea_mail
Range("seladr").Select
lanceF2
Application.ScreenUpdating = True
End Sub
Sub remplace_Lettre_Alea_mail()
For Each cell In Selection
If cell Like "*@*" Then RemplacerTexteMail: cell.Value = adressemail1
If cell Like "http*" Then RemplacerTexteInternet: cell.Value = adresseInternet1
Next
End Sub
Sub RemplacerTexteMail()
nlettre = Len(cell)
adressemail1 = ""
Randomize
For i = 1 To nlettre
If Mid(cell, i, 1) = "@" Then adressemail1 = adressemail1 & "@": GoTo suite
If Mid(cell, i, 1) = "." Then adressemail1 = adressemail1 & ".": GoTo suite
If IsNumeric(Mid(cell, i, 1)) = True Then adressemail1 = adressemail1 & Mid(cell, i, 1): GoTo suite
NombreAlea = 65 + Int(Rnd(1) * 25):
If Application.WorksheetFunction.IsText(Mid(cell, i, 1)) Then adressemail1 = adressemail1 & Chr$(NombreAlea): GoTo suite
suite:
Next
End Sub
Sub RemplacerTexteInternet()
nlettre = Len(cell)
adresseInternet1 = "http://www/"
Randomize
For i = 11 To nlettre
If Mid(cell, i, 1) = "-" Then adresseInternet1 = adresseInternet1 & "-": GoTo suite
If Mid(cell, i, 1) = "." Then adresseInternet1 = adresseInternet1 & ".": GoTo suite
If Mid(cell, i, 1) = ":" Then adresseInternet1 = adresseInternet1 & ":": GoTo suite
If Mid(cell, i, 1) = "/" Then adresseInternet1 = adresseInternet1 & "/": GoTo suite
If IsNumeric(Mid(cell, i, 1)) = True Then adresseInternet1 = adresseInternet1 & Mid(cell, i, 1): GoTo suite
NombreAlea = 65 + Int(Rnd(1) * 25):
If Application.WorksheetFunction.IsText(Mid(cell, i, 1)) Then adresseInternet1 = adresseInternet1 & Chr$(NombreAlea): GoTo suite
suite:
Next
End Sub
Sub lanceF2()
For Each cell In Selection
cell.Select
F2Bis
Next
End Sub
Sub F2Bis()
DoEvents
Application.SendKeys ("{F2}~"), True
End Sub
'A voir
Function AdrHyperlien(cell As Range)
AdrHyperlien = cell.Hyperlinks(1).AddressLocal
End Function
 

ROGER2327

XLDnaute Barbatruc
Re : Données anonymes sans peine.

Bonjour à tous.

Re...

(...)

Sinon, j'ai développé cettre petite routine pour neutraliser les données type Adresse mail et Lien internet:

A tester :).
Merci de suivre le problème. J'ai testé : ça fonctionne plus ou moins. Je crois qu'il reste beaucoup à faire car j'ai constaté des choses gênantes :


  • dans certains cas, des liens ne sont pas supprimés, ni même modifiés ;
  • le résultat dépend de la sélection : dans le classeur d'essai joint, le résultat dans la colonne F n'est pas le même selon que l'on sélectionne E3:F34 ou F3:F34 ,
  • en sélectionnant uniquement E7, une erreur se produit ;
  • le formatage de certaines cellules peut être détruit ;
  • plus étonnant, des formules apparaissent quelquefois dans des cellules qui n'en contenaient pas. Par exemple, en sélectionnant E3:F34 ;
  • avec ma machine, il arrive qu'en fin de procédure, l'état de la touche Verr.Num soit modifié ; peut-être n'est-ce pas le cas avec d'autres machines ?
  • ...

C'est dommage, car l'idée de neutraliser les liens tout en préservant leurs principales caractéristiques est séduisante.

Quoi qu'il en soit, merci encore de votre participation : elle donne des idées à creuser... Il faudrait que les journées durassent plus de vingt-quatre heures.


Bonne soirée.


ROGER2327
#6929


Mercredi 18 Haha 141 (Nativité de Sa Magnificence le baron Mollet (St Pipe) - fête Suprême Quarte)
2 Brumaire An CCXXII, 6,0766h - céleri
2013-W43-3T14:35:02Z
 

Pièces jointes

  • Neutraliser des données v1.1_MJ13.xlsm
    64.1 KB · Affichages: 40

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 534
dernier inscrit
Kalamymustapha