Fermeture automatique d'un fichier excel

Fermé
gregminko - 13 oct. 2011 à 00:35
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 13 oct. 2011 à 13:28
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!

A voir également:

2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
13 oct. 2011 à 10:00
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
H_sergio Messages postés 185 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 29 février 2016 7
Modifié par H_sergio le 13/10/2011 à 10:32
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
H_sergio Messages postés 185 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 29 février 2016 7
13 oct. 2011 à 11:12
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
13 oct. 2011 à 11:26
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
H_sergio Messages postés 185 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 29 février 2016 7
13 oct. 2011 à 13:05
et bien effectivement , mon système tombe à l'eau
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
13 oct. 2011 à 13:28
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