Rendre invisible un classeur déjà ouvert par un utilisateur

J'ai testé votre code, d'abord en lecture seule puis sans la lecture seule, il s'exécute parfaitement.

Concernent votre deuxième proposition je comprend l'idée, ça pourrait être intéressant.

Voici mon code connexion.

Merci du temps que vous prenez.

Option Explicit
Private Sub Workbook_Open()

'masquer toutes les pages à l'ouverture hormis "X".
Sheets("X").Visible = True
Sheets("X").Visible = 2
Sheets("X").Visible = 2
Sheets("X").Visible = 2
Sheets("X").Visible = 2
Sheets("X").Visible = 2
Sheets("X").Visible = 2
Sheets("X").Visible = 2
Sheets("X").Visible = 2
Sheets("X").Visible = 2
Sheets("X").Visible = 2

End Sub

Private Sub CommandButton1_Click()
On Error Resume Next
'déclaration de variable
Dim mot_de_pass As String
Dim role As String

Application.ScreenUpdating = False

'configuration de variable
mot_de_pass = WorksheetFunction.VLookup(Txt_user, Sheets("X").Range("b:d"), 2, 0)
role = WorksheetFunction.VLookup(Txt_user, Sheets("X").Range("b:d"), 3, 0)

If mot_de_pass = Txt_pass And role = "N1" Then

Sheets("X").Visible = True
Sheets("X").Visible = 0
Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = 2

ElseIf mot_de_pass = Txt_pass And role = "N2" Then

Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = 2

ElseIf mot_de_pass = Txt_pass And role = "N3" Then

Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = 2

ElseIf mot_de_pass = Txt_pass And role = "N4" Then

Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = True
Sheets("X").Visible = 2

Else

    MsgBox "L'utilisateur ou le mot de passe est inorrect"

Application.ScreenUpdating = True

End If

Sheets("X").Unprotect Password:="X"
Sheets("X").Unprotect Password:="X"

    Sheets("X").Range("n3") = "Bonjour " & Txt_user
    Sheets("X").Range("n1") = "Bonjour " & Txt_user

Sheets("X").protect Password:="X"
Sheets("X").protect Password:="X"

    'vider le formulaire de connexion
Txt_user = ""
Txt_pass = ""

End Sub

Bonjour

J'ai testé votre code, d'abord en lecture seule puis sans la lecture seule, il s'exécute parfaitement.

Veillez à le tester avec depuis deux ordinateurs différents aussi.

Voici mon code connexion.

Heu je n'ai pas compris. Vous avez déjà une macro Workbook Open dans le fichier ? Vous m'aviez dit n'en n'avoir qu'une dans un précédent post --> "Private Sub Workbook_BeforeClose(Cancel As Boolean)"

Bonjour Dan,

J'espère que vous allez bien.

En effet, j'ai une macro Workbook_Open dans une feuille, mais pas dans le Thisworkbook.

Il me semble que votre demande concernait le Thisworkbook, non ?

Je peux voir le code que vous avez dans Thisworkbook

Je suis novice dans le domaine j'ai peut être pas mal compris.

Bonjour

En effet, j'ai une macro Workbook_Open dans une feuille, mais pas dans le Thisworkbook.

Elle ne doit pas être placée dans une feuille mais bien dans Thisworkbook.
Du coup avec ce que je vous ai proposé vous avez deux macros Open. Vous allez avoir un conflit. Gardez en mémoire que, la macro "Private sub workbookOpen" est exécutée automatique par excel à l'ouverture du fichier.

Donc déplacez votre code dans Thisworkbook et ajoutez les lignes que je vous ai données dans la macro Open.

Autre solution serait de cacher automatiquement les feuilles à la fermeture du fichier plutôt qu'à l'ouverture. Dans ce cas, vous pourriez déplacer la partie de code pour cacher les feuilles dans la macro Beforeclose que je vous ai proposée

C'est ce que j'aurais plutôt fait car du coup on est sûr que les feuilles sont cachées même si les macros sont désactivées par exemple

Bonjour Dan,

Je pense faire ce que vous me recommandez.

Je m'empresse de cacher les feuilles à la fermeture (j'aurai du y penser).

Pour ma part le sujet est résolu (même si ça ne répond pas vraiment au post initial).

Merci beaucoup du temps consacré.

A la prochaine.

Rechercher des sujets similaires à "rendre invisible classeur deja ouvert utilisateur"