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 :

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
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).

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.