XL 2010 Macro pour mot de passe à l'ouverture d'Excel

Orson83

XLDnaute Impliqué
Bonsoir le forum,
Je rencontre un problème pour protéger l'ouverture de mon fichier Excel. En effet j'aimerai qu'à l'ouverture de mon fichier, Excel me demande un mot de passe avant de montrer les onglets. J'ai essayé avec les options présentes dans Excel mais le problème c'est qu'elles permettent soit la modification du mot de passe, soit carrément la suppression.
Je me demandais s'il était possible de faire cela avec une macro qui ouvrirait une message box pour saisir un mot de passe qui serait déjà renseigné dans le code et qui serait unique. J'ai fouillé Internet dans tous les sens mais je n'ai pas trouvé de macro exploitable.
Merci pour votre aide.
PS : ce mot de passe serait différent de celui qui protège déjà mon classeur et mes feuilles.
 
Solution
Ci joint une PJ, seules les feuilles paires sont visibles, et aucune n'est accessible par le menu afficher.Regarde la pièce jointe 1094681
Je ne comprends pas pourquoi elles ne seraient pas toutes affichées (sauf la A mais ce problème est résolu).
Je les ai toutes passées en xlVisible dans les propriétés VBE, puis masqué la feuille 2 par le clic droit dans l'onglet, enregistré XL et à la réouverture d'Excel impossible de la ré-afficher au clic droit dans l'onglet.
Je pense vous avoir suffisamment sollicité et pour cela je vous dis un grand MERCI.
Très belle soirée.
Bien amicalement.
François

Orson83

XLDnaute Impliqué
Re bonjour,

Evidemment j'ai supprimé la partie qui posait problème sur votre PC. :)
Problème que je n'ai vraiment pas compris.
( en fait cette partie était là pour protéger dans un cas très particulier : ouverture du fichier avec bon mot de passe, enregistrement, kill du process, réouverture du fichier sans macro activées, alors les feuilles sont visibles. )

Ensuite ce sont de novelles demandes. En PJ ( mdp : 1234 ):
1- On a 3 tentatives pour entrer le bon mot de passe, au 4ème le fichier se ferme.
2- Je mémorise l'état des feuilles à la fermeture dans la page "A". A tester.

Mais à force de prendre des sécurités sur des sécurités .... vous allez finir par être bloquées par celles ci. :)
Merci sylvanu, je vais tester cette nouvelle version en fin d'après midi. Bon dimanche.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

=>Tchotchodu31
[demande de précisions]
J'ai relu le message#1 attentivement
Et j'ai une question
Dans le contexte d'utilisation, qui est l'utilisateur final?
Toi ou un tiers?
Je suppose un tiers (car tu ne vas t'embeter à mettre des mots de passe sur un classeur que toi seul utilise)
Donc tu diffuses ton classeur à un tiers qui aura ou n'aura pas le mot de passe?
Car si il ne l'a pas, il ne peux utiliser le classeur, non ?
(sauf il est curieux et dispose d'une connexion internet)
Et si tu diffuses le classeur en lui adressant également le mot de passe pour afficher telle ou telle feuille, même remarque que précedemment.
[/demande de précisions]

Une dernière remarque (ou observation si tu préfères)
Une fois le classeur diffusé, il suffit de l'enregistrer en *.xlsx pour le code VBA disparraisse et par conséquent la demande de mot de passe également.

NB: Comme il neige ici, je reviens, pour le fun (et pour passer le temps) avec une procédure all-in-one
 

Staple1600

XLDnaute Barbatruc
Re

Voici donc une all-in-one
VB:
Sub test_DP() 'deprotection des feuilles
pro_depro "TESTCLAS", False
End Sub
Sub test_P() 'protection des feuilles
pro_depro "TESTCLAS"
End Sub
Private Sub pro_depro(sPassW$, Optional verrou As Boolean = True)
Dim Sh As Worksheet
   Select Case verrou
   Case True
        For Each Sh In Worksheets
           Sh.Protect sPassW, UserInterfaceOnly:=True
        Next
    Case Else
    For Each Sh In Worksheets
           Sh.Unprotect sPassW
        Next
    End Select
End Sub
 

Orson83

XLDnaute Impliqué
Bonjour le fil

=>Tchotchodu31
[demande de précisions]
J'ai relu le message#1 attentivement
Et j'ai une question
Dans le contexte d'utilisation, qui est l'utilisateur final?
Toi ou un tiers?
Je suppose un tiers (car tu ne vas t'embeter à mettre des mots de passe sur un classeur que toi seul utilise)
Donc tu diffuses ton classeur à un tiers qui aura ou n'aura pas le mot de passe?
Car si il ne l'a pas, il ne peux utiliser le classeur, non ?
(sauf il est curieux et dispose d'une connexion internet)
Et si tu diffuses le classeur en lui adressant également le mot de passe pour afficher telle ou telle feuille, même remarque que précedemment.
[/demande de précisions]

Une dernière remarque (ou observation si tu préfères)
Une fois le classeur diffusé, il suffit de l'enregistrer en *.xlsx pour le code VBA disparraisse et par conséquent la demande de mot de passe également.

NB: Comme il neige ici, je reviens, pour le fun (et pour passer le temps) avec une procédure all-in-one
Bonjour Staple1600,
Effectivement, il s'agit d'un tiers à qui je vais donner le mot de passe.
L'idée c'est que ce mot de passe soit unique donc pas modifiable. Pour faire simple, c'est la même chose que ce que propose Excel (Portéger le classeur>Chiffrer avec mot passe) mais sans le chiffrage et avec un mot de passe non modifiable.
Je vais tester ta macro du post #50 et reviens vers toi.
Merci pour ce travail 👍
 

Orson83

XLDnaute Impliqué
Re

Voici donc une all-in-one
VB:
Sub test_DP() 'deprotection des feuilles
pro_depro "TESTCLAS", False
End Sub
Sub test_P() 'protection des feuilles
pro_depro "TESTCLAS"
End Sub
Private Sub pro_depro(sPassW$, Optional verrou As Boolean = True)
Dim Sh As Worksheet
   Select Case verrou
   Case True
        For Each Sh In Worksheets
           Sh.Protect sPassW, UserInterfaceOnly:=True
        Next
    Case Else
    For Each Sh In Worksheets
           Sh.Unprotect sPassW
        Next
    End Select
End Sub
... Je viens de tester ta macro.
Elle est super pour la protection des feuilles mais ce que je recherche à faire c'est une protection par MDP à l'ouverture d'Excel.
Donc 2 niveaux de protection :
- 1 à l'ouverture -> le mot de passe donné à l'utilisateur
-2 protection du classeur par mot de passe en dur dans le code pour protéger mon travail (MDP confidentiel) -> ta macro et celle que j'ai déjà
Il s'agit du travail réalisé par sylvanu concernant le point 1.
 

Staple1600

XLDnaute Barbatruc
Re, Bonsoir sylvanu

Un tiers AKA I.C.C donc
(et parce que la neige tombe toujours), et que dès je lis le mot tiers
1) je pense comptabilité
2) je me rappelle illico ceci
3) Ce qui m'oblige à sortir mon T-Shirt: Trust no one
;)

