Macro ferme classeur si date > et si mot de passe faux

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
Christrucci
Membre habitué
Membre habitué
Messages : 101
Inscrit le : 15 juin 2015
Version d'Excel : 2013

Message par Christrucci » 12 décembre 2016, 15:42

Bonjour à tous,

J'ai besoin d'aide sur une macro que je n'arrive pas à effectuer.

J'aimerai rendre le classeur inutilisable si la personne qui l'ouvre ne renseigne pas le mot de passe, mais que le mot de passe se déclenche passé une certaine date. Ça permet aux utilisateurs du classeur de pas avoir à saisir un mot de passe à chaque ouverture, mais une fois par an passée la date indiqué dans la macro, le mot de passe est demandé (à ce moment je changerai la date). Cela me permet de mettre a disposition un fichier qui ne sera disponible qu'un certain temps.

Je ne sais pas si j'ai été très clair, en tout cas voici ma macro ;
Private Sub Auto_Open()
Application.DisplayAlerts = False

If Date > CDate("01/12/2016") Then

Dim resultat As String

resultat = InputBox("Durée d'utilisation du fichier dépasser, veuillez renseigner le mot de passe ou contacter votre administrateur", "ALERTE")

If resultat <> "mot de passe" Then

End If

ActiveWorkbook.Close
Application.DisplayAlerts = True

End If
End Sub
Merci d'avance pour votre aide :)

Christophe


edit :

Je ne sais pas si mon explication initiale était suffisante, pour faire simple, j'aimerai que le fichier soit inutilisable après le 01/12/2016 par exemple, a moins que l'on n'entre le mot de passe dans la message box :)
Si on ne renseigne pas le mot de passe, tout disparaît, comme dans ma macro, sauf que je n'arrive pas a faire en sorte que si on rentre le bon mot de passe le fichier s'ouvre, quand je renseigne le mot de passe avec le code actuel le fichier se ferme quand meme.
Modifié en dernier par Christrucci le 13 décembre 2016, 14:22, modifié 2 fois.
B
Braters
Membre dévoué
Membre dévoué
Messages : 579
Appréciations reçues : 10
Inscrit le : 23 décembre 2015
Version d'Excel : 2013 FR

Message par Braters » 12 décembre 2016, 17:10

Bonjour,

Voici une solution qui à l'air de fonctionner chez moi :
Private Sub Workbook_Open()

Application.DisplayAlerts = False
Dim resultat As String

With Sheets("Feuil1")
    If .Range("B1").Value <> "" Then
        If .Range("B2").Value < Date Then
            resultat = InputBox("Durée d'utilisation du fichier dépasser, veuillez renseigner le mot de passe ou contacter votre administrateur", "ALERTE")
            If resultat <> "azer" Then
                ActiveWorkbook.Close
                Else
                    .Range("B1").Value = Date
                    Exit Sub
            End If
        End If
        Else
            resultat = InputBox("Durée d'utilisation du fichier dépasser, veuillez renseigner le mot de passe ou contacter votre administrateur", "ALERTE")
            If resultat <> "azer" Then
                ActiveWorkbook.Close
                Else
                    .Range("B1").Value = Date
            End If
    End If
End With

Sheets("Feuil1").Visible = xlSheetVeryHidden

End Sub
avec une "Feuil1" Avec A1 = "Date de saisie mdp" et A2 = Date limite
En B1, la date de saisie du mdp va venir s'y mettre et en B2 = B1+365 (Soit un an après)
B1 et B2 en format Date évidemment.

PS :
Sheets("Feuil1").Visible = xlSheetVeryHidden
'ou 
Sheets("Feuil1").Visible = xlSheetHidden 'si tu veux pouvoir l'afficher par la suite
A plus !
:btres:
Avatar du membre
Christrucci
Membre habitué
Membre habitué
Messages : 101
Inscrit le : 15 juin 2015
Version d'Excel : 2013

Message par Christrucci » 13 décembre 2016, 13:48

Merci pour cette macro,

Je ne comprend pas la "Feuil1" Avec A1 = "Date de saisie mdp" et A2 = Date limite.
Si je veux pouvoir utiliser le fichier tout au long de l'année 2017, et qu'a partir de 2018, il me faut un mot de passe pour ouvrir le classeur, que dois-je indiquer dans les cellules ?

Je ne sais pas si mon explication initiale était suffisante, pour faire simple, j'aimerai que le fichier soit inutilisable après le 31/12/2016 par exemple, a moins que l'on n'entre le mot de passe dans ma message box :)
Si on ne renseigne pas le mot de passe, tout disparaît, comme dans ma macro, sauf que je n'arrive pas a faire en sorte que si on rentre le bon message, il ne se passe rien et que le fichier reste accessible.
B
Braters
Membre dévoué
Membre dévoué
Messages : 579
Appréciations reçues : 10
Inscrit le : 23 décembre 2015
Version d'Excel : 2013 FR

Message par Braters » 13 décembre 2016, 13:58

Cela veut dire qu'il faut une page vierge nommé "Feuil1" dans mon exemple.

En A1 vous écrivez "Date de saisie" dans la cellule, en A2 vous écrivez "Date limite", ce n'est qu'a titre indicatif pour se repérer.

En B1, vous ne faites rien, la cellule va se remplir avec la date du jour de saisie du mot de passe.

En B2, à vous de mettre la date limite qui vous convient ! Dans mon exemple, pour une date limite 1 an après la date de saisie du mdp, il faut mettre B1+365, mais vous pouvez tout autant mettre une date fixe et la modifier quand vous le souhaitez. Pour cela il faudra changer le VeryHidden par Hidden dans la macro afin de pouvoir accéder à la feuille.

Christrucci a écrit :
Je ne sais pas si mon explication initiale était suffisante, pour faire simple, j'aimerai que le fichier soit inutilisable après le 31/12/2016 par exemple, a moins que l'on n'entre le mot de passe dans ma message box :)
Si on ne renseigne pas le mot de passe, tout disparaît, comme dans ma macro, sauf que je n'arrive pas a faire en sorte que si on rentre le bon message, il ne se passe rien et que le fichier reste accessible.
Dans ce cas, il suffit de mettre la date "31/12/2016" dans B2 de la "Feuil1" (ou autre si vous la renommer).
:btres:
Avatar du membre
Christrucci
Membre habitué
Membre habitué
Messages : 101
Inscrit le : 15 juin 2015
Version d'Excel : 2013

Message par Christrucci » 13 décembre 2016, 14:13

Ok j'ai compris,

Je me suis permis de saisir en C2 la date limite d'utilisation du fichier, j'ai mis 01/12/2016 pour essayer,
j'ai modifier les B2 par C1 dans la macro (car j'ai déjà des informations dans la cellule B2), donc comme la date du jour est plus grande, le fichier aurai du me demander le mot de passe à l'ouverture, mais il ne s'est rien passé !

Est-ce que vous pourriez lire ma macro posté initialement, elle fonctionnais mais après avoir saisie le mot de passe le fichier se vérouillais quand même, j'ai du merdé sur les if et End if

Merci bien
B
Braters
Membre dévoué
Membre dévoué
Messages : 579
Appréciations reçues : 10
Inscrit le : 23 décembre 2015
Version d'Excel : 2013 FR

Message par Braters » 13 décembre 2016, 14:26

Autant pour moi, Dans ce cas j'imagine que c'est uniquement du au fait que votre
ActiveWorkbook.Close

est en dehors du
If resultat <> "mot de passe" Then

End if
Et donc ferme le fichier quoiqu'il arrive.
:btres:
Avatar du membre
Christrucci
Membre habitué
Membre habitué
Messages : 101
Inscrit le : 15 juin 2015
Version d'Excel : 2013

Message par Christrucci » 13 décembre 2016, 14:33

Ahaha je m'en doutais que j'avais merdé!
Ca marche nickel ! Merci beaucoup :)
Modifié en dernier par Christrucci le 13 décembre 2016, 14:39, modifié 2 fois.
B
Braters
Membre dévoué
Membre dévoué
Messages : 579
Appréciations reçues : 10
Inscrit le : 23 décembre 2015
Version d'Excel : 2013 FR

Message par Braters » 13 décembre 2016, 14:34

Pas de soucis.

:btres:
:btres:
Avatar du membre
Christrucci
Membre habitué
Membre habitué
Messages : 101
Inscrit le : 15 juin 2015
Version d'Excel : 2013

Message par Christrucci » 13 décembre 2016, 14:40

Braters a écrit :Pas de soucis.
Une dernière question, est-ce possible de faire en sorte que la box affiche des ****** a la place du mot de passe quand ont le tape ? :D
B
Braters
Membre dévoué
Membre dévoué
Messages : 579
Appréciations reçues : 10
Inscrit le : 23 décembre 2015
Version d'Excel : 2013 FR

Message par Braters » 13 décembre 2016, 15:12

Avec un InputBox cela devient compliqué. Cependant, tu peux toujours passer par un Userform et un TextBox, dans ce cas, la solution est plus facile à mettre en place.
:btres:
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message