Fermeture automatique d'un fichier excel

gregminko -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

j'aimerai savoir comment je peux mettre une date à laquelle mon fichier ne prourra plus être ouvert que par un mot de passe.
En effet, j'ai un fichier de gestion de stock sous excel, je souhaiterai par exemple que le 30 d'un mois donné, l'utilisateur ne puisse plus avoir accés à ce fichier qui lui demandera un mot de passe pour ouverture. Je serai le seul à avoir ce mot de passe que je pourrai changer à ma guise.
merci d'avance!

2 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    Quel est le rapport entre le titre du sujet (Fermeture automatique d'un fichier excel) et la question : j'aimerai savoir comment je peux mettre une date à laquelle mon fichier ne prourra plus être ouvert que par un mot de passe.

    En gros que souhaitez vous faire :
    1- que ce fichier, le 30 de chaque mois et uniquement le 30 ne soit consultable que grâce au mot de passe?
    2- Qu'à compter du 30 novembre 2011 et ce jusqu'à la fin de son utilisation, ce fichier ne soit plus consultable que grâce au mot de passe?
    0
  2. H_sergio Messages postés 239 Statut Membre 7
     
    bonjour , j'ai ça , si ça peut aider

    Sub auto_open()

    Call barrage
    End Sub
    -----------------------

    Sub barrage()
    'inserer la feuil2 , elle permet de ne pas voir le fichier , elle peut avoir d'autre nom
    Sheets("Feuil2").Select
    ma_date = Now
    MyDay = Day(ma_date)
    mon_jour = MyDay

    'attention au mois de février , il faudra penser à marquer 28 ou 29
    If mon_jour = 30 Then
    réponse1 = InputBox("nous sommes le 30 du mois , vous ne pouvez plus accéder au fichier sans le code ! , veuillez le saisir svp !")
    'votre code perso
    If réponse1 = "essai22" Then
    ' la feuil1 est le fichier proprement dit , donc remplacer le nom de votre fichier
    Sheets("Feuil1").Select
    Exit Sub
    Stop
    Else
    MsgBox "vous n'êtes pas habilité pour acceder au fichier"
    Application.Quit

    Exit Sub
    0
    1. H_sergio Messages postés 239 Statut Membre 7
       
      j'espère que ce n'est pas moi qui ait fait planté le site : milles excuses !!!
      je voulais ajouter que cette macro doit être installée dans un module pour pouvoir fonctionner en auto open
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonjour tout le monde,
      Bonjour H_sergio,
      Que se passe t'il, avec ta méthode, si l'utilisateur ouvre le fichier sans activer les macros?
      0
    3. H_sergio Messages postés 239 Statut Membre 7
       
      et bien effectivement , mon système tombe à l'eau
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Donc en fait, il faut 2 choses :
      I- à l'ouverture du classeur (Workbooks_Open) :
      1- masquer toutes les feuilles "utiles" du classeur (avec la propriétés de WorkSheets visible = xlveryhidden pour que l'on ne puisse pas les afficher avec la commande Format//Afficher)
      2- Vérifier la date
      3- selon le test de 2- demander ou pas un mot de passe.
      II- A la fermeture du classeur (WorkBooks_before_close) :
      1- masquer toutes les feuilles "utiles" du classeur (avec la propriétés de WorkSheets visible = xlveryhidden pour que l'on ne puisse pas les afficher avec la commande Format//Afficher)
      2- Enregistrer

      Le problème étant qu'un enregistrement automatique est source de multiples coquilles......
      ci-joint un classeur exemple
      Avec ce code :
      Option Explicit
      
      Private Sub Workbook_BeforeClose(Cancel As Boolean)
      Dim Wsh As Worksheet
      
      For Each Wsh In ThisWorkbook.Worksheets
          If Wsh.Name <> "Feuil2" Then
              Wsh.Visible = xlVeryHidden
          End If
      Next
      ActiveWorkbook.Save
      End Sub
      
      Private Sub Workbook_Open()
      Dim Wsh As Worksheet
      Dim Motdepass As String
      Dim Cpt As Byte
      
      For Each Wsh In ThisWorkbook.Worksheets
          If Wsh.Name <> "Feuil2" Then
              Wsh.Visible = xlVeryHidden
          End If
      Next
      'test si date
      'demande mot de passe
      For Cpt = 1 To 3
          Motdepass = InputBox("Saisie : ", "Mot de passe")
          If Motdepass = "toto" Then Exit For
      Next
      If Motdepass = "toto" Then
          For Each Wsh In ThisWorkbook.Worksheets
              Wsh.Visible = True
          Next
      Else
          MsgBox "3 mauvais password, l'application va fermer"
          Application.Quit
      End If
      End Sub
      0