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

Bonjour à tous,

J'ai actuellement un classeur Excel présent sur un serveur.

Mon but est de rendre invisible ce classeur aux autres utilisateurs si il est déjà ouvert, et bien évidement le rendre visible si celui-ci est fermé.

Avez vous une solution à me proposer.

Merci d'avance.

Bonjour

Mon but est de rendre invisible ce classeur aux autres utilisateurs si il est déjà ouvert, et bien évidement le rendre visible si celui-ci est fermé.

Pourquoi voulez vous le rendre invisible ? En principe si une autre personne veut ouvrir un fichier déjà ouvert, excel vous renvoie un message avec une mention que le fichier est déjà ouvert.

Cordialement

Bonjour Dan,

Merci du temps que vous prenez pour me répondre.

En effet, une notification nous indique en règle générale si le classeur est déjà ouvert.

Le problème c'est que malgré la notification, des personnes ne font pas attention, c'est pourquoi j'aimerai le rendre invisible.

Vous avez une idée?

Merci d'avance.

Le problème c'est que malgré la notification, des personnes ne font pas attention,

Expliquez moi quel est le souci quand vous dites qu'il ne font pas attention. En fait quel est le problème que vous voulez éviter

Ce qui se passe quand une personne "ne fait pas attention" à la notification, et modifie le fichier, un doublon se crée.

C'est ce que je veux éviter.

Changer d'employer!

Bonsoir,

C'est une idée intéressante, mais je n'ai pas ce pouvoir.

Bonjour

Les utilisateurs sont uniquement des personnes qui peuvent modifier le fichier ou pas ?

Bonjour Dan,

Oui, toutes les personnes qui ont accès au fichier peuvent le modifier.

Bonjour,

Si le classeur n'est pas en mode Partagé, il me semble que si on ouvre un fichier déjà ouvert, le fichier se met en mode lecture.

Le fichier contient des macros ?

Bonjour Dan,

Oui, le classeur contient des macros.

Si le fichier se met bien en mode lecture lorsqu'il est ouvert une deuxième fois, vous pourriez dans ce cas faire en sorte que les modifications apportées au fichier ne soient pas prises en compte à la fermeture du fichier. Votre avis ?

Autre question est-ce que votre fichier contient des macros dans Thisworkbook

Peut être voir votre fichier serait un plus

"Votre avis ?", je pense que ça pourrai être une solution à mon problème.

Oui, Thisworkbook contient une macro.

Je ne peux malheureusement pas partager mon fichier.

Je peux voir le code que vous avez dans Thisworkbook

L'idée à tester serait de vérifier qu'à l'ouverture le fichier est bien en lecture (si ouvert par une autre utilisateur) et dans ce cas, on interdit d'enregistrer de nouvelles données dans le fichier

Bien sur.

Voici.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

MsgBox ("!!! ATTENTION !!! Avant de sortir, pensez à cliquer sur la commande Déconnexion de la 1ere feuille. Si déjà fait appuyez sur OK, sinon sur annuler.")

End Sub

La commande "deconnexion" déclenche quoi exactement

"Déconnexion" déclenche une macro qui met en VeryHiden les feuilles qui étaient visibles pour l'utilisateur, et effectue ensuite un save.

"Déconnexion" déclenche une macro qui met en VeryHiden les feuilles qui étaient visibles pour l'utilisateur, et effectue ensuite un save

Ce serait intéressant de savoir comment vous affichez les feuilles à l'ouverture et combien de feuilles sont affichées.

Peut être une solution comme ceci :
Comme le fichier n'est pas en mode partagé, si un deuxième utilisateur l'ouvre, il va recevoir un message excel.
Dans ce cas de figure, on pourrait ajouter un code dans le fichier qui s'exécute à l'ouverture pour signaler que le fichier est déjà ouvert (bien que ce sera aussi renvoyé par excel avec la mention Notifier)
A la fermeture, si le fichier est en mode lecture, le fichier sera fermé sans afficher votre boite à message

Essayez en mettant ces deux codes dans Thisworkbook

Private Sub Workbook_Open()
If ThisWorkbook.ReadOnly = True Then
    MsgBox "Le fichier est déjà ouvert par " & Application.UserName
End If
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.ReadOnly = False Then
    MsgBox ("!!! ATTENTION !!! Avant de sortir, pensez à cliquer sur la commande Déconnexion de la 1ere feuille. Si déjà fait appuyez sur OK, sinon sur annuler.")
Else:
    ThisWorkbook.Close False
End If
End Sub

Il y a surement d'autre méthode mais pouvez vous tester celle là ?

A l'ouverture du classeur une feuille est visible, sur cette feuille il faut renseigner ses ID pour avoir accès aux différentes feuilles du classeur.

Le nombre de feuilles visibles après avoir renseigné ses ID, dépend du niveau attribué.

Bien sur que je vais tester ça.

A l'ouverture du classeur une feuille est visible, sur cette feuille il faut renseigner ses ID pour avoir accès aux différentes feuilles du classeur.

Vous pourriez aussi vérifier si l'utilisateur qui rentré ses ID est dans le fichier par exemple en mettant un chiffre dans une colonne correspondant à la ligne du nom de l'utilisateur. Si un autre utilisateur veut se loguer, on vérifie à l'ouverture qu'il n'y a qu'un seul utilisateur en contrôlant s'il y a un chiffre ou non dans cette colonne spécifique.

Si oui, un message informe l'utilisateur qu'il ne peut accéder au fichier.
Dès que l'utilisateur ferme le fichier, on supprime le chiffre en question afin de permettre à un autre utilisateur de se loguer.

Vous comprenez l'idée ?

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