Ouvrir fichier en évitant mot de passe

Bonjour le Forum,

Je suis à la recherche d'une procédure d'ouverture d'un classeur protéger par mot de passe.

Sur mon classeur 1, se trouve plusieurs onglets (une vingtène) protégé par mot de passe à son ouverture, j'aimerai à partir d'un autre classeur pouvoir atteindre directement 2 ou 3 onglets bien précis du classeur 1 sans passer par le mot de passe, si cela est possible.

J'ai bien la macro pour ouvrir le classeur 1 à partir du l'autre classeur, mais je bloque sur la suite.

Pourriez-vous m'aider sur ce sujet svp, merci.

Mon code d'accès au classeur 1

Sub Ouvrir()
 Dim Chemin As String, NomFichier As String
   Chemin = "C:\Users\F Leroy\Desktop\"
   NomFichier = "Administratif conso sslia mdp V0"
 Workbooks.Open Filename:=Chemin & NomFichier
'Poursuivre code afin d'atteindre les onglets souhaités sans accès au formulaire

End Sub

Le login concerné est FIC dans l'onglet MDP.

Pouvez-vous me confirmer ci cela est faisable, merci.

Je joins le lien du classeur 1 pour mieux ce rendre compte

Merci à vous

pompaero

Bonjour,

à tester,

Sub Ouvrir()
Dim Chemin As String, NomFichier As String
Dim Wk As Workbook, f As Worksheet
Chemin = '"C:\Users\F Leroy\Desktop\"
NomFichier = '"Administratif conso sslia mdp V0.xlsm"

Set Wk = Workbooks.Open(Chemin & NomFichier)
With Wk
    For Each f In .Worksheets
        Wk.Sheets(f.Name).Visible = True
    Next
End With
End Sub

Bonjour i20100,

Merci infiniment d'être arrêté et d'avoir répondu à mon fil.

Je sais ce que je demande n'est pas évident à mettre en place. Après avoir lu ta proposition et l'avoir testé, cela s'approche de très près du résultat attendu. En faisant les tests je me suis aperçu d'un dysfonctionnement qui crée un bug par la suite du mes explications pas assez précise, désolé.

Comme on peut voir, il y a des onglets correspondant à des niveaux d'accès (4 actuellement), il me faut ajouter un onglet "niv 5", spécialement pour cette requette afin d'éviter le bug à la fermeture du classeur "Administratif conso sslia mdp V0.xlsm".

Le principe de fonctionnement pour le moment du classeur "Administratif conso sslia mdp V0.xlsm" est :

1) A son ouverture seul l'onglet Accueil est visible, à l'aide du formulaire Login et Mot de passe , on arrive sur un onglet niveau (1 ou 2 ou 3 ou etc...)

2) Une fois arrivé sur l'onglet niveau (1 ou 2 ou 3 ou etc...), nous pouvons accéder aux onglets autorisés.

3) Le retour (pour fermer le classeur) passe automatique par l'onglet niveau (1 ou 2 ou 3 ou etc....) puis l'onglet Accueil.

Pour ma requette, ne sachant absolument pas comment faire j'imagine une macro à partir d'un autre classeur avec le principe suivant :

1) Ouverture du classeur "Administratif conso sslia mdp V0.xlsm", (ça c'est fait et fonctionne)

2) Sans voir le formulaire UFldent, inscrire dans les textbox correspondant le (login et mot de passe), valider par macro, afin d'arriver sur l'onglet niv 5. (ou arriver directement sur niv 5 sans passer par le UFIdent, si cela est possible et ne créer pas de bug).

3) Ensuite nous pouvons accéder aux onglets autorisés et fermer comme le fonctionnement normal.

Je ne sais pas si mon idée est parfaite et ne sachant pas trop comment faire c'est pour cela que je vous fais appel.

Merci de votre

Je joins le classeur avec l'onglet niv 5 ajouté.

Cordialement

pompaero.

re,

ce n'était qu'un exemple, tu peux lire une feuille sans même l'afficher.

je ne comprend pas vraiment quel est ton but final,

quel info veux-tu récupérer sur ce fichier ?

Re,

Désolé, le but final est d'avoir accès aux onglets FicVPA, Fic64, Fic70, Fic60, FicHebdo (et certainement niv 5, pour la fermeture du classeur) librement (sans effectuer le mot de passe) à partir d'un autre classeur, car se sont des documents que l'on renseigne tous les jours.

Cdlt

pompaero

re,

quel information veut tu lire sur les onglets FicVPA, Fic64, Fic70, Fic60, FicHebdo (et autre) ?

Re,

Nous voulons accéder librement à ces onglets FicVPA, Fic64, Fic70, Fic60, FicHebdo, afin de pouvoir les renseigner journalièrement.

re,

il faut enlever le mdp pour écrire,

voici un exemple,

Sub Ouvrir_et_Écrire()
Dim Chemin As String, NomFichier As String
Dim Wk As Workbook, f As Worksheet
Chemin = "C:\Users\F Leroy\Desktop\"
NomFichier = "Administratif conso sslia mdp V0.xlsm"

Set Wk = Workbooks.Open(Chemin & NomFichier)
With Wk
    For Each f In .Worksheets
      Select Case f.Name
       Case "FicVPA":
            With Wk.Sheets(f.Name)
                .Unprotect "MonPW"
                .Range("A55") = "test"  'exemple
                .Protect "MonPW"
            End With

       Case "Fic64":
            With Wk.Sheets(f.Name)
                .Unprotect "MonPW"
                .Range("A55") = "test"  'exemple
                .Protect "MonPW"
            End With
