Durée d'utilisation limité mais sous condition

  • Initiateur de la discussion Initiateur de la discussion Ilino
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Ilino

XLDnaute Barbatruc
Forum Bonjour;

Je souhaite créer une Macro qui limite la durée d'utilisation du fichier
Exemple une fois la date limite est aboutée (cellule A1) ,je souhaite masquer le fichier(original) complètement dans un répertoire bien définit ( dans Windows) avec un MDP et afficher a l’utilisateur un fichier copie mais sans macro ,mais l’original est caché dans le Répertoire Windows
GRAZIE😎
 
Re : Durée d'utilisation limité mais sous condition

Re,

Ah oui tu veux aussi mettre un mot de passe sur le fichier original :

Code:
Private Sub Workbook_Open()
Dim feuille$, f$, fn$, wb As Workbook
feuille = Feuil1.Name 'Feuil1 est le CodeName
If Date >= Sheets(feuille).[A1] Then
  f = Me.Name
  fn = Me.FullName
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  Application.EnableEvents = False
  On Error Resume Next
  Me.SaveAs Left(fn, Len(fn) - 5), 51 'fichier .xlsx
  Set wb = Workbooks.Open(fn) 'rouvre le fichier .xlsm
  wb.Sheets(feuille).[A1] = 3000000
  wb.SaveAs fn, Password:="mdp" 'mot de passe à adapter
  Application.OnTime 1, "'" & f & "'!ThisWorkbook.Rouvre"
  Application.EnableEvents = True
  Me.Close False 'ferme le fichier .xlsx
End If
End Sub

Sub Rouvre()
Dim fn$
fn = Me.FullName
Workbooks.Open Left(fn, Len(fn) - 5) & ".xlsx"
Me.Close False
End Sub
A+
 
Dernière édition:
Re : Durée d'utilisation limité mais sous condition

Re, salut chris,

Comme je l'ai dit je ne vois pas l'intérêt de créer un fichier .xlsx.

Ceci devrait suffire :

Code:
Private Sub Workbook_Open()
If Date >= Feuil1.[A1] Then
  Dim fn$
  Feuil1.[A1] = 3000000
  fn = Me.FullName
  Application.DisplayAlerts = False
  Me.SaveAs fn, Password:="mdp" 'mot de passe à adapter
  Workbooks.Open fn 'rouvre le fichier
End If
End Sub
En plus cela fonctionne sur les versions antérieures à Excel 2007, ce qui n'était pas le cas précédemment.

A+
 
Re : Durée d'utilisation limité mais sous condition

Re
désole pour le double de message ???
le code de JOB fonctionne parfaitement mais je souhaite sauvegarder une copie orignale ( avec les macro) dans un répertoire bien definit sans informer l'utilisateur
A+
 
Re : Durée d'utilisation limité mais sous condition

Re,

je souhaite sauvegarder une copie orignale ( avec les macro) dans un répertoire bien definit sans informer l'utilisateur

Alors crée un dossier "Dossier secret", utilisé dans la macro Rouvre :

Code:
Private Sub Workbook_Open()
Dim feuille$, f$, fn$, wb As Workbook
feuille = Feuil1.Name 'Feuil1 est le CodeName
If Date >= Sheets(feuille).[A1] Then
  f = Me.Name
  fn = Me.FullName
  Application.DisplayAlerts = False
  Application.EnableEvents = False
  On Error Resume Next
  Me.SaveAs Left(fn, Len(fn) - 5), 51 'fichier .xlsx
  Set wb = Workbooks.Open(fn) 'rouvre le fichier .xlsm
  wb.Sheets(feuille).[A1] = 3000000
  wb.Save 'enregistrement normal
  Application.OnTime 1, "'" & f & "'!ThisWorkbook.Rouvre"
  Application.EnableEvents = True
  Me.Close False 'ferme le fichier .xlsx
End If
End Sub

Sub Rouvre()
Dim chemin$, fn$
chemin = "C:\Dossier secret\" 'à adapter
fn = Me.FullName
Application.DisplayAlerts = False
On Error Resume Next 'sécurité
Workbooks.Open Left(fn, Len(fn) - 5) & ".xlsx"
Me.SaveAs chemin & Me.Name, Password:="mdp" 'mot de passe à adapter
Kill fn 'supprime le fichier.xlsm du répertoire courant
Me.Close False
End Sub
A+
 
Re : Durée d'utilisation limité mais sous condition

Re,

Une solution nettement plus simple avec une seule macro :

Code:
Private Sub Workbook_Open()
Dim c As Range, chemin$, fn$
Set c = Feuil1.[A1] 'CodeName à adapter
If Date >= c Then
  chemin = "C:\Dossier secret\" 'à adapter
  fn = Me.FullName
  Application.DisplayAlerts = False
  On Error Resume Next
  c = 3000000
  Me.SaveAs chemin & Me.Name, Password:="mdp" 'mot de passe à adapter
  Kill fn 'supprime le fichier du dossier courant
  Me.SaveAs Left(fn, Len(fn) - 5), 51, Password:="" 'fichier .xlsx
  Workbooks.Open Left(fn, Len(fn) - 5) & ".xlsx" 'rouvre le fichier
End If
End Sub
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
954
Réponses
3
Affichages
623
Retour