mot de passe à l'ouverture d'un classeur

J

jo

Guest
Bonjour,

je souhaite que soit demandé un mot de passe de protection du classeur lors de son ouverture, en utilisant : Public Sub Workbook_Open()

Je ne sais pas s'il faut utiliser un inputbox ou textbox (choses que je maîtrise très mal......)

Pourriez vous me donner un coup de main à ce sujet en me donnant un exemple simple de code approprié......

Merci d'avance et @ +
 
T

Temjeh

Guest
Bonsoir Jo

Ceci dans le Workbook avec mot de passe à modifié: 1234

Private Sub Workbook_Open()
Dim Password As String
Password = Application.InputBox(prompt:="Entrez le mot de passe", Title:="Verrouillage", Default:="", Type:=2)
If Not (Password = "1234") Then
ThisWorkbook.Close
End If
End Sub

A++

Temjeh
 
P

Pascal76

Guest
Bonjour

Cette méthode de protection que tu demandes n'est pas très efficace car si l'utilisateur n'active pas les macros il a accès au fichier tranquille.

Pour les mots de passe à l'ouverture tu peux le faire en faisant "enregistrer sous" cliquer sur "Outils" puis "Options générales" et là tu peux mettre un mot de passe à l'ouverture.

Bonne journée

Pascal
 
J

jo

Guest
Merci à tous les deux pour vos conseils très profitables, qui m'ont permis de résoudre en grande partie le problème qui se posait à moi....

Pour revenir à la remarque de Pascal76, est-il possible par une macro, d'interdire de ne pas activer les macros. Dans, le cas où l'utilisateur refuse de les activer, le fichier se ferme automatiquement ?
 
P

Pascal76

Guest
Bonjour

une méthode que j'utilise c'est de créer une feuille (appelons-là Avertissement) avec juste de noter dessus :"désolé il faut activer les macros pour se servir du fichier".

Ensuite dans le Private Sub Workbook_BeforeClose(Cancel As Boolean) du classeur tu affiches ta feuille Avertissement et tu caches les autres avec xlveryhidden

et dans Private Sub Workbook_Open() tu rends toutes tes feuilles visibles puis tu caches la feuille Avertissement

Voilà c'est une méthode pas très sophistiquée mais qui suffit dans mon cas

Sinon voici un lien utile

Lien supprimé

Pascal
 
J

jo

Guest
Bonjour à tous,

Merci à Pascal pour son astuce qui est simple et efficace. Cela m'a permis de résoudre mon problème.

Cependant, juste une petite remarque, si un enregistrement est réalisé ailleurs que sur la feuille "avertissement", cette dernière n'apparait plus à l'ouverture du fichier, avec ou sans activation des macros.

Pour bien faire, il conviendrait de faire en sorte, lors d'un enregistrement, que ce dernier soit fait à partir la feuille "avertissement".

@ + et bon appétit à tous...........

Jo.
 
P

Pascal76

Guest
Re

Excuse-moi mais je ne comprends pas ce que tu signales dans ton dernier post.
En effet si dans le Private Sub Workbook_BeforeClose(Cancel As Boolean) du classeur tu affiches ta feuille Avertissement et tu caches les autres avec xlveryhidden, à l'ouverture sans macro tu as la feuille avertissement affichée et pas les autres. Si tu as bien mis dans Private Sub Workbook_Open() toutes tes feuilles visibles puis caché la feuille Avertissement alors à l'activation des macros ta feuille avertissement est invisible et les autres visibles.

Mais je n'ai peut-être pas tout pigé, il doit me manquer un truc.

Bonne app

Pascal
 
J

jo

Guest
Je pense que cela vient du fait que j'utilise :
sheets("...").visible=True
et
sheets("...").visible=False

et non pas xlveryhidden.

En effet, en utilisant xlveryhidden, j'ai un problème car je ne connais pas la syntaxte permettant l'effet inverse, c'est à dire faire réapparaître la feuille.

Merci de bien vouloir m'éclairer sur le sujet....

P.S: je sais, ça doit être simple mais je débute alors je bloque souvent sur des problèmes du type...
 
J

jo

Guest
Merci pour cette leçon de syntaxe et pour le délai de réponse (proche de la vitesse de la lumière...).

Cependant, j'ai toujours ce problème lorsque j'enregistre. Pour plus de clarté et de compréhension, voici mes codes:

'Macro à l'ouverture

