Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Auto destruction d'un classeur si changement de poste de travail

Campagnou

XLDnaute Nouveau
Bonjour,

Voila mon problème je souhaite faire en sorte que mon classeur de gestion de caisse ne puisse pas être utilisé sur un autre ordinateur que celui de mon travail pour des raison de confidentialités.

Afin de restreindre son utilisation je souhaite faire en sorte que si quelqu'un copie mon classeur pour le mettre sur un autre poste le fichier s'auto détruise complètement.

Cela est il possible ?

Cdt
 

Victor21

XLDnaute Barbatruc
Bonjour, Campagnou.

Pour qu'un fichier s'auto-détruise, il faudra utiliser VBA.
Ce qui signifie qu'il suffit de ne pas activer les macros à l'ouverture de la copie pour rendre cette protection vaine, et laisser le temps à l'ignoble copieur de déprotéger si nécessaire, et de supprimer la macro en question.
 

Campagnou

XLDnaute Nouveau
Bonjour Victor21 et merci pour ces précisions,

Pour être honnête cette partie ci ne m'était pas vraiment inconnue. Ma question se tourne vers le fait que si on peut détruire un fichier via une certaine date ou une modification du classeur, est-il possible de faire s'auto détruire un fichier si à l'ouverture de celui ci l'emplacement désigné n'est plus le même ?

Dans l'attente de votre réponse.

Cdt
 

Dranreb

XLDnaute Barbatruc
À essayer dans le module ThisWorkbook :
VB:
Option Explicit
Private Sub Workbook_Open()
   Dim NomComplet As String
   On Error Resume Next
   NomComplet = [ChNomFicOfficiel]
   On Error GoTo 0
   If NomComplet <> "" Then
      If Me.FullName <> NomComplet Then Me.Close SaveChanges:=False
   ElseIf MsgBox("Avez-vous ouvert ce fichier depuis son emplacement définitif ?", _
      vbYesNo, "Ouverture " & Me.Name) = vbYes Then
      Me.Names.Add "ChNomFicOfficiel", "=""" & Me.FullName & """", Visible:=False
      End If
   Feuil2.Visible = xlSheetVisible
   End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
   Feuil2.Visible = xlSheetVeryHidden
   ' Pour le cas où le classeur serait ouvert sans activer les macros.
   ' Remarque: pour que cette propriété puisse difficilement être changée,
   ' protégez le projet par un mot de passe.
   End Sub
 

Campagnou

XLDnaute Nouveau
Bonjour Dranreb et merci beaucoup pour ton travail,

J'ai peur de ne pas avoir saisie ou je dois renseigner les infos concernant l'emplacement de mon fichier. Dans le même temps j'ai l'impression que le code que tu me présente la me sert à rendre inefficace le fichier en cas de changement de nom et non d'emplacement, me trompe-je ?

Cdt
 

Dranreb

XLDnaute Barbatruc
Bonjour.
En cas de changement de nom OU d'emplacement.
Sauvegardez le sur son dossier attitré et fermez le.
Rouvrez le. Il vous demandera si vous l'avez ouvert depuis son emplacement définitif.
Si vous répondez Oui il enregistrera celui ci dans un nom du classeur non visible dans le gestionnaire de noms.
Si par la suite on en ouvre une copie d'un autre nom ou sur un autre dossier il doit se fermer aussitôt.
 

Campagnou

XLDnaute Nouveau
Autant pour moi je croyais qu'il me fallait y apporter des modifications.

C'est juste ce qu'il me fallait !! Après es-ce qu'il est possible selon vous de remplacer le fait de cacher les feuilles par une auto-destruction pur et simple du classeur, ceci afin d'éviter à un tiers de tenter de corriger le code.

En tout cas bravo pour votre travail! Vous êtes fantastique Merci.
 

Chris24

XLDnaute Impliqué
Bonsoir Campagnou, Dranreb

Un fichier exemple avec N° du disc dur

A l'ouverture on compare le n° du disc dur avec celui enregistré dans la cellule A10000 de la feuille zzz.
Si le n° correspond les feuilles sont visibles
Si pas même n° les feuilles sont détruites le classeur est enregistré et excel se ferme.

le n° du disc dur est enregistré à la première ouverture du classeur

Pour tester il suffit de modifier la cellule A10000 de la feuille zzz (la police est blanche)

Mais même un code protégé par un mot de passe n'est pas inviolable


Bonne soirée

Cdt
 

Pièces jointes

  • test destruction feuilles - Copie.xlsm
    21.3 KB · Affichages: 63

job75

XLDnaute Barbatruc
Bonsoir Campagnou, Patrick, Bernard, Chris24,

Pour qu'un fichier puisse s'autodétruire il faut le faire passer en lecture seule :
Code:
With ThisWorkbook
    .Saved = True 's'il y a eu des modifications
    .ChangeFileAccess xlReadOnly 'lecture seule
    Kill .FullName 'suppression sur le disque dur
    If Workbooks.Count = 1 Then Application.Quit Else .Close 'fermeture
End With
Bonne nuit.
 

Dranreb

XLDnaute Barbatruc
Après es-ce qu'il est possible selon vous de remplacer le fait de cacher les feuilles par une auto-destruction pur et simple du classeur
Vous n'avez pas compris. Si le classeur est ouvert alors que les macros ne sont pas activées, rien ne peut s'exécuter.
La feuille est donc gardée cachée à la sauvegarde du classeur seulement pour qu'au moins dans ce cas on ne puisse pas l'exploiter.
Mais il convient aussi de protéger le projet VBA par un mot de passe, sinon il est facile, en y accédant, de changer la propriété Visible des objets Worksheet.
 

Campagnou

XLDnaute Nouveau
Je vois ce que vous voulez dire,

En se qui concerne le mot de passe du fichier en lui même étant donner qu'il s'agit d'une utilisation professionnel mes collègues de travail auront eux aussi le mdp, et si il y a une migration de mon travail cela ne changera rien.
Néanmoins mon raisonnement est le suivant: si la tiers personnes connait les ficelles du vba, il lui suffit simplement une fois une première ouverture du fichier de le fermer puis de le rouvrir sans activer les macros pour ensuite aller effacer le code ( j'ai essayer). Et c'est pourquoi en le faisant s'auto détruire dés l'ouverture on empêcherait tout risque de voir se scénario se réaliser en bloquant complètement l’accès au Visual basique.


Qu'en pensez vous ?
 

Campagnou

XLDnaute Nouveau
Moi j'en pense ce que j'ai dit au post #10, vous en faites ce que vous voulez.

J'ai bien vu l’efficacité de votre code à vous aussi job75, malheureusement je débute sur vba et je n'ai pas du faire la bonne manipulation puisque dés que j’insère votre code le classeur s’efface sans même qu'il y ai eu modification ou dans mon cas que je n'ai à le déplacer....

Cela vous parle t'il ?
 

helias jeremy

XLDnaute Nouveau


Bonjour,

Pour ta demande je ne connais pas de solutions propre (peut-être que les autres du forum trouveront)
Par contre je peux te conseiller de verrouiller ton classeur par un mot de passe dès l'ouverture.

Pour cela tu vas dans fichier > informations > protéger le classeur > chiffrer avec un mot de passe
ainsi que verrouiller l'accès aux macros, dans le vba click droit sur le nom du fichier propriétés vba > protection et tu rentre ton mot de passe

Bien noter le mot de passe au cas où.
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…