Code VBA mots de passe ouverture fichier

manueHN Messages postés 36 Statut Membre -  
 manueHN -
Bonjour,

Je souhaiterais qu'il soit demandé un mot de passe à l'ouverture d'un fichier Excel en particulier.

Sur ce fichier, il y a plusieurs utilisateurs, donc plusieurs mot de passe.

Chaque mot de passe doit renvoyer une feuille donnée, qui est différente en fonction de mot de passe.

Pour le moment, j'ai réussi à écrire un code qui fonctionne plus ou moins.
Un mot de passe est bien demandé à l'ouverture du fichier, s'il est bon, l'utilisateur accède à la feuille souhaitée. Par contre, s'il se trompe de mot de passe, il a quand même accès au fichier tel que l'ancien utilisateur l'a laissé. Comment pourrais-je faire pour bloquer l'utilisateur si le mot de passe correspond à aucun mot de passe possible ?

Sinon, autre problème, pour que le mot de passe soit demandé à l'ouverture du fichier, j'ai utilisé la fonction Auto_Open(), après avoir lu différents forums.

Mais cela a engendré un gros problème sur le réseau de mon entreprise. Au début, ce fichier dès qu'il avait été ouvert une première fois dans la journée, se rouvrait tout seul. Maintenant, sur mon pc seulement, c'est tous les fichiers qui disposent d'une macro qui se ré-ouvrent tout seul !!! Je ne sais plus quoi faire ?

J'ai bien lu sur internet que je devrais utiliser la fonction Worksheet_Open(), mais je n'arrive pas à la faire fonctionner.

Merci pour votre aide.

5 réponses

  1. eljojo_e Messages postés 1255 Statut Membre 155
     
    Bonjour, pour le auto_open, je ne sais pas par contre, pour ton mot de passe pourrais-tu nous montrer le code ????
    0
  2. manueHN Messages postés 36 Statut Membre
     
    Bonour,

    Oui je suis désolée, hier j'ai oublié de vous mettre un extrait. J'ai saisi ce code dans un module 1 dans VBA :

    Private Sub Auto_Open()

    Password = InputBox("mot de passe", vbCritical)
    'Rend la feuille visible si mot de passe OK
    If Password = "JLRLWEL" Then
    Sheets("Référentiel_ressources").Visible = True
    Sheets("Référentiel_projets").Visible = True
    Sheets("ADH").Visible = True
    Sheets("API").Visible = True
    Sheets("CAN").Visible = True
    Sheets("DDE").Visible = True
    Sheets("DGI").Visible = True
    Sheets("DPE").Visible = True
    Sheets("EIG").Visible = True
    Sheets("ELE").Visible = True
    Sheets("ETH").Visible = True
    Sheets("FCL").Visible = True
    Sheets("FLE").Visible = True
    Sheets("FMA").Visible = True
    Sheets("FNO").Visible = True
    Sheets("GBO").Visible = True
    Sheets("HHE").Visible = True
    Sheets("JBO").Visible = True
    Sheets("JDE").Visible = True
    Sheets("JLR").Visible = True
    Sheets("JMH").Visible = True
    Sheets("JNO").Visible = True
    Sheets("LDA").Visible = True
    Sheets("LFR").Visible = True
    Sheets("LNE").Visible = True
    Sheets("PCR").Visible = True
    Sheets("PME").Visible = True
    Sheets("PMI").Visible = True
    Sheets("PPO").Visible = True
    Sheets("PSA").Visible = True
    Sheets("SCO").Visible = True
    Sheets("SDE").Visible = True
    Sheets("SMA").Visible = True
    Sheets("SME").Visible = True
    Sheets("YMO").Visible = True
    Sheets("Bdd_hres_globale").Visible = True
    Sheets("Synthèse_hres").Visible = True

    ElseIf Password = "ad2ht5" Then
    Sheets("ADH").Visible = True

    'Bloque l'accès aux autres feuilles
    Sheets("Référentiel_ressources").Visible = xlVeryHidden
    Sheets("Référentiel_projets").Visible = xlVeryHidden
    Sheets("API").Visible = xlVeryHidden
    Sheets("CAN").Visible = xlVeryHidden
    Sheets("DDE").Visible = xlVeryHidden
    Sheets("DGI").Visible = xlVeryHidden
    Sheets("DPE").Visible = xlVeryHidden
    Sheets("EIG").Visible = xlVeryHidden
    Sheets("ELE").Visible = xlVeryHidden
    Sheets("ETH").Visible = xlVeryHidden
    Sheets("FCL").Visible = xlVeryHidden
    Sheets("FLE").Visible = xlVeryHidden
    Sheets("FMA").Visible = xlVeryHidden
    Sheets("FNO").Visible = xlVeryHidden
    Sheets("GBO").Visible = xlVeryHidden
    Sheets("HHE").Visible = xlVeryHidden
    Sheets("JBO").Visible = xlVeryHidden
    Sheets("JDE").Visible = xlVeryHidden
    Sheets("JLR").Visible = xlVeryHidden
    Sheets("JMH").Visible = xlVeryHidden
    Sheets("JNO").Visible = xlVeryHidden
    Sheets("LDA").Visible = xlVeryHidden
    Sheets("LFR").Visible = xlVeryHidden
    Sheets("LNE").Visible = xlVeryHidden
    Sheets("PCR").Visible = xlVeryHidden
    Sheets("PME").Visible = xlVeryHidden
    Sheets("PMI").Visible = xlVeryHidden
    Sheets("PPO").Visible = xlVeryHidden
    Sheets("PSA").Visible = xlVeryHidden
    Sheets("SCO").Visible = xlVeryHidden
    Sheets("SDE").Visible = xlVeryHidden
    Sheets("SMA").Visible = xlVeryHidden
    Sheets("SME").Visible = xlVeryHidden
    Sheets("YMO").Visible = xlVeryHidden
    Sheets("Bdd_hres_globale").Visible = xlVeryHidden
    Sheets("Synthèse_hres").Visible = xlVeryHidden

    'Etc... en fonction des différents mot de passe (32)
    End If

    End Sub

    Merci pour votre aide
    0
  3. eljojo_e Messages postés 1255 Statut Membre 155
     
    Moi je te proposerai de faire comme ca :

    If Password = "JLRLWEL" Then

    sheets( .....

    goto a:

    end if

    If Password = "ad2ht5" Then

    sheets( .....

    goto a:

    end if

    Et à la fin du code tu met :

    'Quitte Excel
    Application.Quit

    'Libère la mémoire
    Set ApplicationExcel = Nothing
    a:

    end sub
    0
  4. manueHN Messages postés 36 Statut Membre
     
    Bonjour,

    Désolée de ne répondre que maintenant mais j'ai du m'absenter hors de France pendant 10 jours !

    Je viens d'essayer et ton code fonctionne à merveilles ! je te remercie. Au moins un problème de résolu.

    Maintenant, il me reste le principal et le plus gênant : le fait que mon fichier ou qu'un autre fichier avec des macros, ouvert précédemment, se ré-ouvre tout seul.

    Je pense que ça vient de la fonction Auto_open() que j'ai mis dans mon code VBA du module 1. Mais je n'arrive pas à faire autrement.

    En fait, je souhaite qu'un mot de passe soit demandé à l'ouverture de ce fichier et seulement pour ce fichier.

    Quelqu'un peut-il m'aider SVP ?

    Merci d'avance,

    Emmanuelle
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Yoda
     
    Bonjour,

    Si tu veux executer une macro automatiquement à l'ouverture du fichier, tu dois mettre la procédure prédéfinie Workbook_Open() dans le code de ThisWorkBook

    Private Sub Workbook_Open()
    Mot_De_Passe
    ...
    ...
    End Sub

    ;)
    0
    1. manueHN
       
      bonjour,

      J'ai déjà essayé mais lorsque je réouvre mon fichier, excel ne me demande plus de mot de passe pour y accéder.

      Donc je ne sais plus comment faire ?
      0