Private Sub Workbook_Open()
Call Masquer_Avertissement
Call InterdireCopierCouper
Dim Password As String
Password = Application.InputBox(prompt:="Entrez le mot de passe", Title:="Deverrouillage des fonctions couper/coller", Default:="", Type:=2)
If (Password = "1234") Then
Call RetablirCopierCouper
Dim Wksht As Worksheet
For Each Wksht In Me.Worksheets
Wksht.Unprotect ("1234")
Next Wksht
End If
End Sub

'La Macro Masquer_Avertissement

Public Sub Masquer_Avertissement()
Sheets("vrd").Visible = True
Sheets("recap").Visible = True
Sheets("bpu").Visible = True
Sheets("activation macros").Visible = xlVeryHidden
End Sub



'Macro à la fermeture

Private Sub workbook_BeforeClose(Cancel As Boolean)
Call RetablirCopierCouper
Dim Wksht As Worksheet
For Each Wksht In Me.Worksheets
Wksht.Protect Password:="1234", UserInterfaceOnly:=True
Next Wksht
Call Avertissement
End Sub

'La Macro Avertissement

Public Sub Avertissement()
Sheets("activation macros").Visible = True
Sheets("vrd").Visible = xlVeryHidden
Sheets("recap").Visible = xlVeryHidden
Sheets("bpu").Visible = xlVeryHidden
End Sub


Pour plus de détails, InterdireCouperCopier permet d'empécher l'utilisation de ces fonctions, car j'ai dans mon tableau de nombreuses lignes cachées que je ne souhaite pas mettre à la disposition des personnes à qui je transmets le fichier. J'ai remarqué que même avec une protection, un simple copier et coller peut dévoiler les lignes masquées. Donc voila le sens de cette macro.

Pour revenir au problème initial, voila ce qui se passe. Un utilisateur ouvre le fichier, accepte l'activation des macros et les feuilles bpu, recap et vrd lui sont ouvertes. Il procède à une sauvegarde et ferme le fichier.
A la prochaine ouverture du fichier, ce dernier s'ouvre et fait apparaître les feuilles bpu, recap et vrd, qu'il ait accepter l'activation des macros ou non.

Voila tout. J'espère avoir été plus clair que dans mon précédent message....

@+

Jo.
 
P

Pascal76

Guest
Alors là ça m'épate !!

J'utilise régulièrement cette méthode et j'ai jamais rencontré le pbe.

Tu peux envoyer ton fichier avec toutes tes feuilles sans aucune données pour voir STP (mais avec les macros LOL)

Pascal
 
J

jo

Guest
ci-joint le fichier qui fait tant réflechir.....

@ +
 

Pièces jointes

  • DQE_TYPE-indice3-Protect2.zip
    18.2 KB · Affichages: 62
  • DQE_TYPE-indice3-Protect2.zip
    18.2 KB · Affichages: 74
  • DQE_TYPE-indice3-Protect2.zip
    18.2 KB · Affichages: 64
P

Pascal76

Guest
Bonjour

Pour ton problème une première méthode est de forcer l'enregistrement à la fermeture en faisant ceci

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim Wksht As Worksheet
For Each Wksht In Me.Worksheets
Wksht.Protect Password:="1234", UserInterfaceOnly:=True
Next Wksht
Call Avertissement
ThisWorkbook.Save '<<<Ajout ici
End Sub

Je regarde si il y a autre chose.

Pascal
 
J

jo

Guest
Bonjour,

merci pour ta réponse.

Ta solution fonctionne mais je ne suis pas très favorable au fait d'enregistrer le fichier à chaque sortie : ça peut vite être le bazar....

Je serais plutôt partisan d'une solution qui consiste à forcer au retour à la page avertissement lorsqu'un enregistrement est effectué. Donc la fois suivante, le fichier se réouvrira sur la page avertissement...qui disparaitra une fois l'acceptation de l'activation des macros.

Cependant, je manque de connaissances pour trouver la ligne de code correspondante.

Merci de me donner ton avis sur la question.

@ +

Jo.
 
P

Pascal76

Guest
Re

Voici un petit truc tu dis si ça te convient .

Pascal
 

Pièces jointes

  • DQE_TYPE-indice3-Protect2.zip
    16.1 KB · Affichages: 77
  • DQE_TYPE-indice3-Protect2.zip
    16.1 KB · Affichages: 79
  • DQE_TYPE-indice3-Protect2.zip
    16.1 KB · Affichages: 71

Discussions similaires

Réponses
2
Affichages
372
Réponses
5
Affichages
624
Compte Supprimé 979
C
Réponses
4
Affichages
758

Statistiques des forums

Discussions
314 177
Messages
2 106 872
Membres
109 712
dernier inscrit
big