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

Staple1600

XLDnaute Barbatruc
Re

Pour le post#4
Je sais le pourquoi du comment ;)
Ah orthographe quand tu nous tiens!

Dans le code VBA, on pouvait lire
Sheets("Acceuil").Visible = True
et le nom de l'onglet est:
Accueil

EDITION: En relisant ton message, Patrice, c'est ce tu voulais dire, non?
J'ai donc ouvert le fichier du post#4 trop tard...
 

Staple1600

XLDnaute Barbatruc
Re

=>Patrice
Oui, mais point le demandeur je ne suis.
Donc pas mes erreurs ;)
Surtout que comme je l'ai dis, plus bas, si j'étais moi, je laisse mon projet VBA accessible.
Sinon, je suis d'accord.
D'aiileurs on trouve souvent cette "citation" dans mes posts sur XLD
Comme disait Yoda: "Le meilleur des maitres, l'échec être"
;)
 

Orson83

XLDnaute Impliqué
Alors vous avez surement un souci chez vous.
Reprenons : Vous sembliez satisfait de la première PJ. Elle marche toujours ?
Attention, mot de passe 1234
Oui, même problème avec le fichier d'origine.
Précision, je suis suis sur Windows 7 - 32bits et mon Excel 2010 est sur "Activer toutes les macros & Accès approuvé au modèle VBA.
Captures jointes.
 

Pièces jointes

  • capture-ecran-1.jpg
    capture-ecran-1.jpg
    35 KB · Affichages: 15
  • capture-ecran-2.jpg
    capture-ecran-2.jpg
    47.4 KB · Affichages: 11
  • capture-param-macros.jpg
    capture-param-macros.jpg
    96.2 KB · Affichages: 10

Orson83

XLDnaute Impliqué
@Staple1600 , évidemment ce ne sont pas tes erreurs ....;)

Seul "Dommage" 😞 nous est adressé : Dommage d'avoir publié la solution sans laisser le demandeur chercher, trouver et comprendre.
Yoda sage très grand être 👍
Quelle solution ? AUCUNE. Merci de ne pas t'attribuer les lauriers alors que tu dénigres ma demande depuis le début. Comme déjà dit plus haut, si ça ne t'intéresse pas, passe ton chemin. Maintenant STOP ou je signale ton comportement dédaigneux et moqueur au modérateur.
Inutile de répondre à ce message car tu n'apportes rien de constructif.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour tout le monde,
Je n'avais pas compris votre message au post #4. Sorry.
J'avais interprété que le fichier du post #2 marchait mais qu'après l'avoir modifié la PJ du post #4 ne marchait plus.
Alors que c'est depuis l'origine que l'erreur 9 est présente. Donc c'est indépendant du nom des feuilles, de vos macros ajoutées etc,etc.

Qu'entendez vous par : "Si je renomme le fichier" ? est ce à dire qu'il marche, mais qu'une fois renommé il ne marche plus ?

En PJ une version "simplifiée" avec uniquement à l'ouverture :
VB:
Private Sub Workbook_Open()
    Dim R As String
    R = ""
    Sheets("A").Visible = True
    While R <> "1234"
        R = InputBox("Entrez le mot de passe", "Protection")
        For Each F In Worksheets
            If F.Name <> "A" Then Sheets(F.Name).Visible = True
        Next
        Sheets("A").Visible = False
    Wend
End Sub
Attention, mot de passe 1234. Est ce que cela marche ?

NB: Je suis sous Win10 64 bits, XL2007. Mais je ne pense pas que le problème vienne de là.
 

Pièces jointes

  • Protection_Test1.xlsm
    23.5 KB · Affichages: 6

Orson83

XLDnaute Impliqué
Bonjour tout le monde,
Je n'avais pas compris votre message au post #4. Sorry.
J'avais interprété que le fichier du post #2 marchait mais qu'après l'avoir modifié la PJ du post #4 ne marchait plus.
Alors que c'est depuis l'origine que l'erreur 9 est présente. Donc c'est indépendant du nom des feuilles, de vos macros ajoutées etc,etc.

Qu'entendez vous par : "Si je renomme le fichier" ? est ce à dire qu'il marche, mais qu'une fois renommé il ne marche plus ?