'      etc...
       End Select
    Next f
End With
End Sub

Re,

Après tests, on arrive bien sur FicVPA, etc... mais au moment de fermer le classeur il y a bug.

En simple quand on utilise le classeur "Administratif conso sslia mdp V1.xlsm" avec le formulaire UFIdent en utilisant l'utilisateur FIC et Mdp util7, l'onglet "accès niv5 est accessible qui permet d'accéder aux onglets "FicVPA, Fic64, etc....

Nous aimerions à partir d'un autre classeur par macro, ce même principe automatisé.

Vraiment désolé, mais j'aimerai tellement que cela fonctionne.

Cdlt

pompaero

Re,

Est ce qu'il est possible de l'adapter seulement à l'onglet "acces niv5" car c'est la fermeture du classeur qui bug .

Meri

Cdlt

pompaero

re,

voilà pour la feuille "acces niv5"

Sub Ouvrir_et_Écrire()
Dim Chemin As String, NomFichier As String
Dim Wk As Workbook, f As Worksheet
Chemin = "C:\Users\F Leroy\Desktop\"
NomFichier = "Administratif conso sslia mdp V0.xlsm"

Set Wk = Workbooks.Open(Chemin & NomFichier)
With Wk.Sheets("acces niv5")
    .Unprotect "MonPW"
    .Range("A55") = "test"  'exemple
    .Protect "MonPW"
End With
End Sub

Bonsoir i20100,

d'abord j'aimerai te remercier de supporter mon fil qui à l'air compliqué, j'en conçois.

Bon désolé la dernière solution ne fonctionne pas comme je l'imaginai... Serait il pas mieux de passer par le formulaire directement en automatique, c'est à dire;

1) Ouverture du classeur "Administratif conso sslia mdp V0.xlsm"

2) Ouverture Formulaire UFIdent

3) Txtbox Login = "FIC"

4) Txtbox MDP = "util7"

5) Bouton valider (CmdBValid) en click valider automatique (si cela est possible) afin d'activer le code ci-dessous.

6) Fermeture du Formulaire UFIdent

Private Sub CmdBValid_Click()
Dim li, ligne As Integer
'-----------------------------------------------------------
'Recherche du Login et Mot de passe exact
  On Error Resume Next
  Err.Clear
  Dim Test
  Test = Application.WorksheetFunction.Match(Me.TBLogin, Range("ListeLogin"), 0)
  If Err.Number <> 0 Then
    MsgBox "Le login saisi n'existe pas...."
    On Error GoTo 0
    Exit Sub
  End If
  On Error GoTo 0

  If Me.TBMDP <> Application.WorksheetFunction.Index(Range("ListeLogin").Offset(0, 1), Test, 1) Then
    MsgBox "Le mot de passe n'est pas conforme..."
    Me.TBMDP = ""
    Me.TBMDP.SetFocus 'remet le focus dans TBMDP
    Exit Sub
  End If
'-----------------------------------------------------------
'Recherche de la première feuille à activer (Niveau)
If Me.TBLogin = "Admin" Then
    FirstFeuilleToActivate = "MDP"
  Else
    With Sheets("MDP")
        Set li = .Range("ListeLogin").Find(Me.TBLogin)
        If Not li Is Nothing Then
            ligne = li.Row
            If .Range("F" & ligne) = "x" Then
                FirstFeuilleToActivate = "Accès niv1"
            ElseIf .Range("G" & ligne) = "x" Then
                FirstFeuilleToActivate = "Accès niv2"
            ElseIf .Range("H" & ligne) = "x" Then
                FirstFeuilleToActivate = "Accès niv3"
            ElseIf .Range("I" & ligne) = "x" Then
                FirstFeuilleToActivate = "Accès niv4"
            ElseIf .Range("J" & ligne) = "x" Then
                FirstFeuilleToActivate = "Accès niv5"
            End If
        End If
    End With
  End If
'-----------------------------------------------------------
'Recherche des feuille a rendre visible
  For Each oSheet In Worksheets
    If VBA.LCase(oSheet.Name) <> "accueil" Then
      On Error Resume Next
      Err.Clear
'      ActiveWorkbook.Unprotect sMdP
      If VBA.LCase(Application.WorksheetFunction.Index( _
        Range("ListeLogin").Offset(0, Application.WorksheetFunction.Match(oSheet.Name, _
        Range("ListeOnglet"), 0) + 1), Test, 1)) = "x" Then
   Unload Me
        oSheet.Visible = True
      Else
        oSheet.Visible = xlVeryHidden 'False
      End If
      On Error GoTo 0
    End If
  Next
'------------------------------------------------------------
  'Activation de la première feuille (Niveau)
  If FirstFeuilleToActivate = "" Then
    Sheets("Accueil").Activate
  Else
    Sheets(FirstFeuilleToActivate).Activate
    Sheets(FirstFeuilleToActivate).Range("L1") = "Bonjour " & TBLogin
  End If
'  ActiveWorkbook.Protect sMdP
End Sub

J'espère que ce sera faisable, lueur d'espoir.

Merci Cdlt

pompaero

Rechercher des sujets similaires à "ouvrir fichier evitant mot passe"