Vérifier si un classeur n'est pas ouvert sur un autre pc

LeMarchand

XLDnaute Nouveau
Bonjour,

Encore moi,
Donc ma question est à priori simple la réponse compliqué, j'ai besoin de vérifier si quelqu'un n'a pas déjà ouvert le classeur sur un autre pc.

Les deux personnes ont accès au fichier

J'ai pensé à mettre une variable soit 1 soit 0 pour savoir s'il est déjà ouvert .

ç-à-d a l'ouverture la variable devient 1 il enregistre et on peut continuer
a la fermeture la variable devient 0

Le problème c'est que les deux peuvent avoir accès au fichier en même temps
L'un des deux, l'admin du fichier c'est a dire moi, ne doit pas pouvoir lancé une macro si qqn a ouvert le classeur.
Pour cela il faudrait que le fichier me reconnaise.

Donc y a t'il une commande pour savoir si qqn a ouvert le classeur en question sans le refermer?
Y a t'il une command permantant d'identifier celui qui l'ouvre?

Merci

Ps:peut être je me suis embrouillé du coups si vous ne comprenez pas dites le moi et je rectifierais mais pour moi c'est clair
 

Dranreb

XLDnaute Barbatruc
Re : Vérifier si un classeur n'est pas ouvert sur un autre pc

Bonjour

À moins que ce soit un classeur partagé :
VB:
If ThisWorkbook.ReadOnly Then
à faire suivre du code à exécuter si le classeur est déjà ouvert par quelqu'un d'autre.
Sinon il doit y avoir moyen de connaitre le poste à défaut de savoir qui est derrière...

Exemple
Cet exemple montre comment afficher le nom de l'utilisateur en cours.

MsgBox "Current user is " & Application.UserName
À +
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Vérifier si un classeur n'est pas ouvert sur un autre pc

C'est s'il n'est pas partagé. Dans ce cas il ne peut être ouvert en lecture/écriture par plusieurs personnes. Un second usager ne peut donc alors l'ouvrir qu'en lecture seule, ce qui peut être détecté comme indiqué.
À +
 

LeMarchand

XLDnaute Nouveau
Re : Vérifier si un classeur n'est pas ouvert sur un autre pc

Merci dernière question.
Je souhaiterais savoir alors que je suis déjà dans le fichier, à l'activation d'une macro si il y a qqn d'autre à ce moment sur le fichier, est-ce la même commande ?
 

LeMarchand

XLDnaute Nouveau
Re : Vérifier si un classeur n'est pas ouvert sur un autre pc

La vraiment la dernière.
Si au début j'ai pu l'ouvrir en lecture/écriture puis savoir plus tard si qqn a ouvert le classeur.
Ou au contraire si je l'ai quand lecture et que l'autre est partie suis-je au courant qu'il n'y a plus que moi grâce à cet commande.
Merci beaucoup c'est la dernière.
 

Dranreb

XLDnaute Barbatruc
Re : Vérifier si un classeur n'est pas ouvert sur un autre pc

En général quand vous ne pouvez ouvrir un classeur en lecture/écriture vous en êtes averti, et il vous est proposé soit la possibilité d'être notifié quand il sera disponible soit de l'ouvrir tout de suite mais en lecture seule. Je ne connais pas de moyen simple de vérifier si quelqu'un d'autre l'ouvre en lecture seule pendant qu'il est ouvert chez vous en lecture/écriture. Si c'est vraiment important de pouvoir le faire on peut y arriver à l'aide d'un petit fichier annexe périodiquement consulté et mis à jour. Explorez aussi les possibilités offertes par le partage du classeur, bien qu'il entraîne certaines restrictions.
Cordialement.
 

LeMarchand

XLDnaute Nouveau
Re : Vérifier si un classeur n'est pas ouvert sur un autre pc

Merci je me suis débloquer grâce toi maintenant. Je me pose une question comment connaitre l'utilisateur qui a déjà ouvert le classeur mais je pense que cet question interesse de monde donc dois-je poster un nouveau sujet ?
 

LeMarchand

XLDnaute Nouveau
Re : Vérifier si un classeur n'est pas ouvert sur un autre pc

Je me suis penché dessus et il ne marche quand lecture seule je ne suis pas en mode partager donc soit je n'ai pas tout explorer dans UserStatus soit il me faudrai une autre solution ^^
 

Pierrot93

XLDnaute Barbatruc
Re : Vérifier si un classeur n'est pas ouvert sur un autre pc

Re,

ci dessous ce que dit l'aide vba :
Cette propriété renvoie un tableau à deux dimensions indexé à partir de 1 qui fournit des informations sur chaque utilisateur ayant ouvert le classeur en tant que liste partagée. Le premier élément de la seconde dimension correspond au nom de l'utilisateur, le deuxième élément correspond à la date et l'heure de la dernière ouverture du classeur par l'utilisateur, et le troisième élément est un nombre indiquant le type de liste (1 indique un accès exclusif et 2, un accès partagé). Type de données Variant en lecture seule.

de toute façon si tu veux connaitre l'utilisateur qui a ouvert le fichier, un accès à cette propriété("UserStatus") en lecture seule devrait suffire, non... regarde l'exemple fourni par l'aide vba....
 

LeMarchand

XLDnaute Nouveau
Re : Vérifier si un classeur n'est pas ouvert sur un autre pc

Excuse moi je ne suis vraiment pas doué. Avec ce que j'ai appris a l'ecole et les formation cela m'avait suffit où ce trouve l'aide vba ... question bête mais je ne la trouve pas ...

EDIT: Je n'ai rien dit mais il ne faut être en lecture seule , et moi je n'ai pas fais le partage donc je suis en lecture seul si le fichier est déjà ouvert donc cette méthode ne m'aide pas
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Vérifier si un classeur n'est pas ouvert sur un autre pc

Re,

une propriété en lecture seule veut dire que tu peux la lire, en l'occurence obtenir le nom de l'utilisateur qui a ouvert le fichier, mais pas le changer.... rien à voir avec l'ouverture du classeur en lecture seule ou pas....
 

LeMarchand

XLDnaute Nouveau
Re : Vérifier si un classeur n'est pas ouvert sur un autre pc

Excuse moi je te passe une macro qui me dit "impossible d'avoir accès au document en lecture seule :

Sub essai2()

Dim value As Object

Workbooks.Open Filename:=_"I:\Macros_Ingenierie.xls" 'ouverture d'un autre fichier que celui en court
MsgBox (ActiveWorkbook.FullName)

If ActiveWorkbook.ReadOnly Then 'je regarde si il n'est que en lecture seule

MsgBox ("déjà ouvert")

'la erreur je voudrais connaitre l'utilisateur qui est en lecture/écriture
value = ActiveWorkbook.UserStatus
MsgBox (value)

Else
MsgBox ("non ouvert")
End If

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 236
Messages
2 086 477
Membres
103 228
dernier inscrit
malik832