Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Accès au classeur actuel par d'autres utilisateurs

4 réponses
Avatar
Pierre Archambault
Est-il possible de savoir par programmation VBA si d'autres personnes
ont ouvert le classeur actuel ?

J'ai besoin d'avoir l'exclusivité pour effectuer une certaine
opération sur les données et pour ce faire, je dois être le seul à
travailler dans mon classeur. Comment puis-je faire pour tester par
programmation VBA) si le classeur est présentement ouvert par une ou
plusieurs autres personnes ?

Merci de vos lumières.

Pierre

4 réponses

Avatar
LSteph
Bonjour Pierre

Sauf si c'est un fichier en mode partagé auquel cas l'idée d'exclusivité
serait à écarter;...

...si le fichier est déjà ouvert par quelqu'un tu ne devrais pouvoir
l'ouvrir qu'en lecture seule.

Donc , avec ou sans VBA tu seras tout de suite fixé en essayant de
l'ouvrir...

Ou j'ai trop de mal à comprendre ta demande.

Cordialement.

--
lSteph


Pierre Archambault a écrit :
Est-il possible de savoir par programmation VBA si d'autres personnes
ont ouvert le classeur actuel ?

J'ai besoin d'avoir l'exclusivité pour effectuer une certaine
opération sur les données et pour ce faire, je dois être le seul à
travailler dans mon classeur. Comment puis-je faire pour tester par
programmation VBA) si le classeur est présentement ouvert par une ou
plusieurs autres personnes ?

Merci de vos lumières.

Pierre




Avatar
Archampi
Merci de l'attention que tu as porté à ma question.

Je précise la situation.

J'ai développé une application entièrement construite avec des
UserForms et du code VBA. Les données que je manipule ne sont pas dans
le classeur mais plutôt dans les fichiers ".dat" que mon programme
ouvre en mode lecture seule pour la consultation et en mode lecture et
écriture pour la mise à jour.

Il peut arriver qu'un utilisateur supprime un enregistrement (en
utilisant l'interface que j'ai créée). La suppression consiste à
introduire un marqueur au début de l'enregistrement. Dans les faits,
l'enregistrement ainsi marqué pour suppression est encore dans le
fichier. Ce n'est que plus tard, au moment où plus personne n'accède
au fichier que je peux effectivement supprimer physiquement
l'enregistrement. L'opération consiste à renuméroter les
enregistrements non supprimés en omettant ceux qui doivent être
supprimés puis de tronquer le fichier du nombre d'octets
correspondants à la fin du fichier.

Cette opération fonctionne très bien sauf que si un utilisateur est
encore à modifier un enregistrement qui se situe au-delà de celui qui
a été supprimé, son numéro (sa position dans le fichier) s'en trouv e
changée suite au nettoyage des enregistrement supprimés. Ce qui
provoquera une sauvegarde sur le mauvais numéro d'enregistrement quand
l'utilisateur aura terminé sa mise-à-jour.

Voilà pourquoi il est impératif que le programme puisse détecter qu'u n
autre usager est actuellement à travailler avec le programme.

Merci de ton aide.

Pierre
Avatar
LSteph
Bonjour,

Alors selon ce que je comprends cela ne concerne pas vraiment excel, ni
son VBA sauf
à l'utiliser sur des domaines externes à l'application et qui
relèveraient plus d'API, d'un script système ou WMI ou autre...
Peut-être poser ta question sur Codes Source ou VBFrance ou ou
http://www.developpez.net/forums/

@+

lSteph

Archampi a écrit :
Merci de l'attention que tu as porté à ma question.

Je précise la situation.

J'ai développé une application entièrement construite avec des
UserForms et du code VBA. Les données que je manipule ne sont pas dans
le classeur mais plutôt dans les fichiers ".dat" que mon programme
ouvre en mode lecture seule pour la consultation et en mode lecture et
écriture pour la mise à jour.

Il peut arriver qu'un utilisateur supprime un enregistrement (en
utilisant l'interface que j'ai créée). La suppression consiste à
introduire un marqueur au début de l'enregistrement. Dans les faits,
l'enregistrement ainsi marqué pour suppression est encore dans le
fichier. Ce n'est que plus tard, au moment où plus personne n'accède
au fichier que je peux effectivement supprimer physiquement
l'enregistrement. L'opération consiste à renuméroter les
enregistrements non supprimés en omettant ceux qui doivent être
supprimés puis de tronquer le fichier du nombre d'octets
correspondants à la fin du fichier.

Cette opération fonctionne très bien sauf que si un utilisateur est
encore à modifier un enregistrement qui se situe au-delà de celui qui
a été supprimé, son numéro (sa position dans le fichier) s'en trouve
changée suite au nettoyage des enregistrement supprimés. Ce qui
provoquera une sauvegarde sur le mauvais numéro d'enregistrement quand
l'utilisateur aura terminé sa mise-à-jour.

Voilà pourquoi il est impératif que le programme puisse détecter qu'un
autre usager est actuellement à travailler avec le programme.

Merci de ton aide.

Pierre


Avatar
Archampi
Merci ISteph pour l'information.

Je vais jetter un oeil sur ce site.

Bonne journée

Pierre