Classeur partagé + VBA

repcheks

XLDnaute Junior
Bonsoir le forum,

Je vous soumets une petite question, pour laquelle je ne trouve de réponse nulle part.

Pour besoin professionel, j'aimerais mettre en place un classeur Excel partagé, pour que chaque utilisateur puisse le modifier en temps réel, et qu'il soit ouvert en meme temps sur plusieurs postes.

La solution integrée dans Excel semble bien convenir, notamment grace a la fenetre de "resolution des conflits" qui permet d'avertir l'utilisateur qu'il a écrit sur une cellule qui a été modifiée par un autre utilisateur, et lui demande de choisir quelle version il faut conserver.

Cependant, l'usage de ce classeur implique de faire des sauvegardes à tout moment, la sauvegarde permettant de voir si le fichier a été modifié entre temps. Mais les utilisateurs n'étant pas tres disciplinés, cet impératif devient une contrainte, car il est a prevoir que nombre d'entre eux n'auront pas la rigueur necessaire pour sauvegarder avant/apres chaque modif, le laissant simplement ouvert.

J'ai donc pensé à coupler cela avec une macro qui permet d'enregistrer le classeur pour chaque modification (Evenement "BeforeSave" de "ThisWorkbook"). Simplement, la fenetre de resolution des conflits ne s'affiche plus quand cette macro est active, et le mode partagé pert ainsi tout son interet.

Quelqu'un sait d'ou ca vient ?

Y'a t-il un moyen d'y remedier, ou faut il envisager une solution différente ?

Merci d'avance pour vos réponses
 

JNP

XLDnaute Barbatruc
Re : Classeur partagé + VBA

Bonjour Repcheks et bienvenue :),
Je suis surpris, tu parles de tes collaborateurs qui ne sauvegardent pas, et... tu utilises Before_Save :confused: ?
As-tu essayé d'utiliser
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
ThisWorkbook.Save
End Sub
qui me paraitrait beaucoup plus logique...
Bonne nuit :cool:
 

repcheks

XLDnaute Junior
Re : Classeur partagé + VBA

Bonjour,

Effectivement je raconte n'importe quoi, la fatigue surement.

J'avais bien utilisé

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Application.DisplayAlerts = True
ThisWorkbook.Save

End Sub

Et c'est ce qui pose le probleme exposé.

Des idées ?

Merci.

et desolé pour le double post, le premier n'avait pas eu l'air de passer.
 
Dernière édition:

matmatak

XLDnaute Nouveau
Re : Classeur partagé + VBA

Bonjour REPCHEKS,

j'avais exactement le même problème que toi et je l'ai résolue avec ces macros...



Tu met çe code dans Thisworkbook

Private Sub Workbook_Open()
HeureDepart = Format(Time, "HH:MM:SS")
Check
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
T = Time
End Sub


....ensuite ceux-ci dans un module (le même module)

Public HeureDepart As Date
Public T As Date

Sub Check()
Application.OnTime Now + TimeValue("00:00:10"), "Delai" 'moi j'ai réglé à 10 secondes le rafraichissement
End Sub

Sub Delai()
Dim HeureFin As Date, S As Integer
T = T - TimeValue("00:00:10") 'n'oublie pas de mettre le même delai ici
save_refresh
HeureDepart = Format(Time, "HH:MM:SS")
Check
End Sub

Sub save_refresh()
Application.ScreenUpdating = False
ThisWorkbook.Save
Application.ScreenUpdating = True
End Sub

Voila chez moi ça marche.
Bonne chance
 

Discussions similaires

Réponses
1
Affichages
312
Compte Supprimé 979
C

Statistiques des forums

Discussions
311 720
Messages
2 081 885
Membres
101 830
dernier inscrit
sonia poulaert