fichier partagée et userform

Y compris Power BI, Power Query et toute autre question en lien avec Excel
r
reglaet
Membre fidèle
Membre fidèle
Messages : 176
Appréciation reçue : 1
Inscrit le : 14 mars 2017
Version d'Excel : 2013

Message par reglaet » 7 décembre 2017, 09:25

bonjour Thev,

J'ai essayé de faire comme tu ma dit mais ca ne fonctionne pas, j'ai mis le nom verrou OK ensuite quand j'ouvre l'userform sur le 1er poste OK le nom passe à "mis" mais quand j'ouvre sur un autre poste l'userform s'ouvre aussi avec le même numéro .

quand je fait le code pour liberer le formulaire je suis en erreur au niveau de " date_fin = DateAdd("s", 5, Now)"?

Merci
Avatar du membre
thev
Membre impliqué
Membre impliqué
Messages : 2'536
Appréciations reçues : 213
Inscrit le : 13 juin 2016
Version d'Excel : 2019 FR 64 bits

Message par thev » 7 décembre 2017, 11:50

Bonjour,
reglaet a écrit :
7 décembre 2017, 09:25
quand je fait le code pour liberer le formulaire je suis en erreur au niveau de " date_fin = DateAdd("s", 5, Now)"?
Si tu es en "Option Explicit", il doit manquer la définition de date_fin
Dim date_fin as Date
Pour le reste, sans communication de ton code ou une version non confidentielle de ton classeur, il me sera difficile de t'aider plus avant.
r
reglaet
Membre fidèle
Membre fidèle
Messages : 176
Appréciation reçue : 1
Inscrit le : 14 mars 2017
Version d'Excel : 2013

Message par reglaet » 7 décembre 2017, 13:18

Je te transmets le fichier quand le verrou et mis il bloque sur loop et au bout des 5 minutes il me mets un message d'erreur comme quoi il ne peut pas executer la macro de liberation ...

merci
réservation véhicule le 25.01.2018.xlsm
(869.79 Kio) Téléchargé 11 fois
Avatar du membre
thev
Membre impliqué
Membre impliqué
Messages : 2'536
Appréciations reçues : 213
Inscrit le : 13 juin 2016
Version d'Excel : 2019 FR 64 bits

Message par thev » 7 décembre 2017, 19:12

Bonsoir,
reglaet a écrit :
7 décembre 2017, 09:25
Je te transmets le fichier quand le verrou et mis il bloque sur loop
C'est normal. L'exécution est mise en attente tant que le poste qui a pris la main, n'a pas libéré le verrou.

modif apportées :
1- déplacement de la procédure Libération_formulaire dans Feuil2(Menu)
2- modification de l'instruction en conséquence :
Application.OnTime Now + TimeValue("00:05:00"), "Feuil2.Libération_formulaire"
3- ajout initialisation du nom "verrou" dans la procédure Workbook_Open(), si 1 seul utilisateur du fichier
    With ThisWorkbook
        If UBound(.UserStatus) = 1 Then Names.Add Name:="verrou", RefersTo:="="""""
    End With
réservation véhicule le 25.01.2018v1.xlsm
(793.47 Kio) Téléchargé 12 fois
r
reglaet
Membre fidèle
Membre fidèle
Messages : 176
Appréciation reçue : 1
Inscrit le : 14 mars 2017
Version d'Excel : 2013

Message par reglaet » 8 décembre 2017, 08:52

Bonjour thev et merci je viens de faire l'essai mais ça ne réagit pas comme je voudrait.

J'ouvre mon fichier excel partager sur un poste quand j'ouvre l'userform il prends un numéro et me met le verrou jusque la impeccable ensuite:

-1er problème si je ferme avec la croix rouge l'userform impossible d'y revenir car il y a le verrou

-2eme problème quand mon useform est ouvert si je vais sur un autre poste ouvrir mon fichier OK j'ouvre mon userform et la il s'ouvre et prend le même numéro que celui du 1er poste en fait je voudrais que si l'userform est ouvert sur un autre poste il y ai un message d'attente le temps que l'userform du poste 1 soit libérer si c'est possible?

Si je n'ai pas était très clair dans mon explication n'hésite pas à me demander.
Avatar du membre
thev
Membre impliqué
Membre impliqué
Messages : 2'536
Appréciations reçues : 213
Inscrit le : 13 juin 2016
Version d'Excel : 2019 FR 64 bits

Message par thev » 8 décembre 2017, 11:09

reglaet a écrit :
8 décembre 2017, 08:52
-2eme problème quand mon useform est ouvert si je vais sur un autre poste ouvrir mon fichier OK j'ouvre mon userform et la il s'ouvre et prend le même numéro que celui du 1er poste en fait je voudrais que si l'userform est ouvert sur un autre poste il y ai un message d'attente le temps que l'userform du poste 1 soit libérer si c'est possible?
Après réflexion, il faut évidemmment mettre à jour le classeur de la position du verrou pour qu'un 2ème poste puisse le prendre en compte.
Donc ajout de l'instruction "ThisWorkBook.save" après positionnement du verrou.


reglaet a écrit :
8 décembre 2017, 08:52
1er problème si je ferme avec la croix rouge l'userform impossible d'y revenir car il y a le verrou
il suffit d'ajouter la procédure évenementielle : UserForm_Terminate
 
Private Sub UserForm_Terminate()
    
    Unload Ordredemission
    Names("verrou").RefersTo = "="""""
    ThisWorkbook.save

