Données partagées en temps réel sur Excel

Bonjour,

Nous utilisons un fichier Excel pour suivre les demandes que nous faisons à d'autres services. Ce document est rempli uniquement par la personne qui effectue la demande. J'ai posté dans cette catégorie car nous souhaiterions rester sur une base Excel.

Nous souhaiterions le faire évoluer afin qu'il puisse être partagé sur le réseau local de l'entreprise et que les services à qui nous demandons des actions puissent voir apparaître dans leur fichier nos demandes et puissent y accuser réception. Nous verrions dans notre fichier leur réponse à nos demandes.

19112812104474443

Nos contraintes sont de ne pas utiliser la suite Web "Office 365" et que les données puissent être mises à jour sur les deux fichiers utilisés simultanément par l'utilisateur A et B donc : garder les instances (Excel, Access ou autre) ouvertes pendant plusieurs heures en ayant les données mises à jour automatiquement ou par lancement d'une macro ?

Merci d'avance pour vos lumières.

Bien cordialement,

Baptiste

Bonjour,

Ce sujet a été déjà vu 17 fois sans réponse et il est maintenant bien descendu en page 1 !

J'avais moi-même laissé en priorité d'autres contributeurs car pour ma part ... je ne sais pas comment onb peut utiliser un même fichier excel déjà ouvert par une autre personne ! Mais j'aimerais bien qu'un autre contributeur puisse me donner la solution.

Par contre, tu pourrais avoir un fichier "collecte" qui

  • d'une part est ouvert/mis à jour/fermé par les 2 utilisateurs (ps en même temps mais l'un après l'autre selon besoin, l'un passant commande, l'autre donnant sa réponse)
  • d'autre part est interrogé soit à fréquence régulière ou simplement par un lien qui permet d'indiquer une nouvelle information (avec une MFC on doit pouvoir alerter jusqu'à ce que l'utilisateur indique qu'il a vu l'information par un code genre "lu")

On pourrait dans ce cas repartir de https://forum.excel-pratique.com/viewtopic.php?p=811307#p811307

Bonjour Baptiste, Steelson,

à très bientôt j'espère, l'informatique quantique

Bonjour i20100 et Steelson

Par rapport à ta proposition Steelson :

On parle bien d'un seul fichier alimenté par mes deux acteurs (l'un après l'autre) mais qui est met en évidence les mises à jour. Tu confirmes ?

A défaut, je réfléchissais également à une solution avec la fonction de classeur partagé. Dans ce cas tous les utilisateurs pourraient avoir le classeur d'ouvert. Je sais qu'il est possible de mettre à jour les données lors de l'enregistrement du fichier ou automatiquement toutes les X minutes.

Est-il faisable de gérer ces mises à jour manuellement via le déclenchement d'une macro ? Sachant que les espaces de travail de chacuns des collaborateurs seront définis et qu'il n'y aura pas "d'écrasement des informations".

Merci encore pour votre aide

Baptiste.

A défaut, je réfléchissais également à une solution avec la fonction de classeur partagé. Dans ce cas tous les utilisateurs pourraient avoir le classeur d'ouvert. Je sais qu'il est possible de mettre à jour les données lors de l'enregistrement du fichier ou automatiquement toutes les X minutes.

Je ne connais pas du tout ... je suppose qu'il s'agirait alors de la versions excel 365 ? probablement qu'à terme de toute façon on irait vers cela.

https://support.office.com/fr-fr/article/collaborer-sur-des-classeurs-excel-simultan%C3%A9ment-avec-la-co-%C3%A9dition-7152aa8b-b791-414c-a3bb-3024e46fb104


On parle bien d'un seul fichier alimenté par mes deux acteurs (l'un après l'autre) mais qui est met en évidence les mises à jour. Tu confirmes ?

Est-il faisable de gérer ces mises à jour manuellement via le déclenchement d'une macro ? Sachant que les espaces de travail de chacuns des collaborateurs seront définis et qu'il n'y aura pas "d'écrasement des informations".

