Moniteur externe et contrôle à distance de l'Excel

Bonjour à tous !

Tout d'abord merci pour aide pour mes anciens posts, j'ai beaucoup progressé grâce à vous !

Ensuite pour la suite, je vais nommer moniteur un PC qui est non utilisé par une personne humaine, doté d'une UC connectée au réseau et d'un écran.

J'ai créé sur l'intranet un excel avec une macro qui permet de générer un Userform de données. Ce que je cherche à faire, c'est avoir un moniteur (donc juste un écran) qui puisse montrer ce tableau en continu.

Ce tableau est un Userform regroupant les tâches à faire (comme une ToDoList) qui est amené à changer en fonction des tâches que l'utilisateur marque comme "faites".

Le soucis c'est que cet excel est amené à être modifié par d'autres utilisateurs via leur propre PC, et puisque l'on ne peut pas ouvrir le fichier 2 fois ce n’est pas évident de mettre en place ma solution.

J'ai quelques solutions mais je ne sais pas si c'est possible de les coder :

1 - Quand un utilisateur ouvre l'excel de son coté, il fait "fermer" ce même excel déjà ouvert sur le moniteur. Une fois qu'il a apporté ses modifications, il ferme donc son excel, qui s'ouvre à nouveau au niveau du moniteur, affichant ainsi le tableau mis à jour (j'ai l'impression que j'en demande trop au VBA ^^)

2 - Faut bien suivre celle-là : Avoir une copie de ce tableau ouvert sur le moniteur via un autre excel, ce qui permet de résoudre le soucis de l'excel partagé. Donc une fois que l'utilisateur a apporté ses modifications, il ferme comme d'habitude son excel, et créer une sauvegarde du tableau dans un nouveau fichier excel. Le moniteur lui devra ouvrir ce dernier et fermer le précédent excel contenant le tableau avec les infos NON actualisées.

3 - Ou alors depuis le début il y a moyen de partager le fichier Excel et je n'en savais rien !

4 - Votre solution ici si vous en avez !

Merci en tout cas pour votre aide, je sais que ce n’est pas évident comme explication du problème, donc n'hésitez pas à me poser des questions si vous souhaitez plus d'éclaircissements !

Merci à vous !

Bonjour,

Pour travailler en modification simultanée sur le même classeur, une solution est de laisser le classeur en "non partagé" et de gérer une file d'attente pour les modifications.

Dès qu'une personne essaiera d'ouvrir un classeur utilisé en modification par une autre personne, il ne pourra l'ouvrir qu'en lecture seule et le code ci-dessous lui permettra de patienter :

Private Sub Workbook_Open()

    Application.DisplayAlerts = False
    If ThisWorkbook.ReadOnly Then
        réponse = MsgBox("Voulez-vous modifier ce fichier ?", vbYesNo + vbDefaultButton2)
        If réponse = vbYes Then
            Nom_fichier = ThisWorkbook.Path & "\" & ThisWorkbook.Name

            '..... contrôle libre accès classeur pour modification sinon attente 5 secondes .......................................
            Do While IsWorkBookOpenForWrite(Nom_fichier)
                date_fin = DateAdd("s", 5, Now)
                Application.Wait date_fin
            Loop
            '..... lancement nouvelle instance Excel avec ouverture fichier pour modification  ....................................
            Set xl = New Application
            xl.Visible = True
            xl.Workbooks.Open fileName:=Nom_fichier, IgnoreReadOnlyRecommended:=True

            '..... fermeture instance Excel avec ouverture fichier en lecture seule  ....................................
            Application.Quit
        End If
    End If

End Sub

Function IsWorkBookOpenforwrite(ByVal Nom_fichier As String) As Boolean

    Dim no_fichier As Long

    On Error Resume Next
    no_fichier = FreeFile()
    Open Nom_fichier For Binary Access Read Lock Read Write As #no_fichier
    If Err.Number = 0 Then IsWorkBookOpenforwrite = False _
    Else IsWorkBookOpenforwrite = True
    Close no_fichier

End Function
 

Bonjour thev,

Ta solution est interessante, néanmoins le problème est que le moniteur n'est pas sensé représenter une personne physique, donc le sénario que je souhaite :

1 - Le moniteur affiche l'Userform "Todo List" de l'Excel

2 - Un utilisateur veut ouvrir l'Excel pour le modifier

3 - L'Excel ouvert sur le moniteur se ferme tout seul

4 - L'Excel s'ouvre au niveau du poste de l'utilisateur

5 - L'utilisateur modifie l'Excel

6 - L'utilisateur ferme l'Excel

7 - L'Excel s'ouvre sur le moniteur

Le sénario que je ne souhaite PAS :

1 - Le moniteur affiche l'Userform "Todo List" de l'Excel

2 - Un utilisateur veut ouvrir l'Excel pour le modifier

3 - L'utilisateur ferme l'Excel ouvert sur le moniteur

4 - L'utilisateur ouvre l'Excel au niveau de son poste

5 - L'utilisateur modifie l'Excel sur son poste

6 - L'utilisateur ferme l'Excel sur son poste

7 - L'utilisateur ouvre l'Excel au niveau du moniteur

J'ai pensé à une detection de nom de session pour que l'Excel differencie l'utilisateur du moniteur

J'ai pensé aussi à faire en sorte à mettre une ligne à la fermeture (BeforeClose) pour faire ouvrir le fichier sur le moniteur (mais je n'arrive pas à voir quoi)

J'ai aussi pensé à faire en sorte que l'Excel sur le moniteur reste ouvert mais en lecture seule, ce qui règlera le soucis de la detection de fermeture de ce dernier par un utilisateur. en comptant le nombre d'entité qui ont ouvert le fichier. Si le résultat est 1 (c'est à dire qu'il n y a que le moniteur qui a l'Excel ouvert) il vient se fermer et se réouvrir pour s'actualiser.

On pourra ainsi utiliser ta solution pour quand plusieurs utilisateurs ouvrent l'Excel.

J'espère que j'étais plus clair !

Merci !

Rechercher des sujets similaires à "moniteur externe controle distance"