En PJ une version "simplifiée" avec uniquement à l'ouverture :
VB:
Private Sub Workbook_Open()
    Dim R As String
    R = ""
    Sheets("A").Visible = True
    While R <> "1234"
        R = InputBox("Entrez le mot de passe", "Protection")
        For Each F In Worksheets
            If F.Name <> "A" Then Sheets(F.Name).Visible = True
        Next
        Sheets("A").Visible = False
    Wend
End Sub
Attention, mot de passe 1234. Est ce que cela marche ?

NB: Je suis sous Win10 64 bits, XL2007. Mais je ne pense pas que le problème vienne de là.
Bonjour sylvanu, le forum,
Cette version ne plante plus, Super !
Je disais effectivement, que l'erreur se produisait à la première ouverture et si le fichier était renommé, ce qui n'est plus le cas :)
Je remarque néanmoins 2 autres "petits" soucis.
- Je ne peux plus annuler ou fermer la msgbox sauf ALT CTRL SUPPR ou le bon mot de passe.
- Une fois le bon mot de passe saisi, toutes les feuilles s'ouvrent. L'ouverture sur la feuille 1 (ou accueil si renommée) ou pourquoi pas les feuilles présentes lors du dernier enregistrement.
Un grand merci encore pour votre aide.
François
 

Patrice33740

XLDnaute Impliqué
Bonjour,

Quelle solution ? AUCUNE. Merci de ne pas t'attribuer les lauriers alors que tu dénigres ma demande depuis le début. Comme déjà dit plus haut, si ça ne t'intéresse pas, passe ton chemin. Maintenant STOP ou je signale ton comportement dédaigneux et moqueur au modérateur.
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 :
Et dans ceux des post #4 et #16 il n'y a pas de feuille "Acceuil"
Comme dit VBA : erreur d'indice
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 :
 

Pièces jointes

  • Protection V2.xlsm
    29.8 KB · Affichages: 6
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re bonjour,
Cette version ne plante plus, Super !
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. :)
 

Pièces jointes

  • Protection_Test2.xlsm
    25.4 KB · Affichages: 10
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Patrice,
Il y a en fait deux problèmes.
Le second est celui que vous évoqué.
Le premier est que l'erreur 9 se produit sur le PC de Tchotchodu avec le fichier du post #2 alors que l'on a seulement Feuil1 à Feuil11. Et ça je ne me l'explique pas.
"Comme si" le fait de mettre toutes les feuilles en xlSheetVeryHidden puis ensuite en Visible ne permettait plus de faire un Sheets("Feuil1").Select.
Oui, même problème avec le fichier d'origine.
D'où l'idée de supprimer cette partie à l'ouverture qui en fait ne servait que dans un cas vraiment tordu.
 

Patrice33740

XLDnaute Impliqué
Bonjour Patrice,
Il y a en fait deux problèmes.
Le premier est que l'erreur 9 se produit sur le PC de Tchotchodu avec le fichier du post #2 alors que l'on a seulement Feuil1 à Feuil11. Et ça je ne me l'explique pas.
"Comme si" le fait de mettre toutes les feuilles en xlSheetVeryHidden puis ensuite en Visible ne permettait plus de faire un Sheets("Feuil1").Select.

D'où l'idée de supprimer cette partie à l'ouverture qui en fait ne servait que dans un cas vraiment tordu.
C'est pas le fichier du post #2 qui ne fonctionne pas, c'est une fois modifié qu'il y a une erreur (post #4).

D'autre part, il n'est pas possible de masquer toutes les feuilles d'un classeur, il doit toujours y avoir au moins une feuille visible, sinon une erreur se produit lors du masquage de la feuille dernière visible.

Par contre, j'ai relu tous les post et je ne vois pas où Tchotchodu signale cette erreur 9 dans le fichier du post #2 avec seulement les Feuil1 à Feuil11 ???
 
Dernière édition:

Discussions similaires

Réponses
5
Affichages
682
Compte Supprimé 979
C

Statistiques des forums

Discussions
314 710
Messages
2 112 114
Membres
111 428
dernier inscrit
Andrya