Oui ce serait bien un seul fichier partageant les infos et mis à jour en automatique ... si j'ai un peu de temps, je réaliserais bien une maquette avec 3 utilisateurs et un fichier récap.


Bon, il y a quand même une autre solution plus propre ... stocker les infos dans un fichier .accdb. Je n'ai jamais pratiqué mais pierrep56 connait cela très bien.

https://forum.excel-pratique.com/viewtopic.php?p=799085#p799085

@Steelson :

Les info sont externalisées dans un accdb "qui-se-crée-tout-seul".

Je fais ça de plus en plus souvent, ça permet de garder un fichier excel assez léger quelque soit la masse de données, et d'avoir un fichier excel "saisie/consultation" et un autre à part pour les "stat/bilan/consolidation"

C'est probablement un bonne alternative au fichier excel commun.


Je n'ai pas retrouvé le sujet où un contributeur avait proposé une ébauche de solution. Peut-être se manifestera-t-il, peut-être a-t-il finalisé son projet ?

Bonjour,

j'ai déjà pas mal cherché à ce sujet et malheureusement toutes les solutions trouvées étaient trop contraignantes.

Dans l'entreprise nous sommes passés sur office365, c'est beaucoup mieux mais je ne sais pas si c'est notre réseau ou une lenteur des serveurs de Microsoft, pour charger, sauvegarder çà prend pas mal de temps.

En fin le gros point noir de office365, c'est qu'il ne prend pas en charge la macro et les captures d'images entre autre sur la page web, vous avez toujours la possibilité cependant de l'ouvrir en local sur excel et çà change tout en ++.

Bonjour,

J'ai commencé à regarder, mais la synchronisation est très complexe. Il faut en fait se définir des règles strictes sur qui a droit à quelle informations. C'est un excellent exercice neuronal mais qui va me prendre un certain temps pour construire la maquette que j'ai commencée.

Re-bonjour à tous

fourmi a écrit :

En fin le gros point noir de office365, c'est qu'il ne prend pas en charge la macro et les captures d'images entre autre sur la page web

C'est ce qui ne nous convient pas dans la solution Office 365.

Toutefois on avait tenté cette solution un temps et les possibilités de mises en forme et tu l'as dis, de fonctions sont très limitées

horusbk a écrit :

A défaut, je réfléchissais également à une solution avec la fonction de classeur partagé. Dans ce cas tous les utilisateurs pourraient avoir le classeur d'ouvert. Je sais qu'il est possible de mettre à jour les données lors de l'enregistrement du fichier ou automatiquement toutes les X minutes.

Steelson a écrit :

Je ne connais pas du tout ... je suppose qu'il s'agirait alors de la versions excel 365 ?

En fait je pensais à cette fonctionnalité présente dans Excel 2010, version que nous utilisons exclusivement au boulot, qui se trouve dans Révision -> Modifications -> Partager le classeur.

191130115538572870

Est-ce que vous pensez que ça peut-être un bon compromis si comme tu dis, Steelson, la synchronisation est très complexe ?

Lorsque tu parles de maquette c'est de la réaliser avec le client lourd Office ?

Bonjour à tous,

La réponse peu être très simple... passage à office 365, cela règle la problématique

https://www.office.com/?omkt=fr-ca&WT.mc_id=MSN_site

Au plaisir

Nous avons déjà envisagé cette solution mais elle ne nous convient pas du tout...

Re,

Et pour quelles raisons Pourriez-vous être plus explicite.

Franchement, nous n'étions pas chaud, mais aujourd'hui c'est adopté

En fait je pensais à cette fonctionnalité présente dans Excel 2010, version que nous utilisons exclusivement au boulot, qui se trouve dans Révision -> Modifications -> Partager le classeur.

Est-ce que tu envisages de la tester ? dis moi quel serait le résultat ...

Et pour quelles raisons Pourriez-vous être plus explicite.

La fonctionnalité que nous souhaitons mettre en place sera incluse dans notre fichier de travail principal. Un fichier qui contient beaucoup de données avec beaucoup de formules et également... des macros VBA qui a ma connaissance, ne sont pas compatibles avec Office 365

Steelson a écrit :

Est-ce que tu envisages de la tester ? dis moi quel serait le résultat ...

J'avais déjà utilisé cette fonctionnalité dans un ancien service, pour un tout autre fichier : le problème étant que le fichier était devenu très lourd sans raisons apparentes (peut-être à cause de certaines macros ou de MFC). Du coup je me demandais s'il y avait un autre moyen d'arriver à mes fins

Il faut que je teste chez moi avec mes différentes ordinateurs comment se comporte le fichier en local en étant utilisé par plusieurs utilisateurs

Hello !

Pas mécontent de ma maquette :

Sub synchUP(plage As Range)
Dim cel As Range, ici As Range
Dim wb1 As Workbook, wb2 As Workbook, ws1 As Worksheet, ws2 As Worksheet, tbl1 As ListObject, tbl2 As ListObject, log As ListObject
Set wb1 = ThisWorkbook: Set ws1 = wb1.Sheets("data"): Set tbl1 = ws1.ListObjects(1)

    source = LireFichierTexte(ThisWorkbook.Path & "\source.txt")
    Application.EnableEvents = False

    If Not FichierDejaOuvert(source) Then
        Set wb2 = Workbooks.Open(source): Set ws2 = wb2.Sheets("data"): Set tbl2 = ws2.ListObjects(1)
        Set log = wb2.Sheets("log").ListObjects(1)
        For Each cel In plage
            identifiant = ws1.Cells(cel.Row, 1)

            With tbl2
                Set ici = .ListColumns(1).DataBodyRange.Find(identifiant)
                If Not ici Is Nothing Then
                    i = ici.Row - .HeaderRowRange.Row
                Else
                    .ListRows.Add
                    i = .ListRows.Count
                    .DataBodyRange(i, 1) = identifiant
                End If
                j = cel.Column - tbl1.DataBodyRange(1, 1).Column + 1
                .DataBodyRange(i, j) = ws1.Cells(cel.Row, cel.Column)
            End With

            With log
                .ListRows.Add
                .DataBodyRange(.ListRows.Count, 1) = Split(wb1.Name, ".")(0)
                .DataBodyRange(.ListRows.Count, 2) = identifiant
                .DataBodyRange(.ListRows.Count, 3) = j
                .DataBodyRange(.ListRows.Count, 4) = ws1.Cells(cel.Row, cel.Column)
                .DataBodyRange(.ListRows.Count, 5) = Now
            End With

        Next
        wb1.Sheets("der").Range("_synchup") = Now
        wb2.Close True
        MsgBox "activité de synchronisation montante ok !"

    Else
        MsgBox "activité de synchronisation en cours, modification annulée !"
        Application.Undo
    End If

    Application.EnableEvents = True

End Sub

Sub synchDown(ok As Boolean)
Dim cel As Range, ici As Range
Dim wb1 As Workbook, wb2 As Workbook, ws1 As Worksheet, ws2 As Worksheet, tbl1 As ListObject, tbl2 As ListObject, log As ListObject
Set wb1 = ThisWorkbook: Set ws1 = wb1.Sheets("data"): Set tbl1 = ws1.ListObjects(1)

    source = LireFichierTexte(ThisWorkbook.Path & "\source.txt")
    Application.EnableEvents = False

    If Not FichierDejaOuvert(source) Then
        Set wb2 = Workbooks.Open(source): Set ws2 = wb2.Sheets("data"): Set tbl2 = ws2.ListObjects(1)
        Set log = wb2.Sheets("log").ListObjects(1)
        For Each cel In log.ListColumns(1).DataBodyRange
            If cel.Offset(0, 4) > wb1.Sheets("der").Range("_synchdown") Then
                identifiant = cel.Offset(0, 1)

                With tbl1
                    Set ici = .ListColumns(1).DataBodyRange.Find(identifiant)
                    If Not ici Is Nothing Then
                        i = ici.Row - .HeaderRowRange.Row
                    Else
                        .ListRows.Add
                        i = .ListRows.Count
                        .DataBodyRange(i, 1) = identifiant
                    End If
                    j = cel.Offset(0, 2)
                    .DataBodyRange(i, j) = cel.Offset(0, 3)
                End With

            End If
        Next
        wb1.Sheets("der").Range("_synchdown") = Now
        wb2.Close True
        MsgBox "activité de synchronisation descendante ok !"

    Else
        MsgBox "activité de synchronisation en cours, synchronisation descendante impossible !"
    End If

    Application.EnableEvents = True