End Sub
réservation véhicule le 25.01.2018v2.xlsm
(794.74 Kio) Téléchargé 14 fois
r
reglaet
Membre fidèle
Membre fidèle
Messages : 176
Appréciation reçue : 1
Inscrit le : 14 mars 2017
Version d'Excel : 2013

Message par reglaet » 8 décembre 2017, 14:11

ca marche mieux cette fois ci mais quand j'ouvre sur le second PC et que j'appui sur le bouton ordre de mission est-il possible de mettre un msgbox disant ordre de mission occupé si le verrou est mis et arreter l'action de l'appui du bouton car j'ai la souris qui tourne en permanence et je suis obligé d'arreter l'execution en faisant echap et annuler.Une fois le verrou enlever sur le 1er PC comment mettre a jour sur le 2eme PC le verrou sans réouvrir le fichier et est il possible d'avoir un msgbox pour dire ordre de mission libre?

c'est plus compliqué que ça ne parait le fait de partager le fichier...grrrrr tu m'aide vraiment Merci....
Avatar du membre
thev
Membre impliqué
Membre impliqué
Messages : 2'536
Appréciations reçues : 213
Inscrit le : 13 juin 2016
Version d'Excel : 2019 FR 64 bits

Message par thev » 8 décembre 2017, 19:38

En fait, lorsque le classeur est partagé, il faut forcer sa mise à jour avant et pendant la boucle d'attente afin que chaque poste connaisse la position du verrou. Ci-dessous modification du code avec une boucle d'attente de 20 secondes et message de patience.
    ThisWorkbook.save
    If Names("verrou").RefersTo = "=""mis""" Then Patience.Show vbModeless
    Do While Names("verrou").RefersTo = "=""mis"""
        date_fin = DateAdd("s", 20, Now)
        Application.Wait date_fin
        ThisWorkbook.save
    Loop
    Unload Patience
réservation véhicule le 25.01.2018v3.xlsm
(804.64 Kio) Téléchargé 10 fois
r
reglaet
Membre fidèle
Membre fidèle
Messages : 176
Appréciation reçue : 1
Inscrit le : 14 mars 2017
Version d'Excel : 2013

Message par reglaet » 11 décembre 2017, 13:42

Bonjour,

Je viens d'essayer ce code et j'ai deux petits problèmes le 1er quand j'ai la fenêtre patience qui s'ouvre je ne peut pas la fermer avec la croix rouge quand je ne suis pas en partage sa marche et si je suis en partage ça ne marche pas et ensuite 2eme erreur quand je referme sur le premier poste l'userform sur le deuxieme j'ai une erreur d'execution 1004 le fichier est vérrouillé essayé à nouveau ulterieurement je suis obligé de mettre fin et encore le verrou ne s'est pas enlevé j'ai un petit couac encore mais on se rapproche du resultat.

Merci.
Avatar du membre
thev
Membre impliqué
Membre impliqué
Messages : 2'536
Appréciations reçues : 213
Inscrit le : 13 juin 2016
Version d'Excel : 2019 FR 64 bits

Message par thev » 11 décembre 2017, 15:00

Bonjour,
reglaet a écrit :
11 décembre 2017, 13:42
quand j'ai la fenêtre patience qui s'ouvre je ne peut pas la fermer avec la croix rouge
C'est exact, mais elle se ferme toute seule quand le premier poste libère le verrou.
reglaet a écrit :
11 décembre 2017, 13:42
quand je referme sur le premier poste l'userform sur le deuxieme j'ai une erreur d'execution 1004
Je n'ai pas cette erreur. Vous avez cette erreur quand vous fermez le formulaire sur le premier poste via le bouton "X" en haut à droite ?
Quand vous avez l'erreur, l'option débogage est-elle offerte ? Si oui quelle est l'instruction en cause ?
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message