EtienneChouard
XLDnaute Nouveau
Réduire à 1 seconde la fréquence de synchronisation des classeurs partagés ?
Bonjour à tous,
Les classeurs Excel peuvent être partagés sur un serveur, et Excel accepte alors que plusieurs personnes travaillent en même temps sur le même classeur, à condition que ce ne soit pas sur la même cellule en même temps.
De temps en temps, Excel synchronise les versions affichées par chacun, mais la fréquence de la synchro est de 5 minutes minimum, ce qui permet (malheureusement) à un utilisateur de commencer à écrire sur une nouvelle ligne de table, et de s'apercevoir (trop tard) qu'il a travaillé pour rien parce qu'un autre utilisateur a lui aussi commencé à travailler sur cette même ligne depuis 4 minutes 30 (moins de 5 minutes)…
Excel propose une résolution des conflits, mais à la hache, apparemment : l'un des utilisateurs va gagner (à l'issue d'une boîte de dialogue, sa saisie à lui va être validée) et tous les autres utilisateurs vont perdre tout leur travail...
Comment empêcher cette collision en PRÉVENANT le problème, au lieu de se contenter de le soigner après-coup, plus ou moins bien ? C'est la question qui m'amène à vous
____
Prenons une table, à compléter et à tenir à jour à plusieurs.
Si quelqu'un CORRIGE une ligne existante de la table, le système proposé par Excel pour gérer un conflit éventuel peut convenir.
Mais si quelqu'un AJOUTE une nouvelle ligne à la table (dans la première cellule vide, en bas de la première colonne), comment vérifier que personne n'a déjà commencé à créer de son côté une autre "nouvelle ligne" au même endroit ? Et dans ce cas, si une autre utilisateur a déjà commené à bosser sur cette ligne, le code VBA pourrait choisir lui-même la ligne suivante comme "prochaine ligne à remplir" (sachant qu'un troisième utilisateur pourrait très bien débarquer à ce moment à son tour pour utiliser une des deux lignes, puisqu'il la croit vide, lui aussi).
• Première idée/suggestion : il me semble qu'une synchro réglée à une seconde (c'est-à-dire que, toutes les secondes, Excel rafraichirait l'image commune du classeur pour tous ceux qui l'ont ouvert à l'écran en ce moment) une synchro plus rapide, donc, permettrait de prévenir de façon élégante tous ces conflits.
Est-il possible de descendre au dessous des 5 minutes mini imposées par la commande Outils/Partager le classeur ?
Mais peut-être cette fréquence rapide a-t-elle des inconvénients (ralentissement général insupportable, peut-être ?) : le savez-vous ?
• Deuxième idée/suggestion : peut-on, lors de l'enregistrement sur disque à partir d'un poste, forcer la synchro sur tous les postes ouverts (y compris celui qui enregistre), de façon à être bien certain, juste après avoir enregistré, que la première ligne actuellement vide de la table n'est encore convoitée par personne : il suffirait alors dans notre code VBA d'enregistrer (et forcer la synchro) juste avant de localiser la première ligne vide pour un ajout dans la table ?
Qu'en pensez-vous ?
Merci pour votre aide précieuse.
Étienne.
Bonjour à tous,
Les classeurs Excel peuvent être partagés sur un serveur, et Excel accepte alors que plusieurs personnes travaillent en même temps sur le même classeur, à condition que ce ne soit pas sur la même cellule en même temps.
De temps en temps, Excel synchronise les versions affichées par chacun, mais la fréquence de la synchro est de 5 minutes minimum, ce qui permet (malheureusement) à un utilisateur de commencer à écrire sur une nouvelle ligne de table, et de s'apercevoir (trop tard) qu'il a travaillé pour rien parce qu'un autre utilisateur a lui aussi commencé à travailler sur cette même ligne depuis 4 minutes 30 (moins de 5 minutes)…
Excel propose une résolution des conflits, mais à la hache, apparemment : l'un des utilisateurs va gagner (à l'issue d'une boîte de dialogue, sa saisie à lui va être validée) et tous les autres utilisateurs vont perdre tout leur travail...
Comment empêcher cette collision en PRÉVENANT le problème, au lieu de se contenter de le soigner après-coup, plus ou moins bien ? C'est la question qui m'amène à vous
____
Prenons une table, à compléter et à tenir à jour à plusieurs.
Si quelqu'un CORRIGE une ligne existante de la table, le système proposé par Excel pour gérer un conflit éventuel peut convenir.
Mais si quelqu'un AJOUTE une nouvelle ligne à la table (dans la première cellule vide, en bas de la première colonne), comment vérifier que personne n'a déjà commencé à créer de son côté une autre "nouvelle ligne" au même endroit ? Et dans ce cas, si une autre utilisateur a déjà commené à bosser sur cette ligne, le code VBA pourrait choisir lui-même la ligne suivante comme "prochaine ligne à remplir" (sachant qu'un troisième utilisateur pourrait très bien débarquer à ce moment à son tour pour utiliser une des deux lignes, puisqu'il la croit vide, lui aussi).
• Première idée/suggestion : il me semble qu'une synchro réglée à une seconde (c'est-à-dire que, toutes les secondes, Excel rafraichirait l'image commune du classeur pour tous ceux qui l'ont ouvert à l'écran en ce moment) une synchro plus rapide, donc, permettrait de prévenir de façon élégante tous ces conflits.
Est-il possible de descendre au dessous des 5 minutes mini imposées par la commande Outils/Partager le classeur ?
Mais peut-être cette fréquence rapide a-t-elle des inconvénients (ralentissement général insupportable, peut-être ?) : le savez-vous ?
• Deuxième idée/suggestion : peut-on, lors de l'enregistrement sur disque à partir d'un poste, forcer la synchro sur tous les postes ouverts (y compris celui qui enregistre), de façon à être bien certain, juste après avoir enregistré, que la première ligne actuellement vide de la table n'est encore convoitée par personne : il suffirait alors dans notre code VBA d'enregistrer (et forcer la synchro) juste avant de localiser la première ligne vide pour un ajout dans la table ?
Qu'en pensez-vous ?
Merci pour votre aide précieuse.
Étienne.