End Sub

Mais attention, il s'agit d'une maquette, d'un test, cela ne veut pas dire que cela fonctionnerait à grande échelle avec des utilisateurs nombreux. Pour le moment, j'ai mis des msgbox pour prendre conscience de ce qui se passe.

Il faut tout de site indiquer dans source.txt le chemin d'accès au fichier dit "commun.xlsx". Je l'ai essayé en réseau, c'est ok.

Explications :

Comme les fichiers restent ouverts, il ne s'agit pas d'une synchronisation classique comme dans dropbox.

On se limitera à une seule saisie à la fois et au seul tableau de l'onglet data.

La synchro montante (lors du changement d'une valeur) sera faite en temps réel (si le fichier commun n'est pas déjà en cours de synchro).

La synchro descendante sera fait à une fréquence fixe (5 mn).

Un log est contenu dans chaque fichier.

Ici il s'agit de synchroniser des tableaux de données/d'avancement/... ce qui n'est pas le plus simple !

La synchro repose sur l'identifiant (première colonne).

Un changement de l'identifiant entraînera alors la création d'un nouvel item dans le tableau ! C'est une façon d'effacer une ligne (impossible du fait de la limitation à une seule saisie à la fois).

Les formules ne sont pas synchronisées (pas d'intérêt).

Si deux personnes modifient successivement une donnée, c'est le dernier a raison ! et le premier verra alors sa donnée (re-)modifiée lors d'une synchronisation descendante.

Petite évolution dans la feuille data afin d'enclencher la synchronisation "descendante" juste après une synchronisation "montante"

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then
        MsgBox "Une seule modification à la fois !"
        Application.EnableEvents = False
            Application.Undo
        Application.EnableEvents = True
        Exit Sub
    End If
    If Intersect(Target, ActiveSheet.ListObjects(1).DataBodyRange) Is Nothing Then Exit Sub

    On Error Resume Next
    Application.OnTime (Now + TimeValue("00:00:01")), "mymacro", , False
    On Error GoTo 0

    synchUP Intersect(Target, ActiveSheet.ListObjects(1).DataBodyRange)

    Intervalle = Now + TimeValue("00:00:02")
    Application.OnTime Intervalle, "mymacro"

End Sub

Bonsoir,

Wouah ! Super boulot Steelson

Je vais essayé cela. J'ai vu que tu as créé 3 utilisateurs dans ton système de synchronisation. S'il y en a plus ou moins il suffit de copier/coller un fichier "acteur1" et de modifier son nom ?

Je vais le tester en intensif, comme cela pourrait arriver au travail, pour voir comment ça réagit.

De mon côté j'ai fait mes tests avec le fichier partagé. Ça fonctionne plutôt bien en mettant un Workbook.save dans à chaque modification du fichier et un bouton VBA qui fait remonter les dernières modifications le cas échéant.

Bonsoir à tous,

Juste pour la connaissance, office 365 fonctionne sans aucun problème avec le VBA

Mais pas besoin sur Team pour la modification en temps réel multi-utilisateurs

Bonsoir BrunoM45,

Lorsque vous dites "fonctionner" c'est qu'on peut lancer une macro présente dans le fichier ?

En explorant l'aide de Office 365, je suis arrivé sur cela, et de ce que je comprends, on peut utiliser le fichier Excel sans problèmes si celui-ci contient des macros mais on ne peut ni les modifier, supprimer ou exécuter ?

Utiliser des macros VBA dans Excel pour le Web a écrit :

Même si vous ne pouvez pas créer, exécuter ou modifier des macros VBA (Visual Basic pour applications) dans Excel pour le web, vous pouvez ouvrir et modifier un classeur qui contient des macros. Toute macro existante reste dans le classeur, et vous pouvez ouvrir le classeur dans l’application de bureau Excel pour afficher et modifier les macros.

Article : https://support.office.com/fr-fr/article/utiliser-des-macros-vba-dans-excel-pour-le-web-98784ad0-898c-43aa-a1da-4f0fb5014343?ns=XLWAENDUSER&version=16&ui=fr-FR&rs=fr-FR&ad=FR

Pourriez-vous m'éclairer sur ce sujet ?

Merci,

Baptiste.

Je vais essayé cela. J'ai vu que tu as créé 3 utilisateurs dans ton système de synchronisation. S'il y en a plus ou moins il suffit de copier/coller un fichier "acteur1" et de modifier son nom ?

Absolument !

N'oublie pas aussi de diffuser à chacun le fichier source.txt et bien sûr de le mettre à jour avant utilisation des fichiers xlsm.

De mon côté j'ai fait mes tests avec le fichier partagé. Ça fonctionne plutôt bien en mettant un Workbook.save dans à chaque modification du fichier et un bouton VBA qui fait remonter les dernières modifications le cas échéant.

C'est sans doute une meilleure solution du reste (comme la version 365). Cela dit, ce que j'ai réalisé m'a beaucoup plu, un vrai décrassage neuronal, même si cela reste au musée des applications !

Bonsoir BrunoM45,

Lorsque vous dites "fonctionner" c'est qu'on peut lancer une macro présente dans le fichier ?

En explorant l'aide de Office 365, je suis arrivé sur cela, et de ce que je comprends, on peut utiliser le fichier Excel sans problèmes si celui-ci contient des macros mais on ne peut ni les modifier, supprimer ou exécuter ?

Utiliser des macros VBA dans Excel pour le Web a écrit :

Même si vous ne pouvez pas créer, exécuter ou modifier des macros VBA (Visual Basic pour applications) dans Excel pour le web, vous pouvez ouvrir et modifier un classeur qui contient des macros. Toute macro existante reste dans le classeur, et vous pouvez ouvrir le classeur dans l’application de bureau Excel pour afficher et modifier les macros.

Article : https://support.office.com/fr-fr/article/utiliser-des-macros-vba-dans-excel-pour-le-web-98784ad0-898c-43aa-a1da-4f0fb5014343?ns=XLWAENDUSER&version=16&ui=fr-FR&rs=fr-FR&ad=FR

Pourriez-vous m'éclairer sur ce sujet ?

Merci,

Baptiste.

en fait tu peux travailler sur une page web ( navigateur chrome, Firefox ou autre) mais tu ne peux avoir accès à la vba.

Par contre, tu peux ouvrir directement excel "l'application" et travailler en temps réel aussi avec l’accès à l'ensemble des fonctions de l'application. Tu verra les personne connectés à ton fichier, leur déplacement dans les cases etc..c'est un peu comme google sheet.

C'est la meilleure solution : office 365 en activant l'enregistrement automatique.

Mais j'ai un doute sur la possibilité de collaborer avec des personnes qui n'ont pas la licence office365.

80f4a8e9-8ade-4a04-9c02-aab46a1beb8b

https://support.office.com/fr-fr/article/qu-est-ce-que-l-enregistrement-automatique-6d6bd723-ebfd-4e40-b5f6-ae6e8088f7a5

Rechercher des sujets similaires à "donnees partagees temps reel"