Mot de passe changeant

WDAndCo

XLDnaute Impliqué
Bonjour le Forum

Comment mettre un mot de passe journalier ?

Du genre « 20052014 » pour aujourd’hui et « 19052014 » pour hier.
Ou « 140 » pour aujourd’hui et « 139 » pour hier; qui sont les X jours depuis le premier janvier.

Code:
Private Sub Workbook_Open()
“??????????????????????“ Then ActiveWorkbook.Close False
End Sub
D’avance merci.
Dominique
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Mot de passe changeant

Bonjour WDAndCo,

Code:
Private Sub Workbook_Open()
Dim i&
For i = Date To 1 Step -1 'recherche du mot de passe précédent
  On Error Resume Next
  Me.Unprotect Format(i, "ddmmyyyy")
  If Err = 0 Then Exit For
Next
Me.Protect Format(Date, "ddmmyyyy") 'nouveau mot de passe
Me.Save 'enregistrement
Me.Protect 'demande du mot de passe
If Err Then If Workbooks.Count = 1 Then Application.Quit Else Me.Close
Me.Protect Format(Date, "ddmmyyyy") 'remet la protection
Me.Save
End Sub
Bah si l'on ne connaît pas le mot de passe il suffit de ne pas activer les macros :rolleyes:

A+
 

WDAndCo

XLDnaute Impliqué
Re : Mot de passe changeant

Bonjour job75 et re le Forum

job75 merci, mais, je me suis de nouveau mal exprimé !
Le « Mot de passe » ne protégé pas le classeur, il doit juste permettre ou pas l’ouverture du classeur.

Du genre :

Demande d’ouverture
-> Si la saisie = date du jour actuel
-> Ouverture Else pas d’ouverture.

Ou

Ouverture
-> Si la saisie <> date du jour actuel
-> Fermeture

J’espère avoir été plus clair

Dominique
 

job75

XLDnaute Barbatruc
Re : Mot de passe changeant

Re,

Avec le numéro du jour :

Code:
Private Sub Workbook_Open()
Dim jour%, i%
jour = Date - CDate("1/1") + 1 'numéro du jour
For i = jour To 1 Step -1 'recherche du mot de passe précédent
  On Error Resume Next
  Me.Unprotect CStr(i)
  If Err = 0 Then GoTo 1
Next
For i = 366 To 1 Step -1 'si année précédente
  On Error Resume Next
  Me.Unprotect CStr(i)
  If Err = 0 Then Exit For
Next
1 Me.Protect CStr(jour) 'nouveau mot de passe
Me.Save 'enregistrement
Me.Protect 'demande du mot de passe
If Err Then If Workbooks.Count = 1 Then Application.Quit Else Me.Close
Me.Protect CStr(jour) 'remet la protection
Me.Save
End Sub
Aujourd'hui 21/05/2014 le mot de passe est donc 141.

A+
 

job75

XLDnaute Barbatruc
Re : Mot de passe changeant

Re,

Je protégeais le classeur parce que j'aime bien la boîte de dialogue :cool:

Avec une InputBox c'est nettement moins joli :

Code:
'l'une ou l'autre de ces macros :

Private Sub Workbook_Open()
Dim mdp$
mdp = Format(Date, "ddmmyyyy") 'date du jour
If InputBox("Mot de passe :") <> mdp Then _
  If Workbooks.Count = 1 Then Application.Quit Else Me.Close
End Sub

Private Sub Workbook_Open()
Dim mdp$
mdp = Date - CDate("1/1") + 1 'numéro du jour
If InputBox("Mot de passe :") <> mdp Then _
  If Workbooks.Count = 1 Then Application.Quit Else Me.Close
End Sub
Sinon fabriquez-vous un bel UserForm...

A+
 

job75

XLDnaute Barbatruc
Re : Mot de passe changeant

Re,

S'il y a des formules volatiles ou des liaisons utiliser Me.Saved = True :

Code:
'l'une ou l'autre de ces macros :

Private Sub Workbook_Open()
Dim mdp$
mdp = Format(Date, "ddmmyyyy") 'date du jour
Me.Saved = True
If InputBox("Mot de passe :") <> mdp Then _
  If Workbooks.Count = 1 Then Application.Quit Else Me.Close
End Sub

Private Sub Workbook_Open()
Dim mdp$
mdp = Date - CDate("1/1") + 1 'numéro du jour
Me.Saved = True
If InputBox("Mot de passe :") <> mdp Then _
  If Workbooks.Count = 1 Then Application.Quit Else Me.Close
End Sub
A+
 

Discussions similaires

Réponses
5
Affichages
458
Compte Supprimé 979
C
Réponses
4
Affichages
811

Statistiques des forums

Discussions
312 558
Messages
2 089 596
Membres
104 220
dernier inscrit
Fredericchau