["allitération" dominicale pour cause de neige"]
Enfin, si tu accordes à ton tiers un quart de ta confiance, et que le dit tiers ne sait pas un cinquième des faiblesses sécuritaires d'Excel, alors sans doute, ton travail ne sera pas au trente-sixième dessous après avoir quitté les rivages de ton disque dur.
;)
[/"allitération" dominicale pour cause de neige"]

NB: Comme je l'ai précise ma macro all-in-one (et comme son nom le laisse devenir), n'est là que pour le fun (et pour la curiosité)
Elle fait la même chose que les macros Sub Protection_classeur() et Sub Deprotection_classeur()
Je juste fait de deux macros une macro, ce que j'appelle donc un all-in-one.
 
Dernière édition:

Orson83

XLDnaute Impliqué
Bonjour,


Il n'y a rien de dédaigneux ou de moqueur dans mes réponses.
Je t'ai suggérée la solution au post #16 et elle est précisée au post #31 ci-dessous :

Staple t'a donné la même solution au post #33 pour le fichier du post #21

Mais tu n'as pas fais l'effort de corriger toi-même ton fichier.
Ici c'est un forum d'entraide, on est pas là pour faire le travail à ta place !
Tu attends qu'on te donne un fichier corrigé alors qu'il suffisait de vérifier ton code et de remplacer "Acceuil" par 'Accueil".
La preuve, ton premier fichier corrigé fonctionne parfaitement :
...
Toujours plantage au démarrage. Effectivement, accueil est mal orthographié. Mais le problème est toujours là du coup la feuille Accueil est en xlVeryHidden alors qu'Excel devrait s'ouvrir en A1 de la page d'accueil justement.
 

Orson83

XLDnaute Impliqué
Re,
Vous avez testé la PJ du post #42 ?

Re,
Vous avez testé la PJ du post #42 ?
Oui, j'ai pris un peu de temps pour l'analyser et voir si de mon coté je pouvais faire quelque chose, mais non, j'ai toujours des erreurs.
- Plantage à la première ouverture (Erreur 91) mais cette fois après la saisie du mot de passe. Les feuilles essaient de s'ouvrir, puis boite de débogage
- La feuille A dédiée à l'ouverture se ferme mais elle reste visible au clic droit dans les onglets
- Les feuilles de 2 à 11 sont visibles, ou pas visibles (ça c'est OK) mais si elles certaines ne sont pas visibles avant de fermer Excel par enregistrement elles passent en xlVeryHidden et on ne peut plus les ré-ouvrir au redémarrage d'Excel
Je joins le même fichier (sans modif de ma part) avec des annotations.
 

Pièces jointes

  • Protection_Test2a.xlsm
    28.6 KB · Affichages: 20

Orson83

XLDnaute Impliqué
Le fichier que tu viens de poster (#56) fonctionne parfaitement (chez moi) .
Tu n'as aucune erreurs citée au #56 ?
- Plantage à la première ouverture (Erreur 91) mais cette fois après la saisie du mot de passe. Les feuilles essaient de s'ouvrir, puis boite de débogage
- La feuille A dédiée à l'ouverture se ferme mais elle reste visible au clic droit dans les onglets
- Les feuilles de 2 à 11 sont visibles, ou pas visibles (ça c'est OK) mais si elles certaines ne sont pas visibles avant de fermer Excel par enregistrement elles passent en xlVeryHidden et on ne peut plus les ré-ouvrir au redémarrage d'Excel
 

Discussions similaires

Réponses
5
Affichages
710
Compte Supprimé 979
C

Statistiques des forums

Discussions
315 091
Messages
2 116 110
Membres
112 662
dernier inscrit
lou75