Bonjour,
j'ai quelques soucis sur la gestion de la synchonisation d'un fichier partagé.
Je vais commencer par vous expliquer mon besoin, puis présenter la solution que j'ai trouvé (mais qui ne marche pas).
Le problème est le suivant : un document excel avec une interface de saisie. L'interface de saisie renseigne des informations stoqués sur une ligne.
Le fichier excel est partagé entre plusieurs utilisateurs. Le problème est donc de vérifier avant d'écrire une ligne qu'elle ne vas pas écraser une ligne déjà existante.
J'ai donc essayé de mettre en place une fonction appelé avant et après chaque écriture et qui vas charger les maj ou les écrire suivant les cas.
Pour cela, j'ai repris un bout de code trouvé dans l'aide en ligne excel :
La difference entre la doc et ce bout de code est le mot souligné qui est ActiveDocument dans la doc. J'ai fait ce changement car ActiveDocument me renvoyais une erreur (le objSync etais vide).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 Sub Sync_fichier() ' fonction devant servir a gérer les maj en environement de classeur partagé ' a appeler avant et après chaque maj dans les lignes Dim objSync As Office.Sync Dim strStatus As String Set objSync = ThisWorkbook.Sync If objSync.Status > msoSyncStatusNoSharedWorkspace Then Select Case objSync.Status Case msoSyncStatusConflict objSync.ResolveConflict msoSyncConflictMerge ActiveDocument.Save objSync.ResolveConflict msoSyncConflictClientWins strStatus = "Conflit résolu en fusionnant les modifications." Case msoSyncStatusError strStatus = "Last error type: " & objSync.ErrorType Case msoSyncStatusLatest strStatus = "Document déjà en cours de sync." Case msoSyncStatusLocalChanges objSync.PutUpdate strStatus = "Changement local sauvé sur le serveur." Case msoSyncStatusNewerAvailable objSync.GetUpdate strStatus = "Copie local mise a jour depuis le serveur." Case msoSyncStatusSuspended objSync.Unsuspend strStatus = "Synchronization resumed." End Select Else strStatus = "Ce n'est pas un classeur partagé." End If MsgBox strStatus, vbInformation + vbOKOnly, "Sync Information" Set objSync = Nothing End Sub
Mon problème c'est qu'avec cette fonction, j'ai toujours le message "Ce n'est pas un classeur partagé." qui m'indique que objSync.Status = soSyncStatusNoSharedWorkspace
Si vous avez une idée d'où est mon erreur ou si vous avez une autre solution à mon problème.
Par avance merci.
Partager