IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Synchronisation sur fichier partagé


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 15
    Par défaut Synchronisation sur fichier partagé
    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.

  2. #2
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Par défaut
    Salut,
    je n'ai pas trop saisi ta macro,
    mais si tout simplement tu enregistre ton fichier avant d'insérer ta ligne, tu n'écraseras pas de nouvelles lignes car les dernières lignes saisies se mettront à jour automatiquement (à part si les données sont réellement mises à jour en même temps mais c'est vraiment un problème de milisecondes là-non?)

  3. #3
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 15
    Par défaut
    Pour la macro : moi non plus je comprends pas tout. (enfin je maitrise pas tout, car j'arrive a comprendre ce que ca veux faire).

    Pour la sauvegarde, oui mais le hic est le suivant, imagine le User A et le User B ont le fichier ouvert, le User A ajoute une ligne est sauve. Le User B ne voie pas cette ligne dans la copie local de son fichier fait en memoire par Excel (y'a pas de refresh) donc quand il vas rentrer sa ligne, elle ira à la même place que celle du User A. Ce qui fait que quand le User B enregistrera à son tour, il devra géré un conflit de données (Exel lui denandant quel modif, la sienne ou celle du User A il veux garder)

    De ce problème, j'ai chercher dans la doc comment géré la synchronisation. Et c'est là que je suis tombé sur cette fonction.

  4. #4
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 15
    Par défaut
    désolé, un petit up pour une solution même alternative à mon soucis.
    A votre bon coeur m'sieurs dammes.

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Bonjour,

    Pas sûr de moi mais...

    Normalement Activedocument désigne le fichier WORD actif; ne faudrait t il pas marquer plutôt ActiveWorkbook ?

  6. #6
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 15
    Par défaut
    J'ai mis ThisWorkbook (et ActiveWorkbook).
    J'ai parlé de Activedocument car c'est ce qui étais indiqué dans l'aide en ligne et que c'etais la seule modification que j'avais fait dans le code. (après avoir tester sans modif).

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/06/2013, 06h47
  2. [MySQL] Créer un fichier partagé sur un forum
    Par orlacit dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/11/2007, 11h07
  3. Authentification et Synchronisation des fichiers sur un serveur
    Par zelig dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 30/05/2007, 15h32
  4. Réponses: 3
    Dernier message: 19/04/2007, 07h50
  5. problème d'accés sur des fichiers partagés
    Par prefna dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 06/08/2006, 16h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo