Limiter dans le temps l'usage d'un fichier EXCEL

Résolu/Fermé
RG14 Messages postés 77 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 9 février 2024 - 17 sept. 2018 à 11:30
RG14 Messages postés 77 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 9 février 2024 - 21 sept. 2018 à 16:27
Bonjour,
J'ai créé un fichier ayant des macros, des fonctions de calcul etc..(excel 2010)
Certaines cellules sont verrouillées (feuille protégée avec code) pour ne pas perturber malencontreusement le bon fonctionnement.
Ce fichier, je désire en limiter son usage dans le temps (selon les cas 1 semaine, ou 1 mois etc..) aux personnes à qui je le transmet.
pouvez vous m'aider sur la procédure à appliquer
cordialement
RG14

8 réponses

Bonjour les experts
Désolé mais tous vos documents présentés sont refusés (échec de l'activation produit -pro?) je suis en 2010
Votre aide est donc vaine. Le degré de protection que je recherche est très basique ..juste un arrêt d'utilisation vers des utilisateurs basique. Le fichier ne contient aucune donnée spéciale mais c'est un contenu qui intéresse des sportifs..
merci à vous
RG14
3
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
Modifié le 20 sept. 2018 à 14:51
Une autre manière: cacher toutes les feuilles sauf une si la date est dépassée. Même si l'on refuse l'exécution des macros, on n'aura pas accès à toutes les feuilles
.
Bien sur il faut protéger les macros.
Allez dans Outils-Propriétés VBAProject-Protection et mettre le mot de passe

Voici le code à mettre dans ThisWorkbook:


Option Explicit
Dim datefin As Date
Dim k As Integer
Dim nom As String
Private Sub Workbook_Open()
nom = Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1) 'nom fichier sans l'extension
datefin = "28 / 10 / 2018" 'mettre la date de dernière utilisation
If datefin < Date Then
MsgBox "La date est dépassée!", vbCritical, nom
ThisWorkbook.Close
Else
MsgBox "Il vous reste:  " & DateDiff("d", #10/28/2018#, Date) & " jours", vbInformation, nom   'mettre la date de dernière utilisation
'en ouvertture on démasque par macro,si pas activé....... rien
For k = 1 To Sheets.Count
Sheets(k).Visible = True
Next
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
For k = 1 To Sheets.Count
If Sheets(k).CodeName <> "Feuil1" Then 'adapter le nom de la feuille visible
Sheets(k).Visible = xlSheetVeryHidden 'feuilles cachées même par clic droit
End If
Next
End Sub


Voilà

@+ Le Pivert
0
RG14 Messages postés 77 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 9 février 2024 2
21 sept. 2018 à 16:27
Bonjour le Pivert
J'ai exécuté toutes les directives et TOUT fonctionne comme souhaité. Le temps d'ouverture des droits est parfaitement programmable ce qui limite à un usage accordé vers des utilisateurs "petits profiteurs"
encore MERCI de cette aide particulièrement précieuse.
cordialement
RG14
1
Bonjour,
Peut être en mettant une petite macro cachée qui se déclencherait à une certaine date et effacerait les plages de données et de formules...
Mais je n'ai jamais essayé cette manip' !
Cordialement,
Alain
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
17 sept. 2018 à 11:49
Bonjour,

Il faut savoir que les classeurs Excel sont facilement crackables ( quand on a les codes c'est très facile de contrer l'interdiction). L'exemple en pièce jointe a 2 classeurs Excel:

Une clé d'activation qui met la date de fin d'activité dans le registre et s'auto détruit
Et le classeur proprement dit.

Bien suivre les instructions, c'est un peu complexe pour une personne qui ne maîtrise pas le vba

https://www.cjoint.com/c/HIrjOOIsx7Q
0

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

Posez votre question
RG14 Messages postés 77 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 9 février 2024 2
17 sept. 2018 à 12:55
Je ne métrise pas en effet (je suis un bricoleur perso...)
je ne trouve pasWorbook_BeforeClose
comment faire??
merci
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
Modifié le 17 sept. 2018 à 14:43
Tout est expliqué dans le classeur

Faire Alt F11 pour accéder à l'éditeur

Mettre le mot de passe pour accéder aux macros qui se trouvent dans ThisWorkbook

Allez en haut à gauche et dérouler l'arborescence pour atteindre ThisWorkbook que vous sélectionnez.

Vous verrez apparaître le code;

Cette instruction est à faire pour les essais seulement ( évite de détruire le classeur).

Allez dans Sub creer_vbs sur cette ligne : f.write ("Dim nomfichier: nomfichier = ""Activation.xls"" ") & vbCrLf changer le nom et renommer le classeur à ce nom ensuite après avoir fermé


Dans le classeur a protéger allez aussi dans ThisWorkbook pour mettre la date de validation

suivez bien les instructions

voir ceci en image

https://www.excel-pratique.com/fr/vba/introduction.php

@+
0
RG14 Messages postés 77 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 9 février 2024 2
17 sept. 2018 à 18:17
Bon voilà où j'en suis ...voir le lien copie écran ..pas facile
Aussi, je n'ai rien sur le fichier classeur mais OK activation
https://www.cjoint.com/c/HIrqn23bUfO
RG14
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
17 sept. 2018 à 18:36
Il faut que tu ouvres le classeur: Classeur_essai

que tu ailles dans ThisWorkbook et que tu copies tout le code dans ton classeur client (ThisWorkbook) en modifiant la date de dernière utilisation simplement.

dans le classeur: Activation,

ce n'est pas nécessaire de le détruire, supprime cela:

Dim oWsh
'creer_vbs ' a activer
Set oWsh = CreateObject("Shell.Application")
'oWsh.ShellExecute Workbooks(ActiveWorkbook.Name).Path & "\delete_file.vbs" ' a activer
Set oWsh = Nothing
End Sub
Private Sub creer_vbs()
 Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.OpenTextFile(Workbooks(ActiveWorkbook.Name).Path & "\delete_file.vbs", ForWriting, True)
 f.write ("On Error Resume Next") & vbCrLf
f.write ("Set fso = WScript.CreateObject(""Scripting.FileSystemObject"")") & vbCrLf
f.write ("Dim path") & vbCrLf
f.write ("path = WScript.ScriptFullName") & vbCrLf
f.write ("GetPath = Left(path, InStrRev(path, ""\""))") & vbCrLf
f.write ("Dim nomfichier: nomfichier = ""Activation.xls"" ") & vbCrLf ' changer le nom et renommer le classeur à ce nom ensuite après avoir fermé
f.write ("Dim lieufichier: lieufichier = GetPath & nomfichier") & vbCrLf
f.write ("If fso.FileExists(lieufichier) Then") & vbCrLf
f.write ("  fso.deletefile lieufichier") & vbCrLf
f.write ("  fso.deletefile path") & vbCrLf
f.write ("WScript.echo "" [OK] Le fichier à été supprimé!"" ") & vbCrLf
f.write ("Else") & vbCrLf
f.write ("WScript.echo "" [  ] Le fichier n'existe pas!"" ") & vbCrLf
f.write ("End If") & vbCrLf
f.write ("Set fso = Nothing") & vbCrLf
f.write ("WScript.Quit")


cela fonctionnera quand même

Voilà

@+ Le Pivert
0
Bon je pense ne pas être à la hauteur.. je ne peux ouvrir le classeur..
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
17 sept. 2018 à 19:18
Il faut ouvrir le classeur Activation, suivre les explications pour rendre le classeur Classeur_essai opérationnel

Voilà je ne peux pas faire plus

@+
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 237
17 sept. 2018 à 23:56
Bonjour,

sache quand même qu'on peut toujours ouvrir un fichier en refusant l'exécution des macros.
Partant de là, toute protection sera vaine.
Sans parler du prudent qui travaille sur une copie...
eric
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
18 sept. 2018 à 08:10
Pour RG14, voici une version simplifiée:

https://www.cjoint.com/c/HIsgeF7XMkQ

Bonjour eriiic,

ouvrir un fichier en refusant l'exécution des macros

c'est prévu le classeur se ferme

travaille sur une copie...

cela n'a aucune incidence ainsi que de renommer le classeur.
Le code qui est à l'ouverture va chercher la date qui est dans la base de registre.

Le seul moyen est de cracker la protection vba pour avoir accès aux macros.
Comme je le disais au départ pour un pro d'Excel c'est assez facile!

Voilà

@+ Le Pivert
0