Pb pour quitter un fichier en réseau, Très important-svp

aredo

XLDnaute Occasionnel
bonjour

j'ai un fichier nommé " StockMagasinMoule", contenant 6 usf, qui fonctionne très bien. Un petit souci depuis qu'il est en réseau: quand le fichier est ouvert sur 2 postes(ce qui arrive souvent), celui qui est en lecture seule pose problème.
Lorsque l'utilisateur quitte l'application, une erreur se produit:
un fichier nommé"stockMagasinMoule" existe déjà, voulez-vous le remplacer?
si on met oui, çà plante, si on met non, çà provoque une erreur, normal, puisque dans thisworkbook, on demande à ce que le fichier soit enregistré en quittant, n'étant qu'en lecture, il n'autorise pas cette action.
L'idéal, serait que le poste qui ouvre le fichier en lecture seule, puisse quitter l'application sans que çà enregistre, ou qu'à l'ouverture, un message lui signifie quel poste est ouvert( peut-être récupérer les données de la feuille connexion par exemple,qui enregistre chaque connexion)
Je résume mes attentes:
1) trouver une soluce pour cette erreur quand le poste en lecture seule quitte l'appli
2) le poste en lecture seule ne doit pas avoir accès aux USF 2,3 et 4. Car de toute façon, il ne peut modifier et çà génère également une erreur.
3) je pense que le mieux serait d'identifier le poste ouvert quand le deuxième s'ouvre, que le 1er ferme pour que le 2ème puisse travailler
C'est un fichier de gestion de stock (service 11 personnes), qui, sans réseau est caduc.
J'espère que vous saurez donner une suite favorable à cette demande. Je n'ai jamais été déçu pour le moment
merci au fofo
http://cjoint.com/?gCjUnLtbph - nom: hatier MdP:tina
clic droit sur visualisation quantité dans la colonne référence déclenche des usf. J'ai également crée deux boutons pour déclencher USF 1 et 5
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Pb pour quitter un fichier en réseau, Très important-svp

Salut Aredo,

Il existe une fonction pour savoir si le classeur est en lecture seule : ThisWorkbook.ReadOnly

Donc en appliquant la valeur retournée à une variable : WbkRO (par exemple)

Tu peux corriger tes soucis 1 et 2 ;)

Petit truc constaté :
- lors de l'ouverture du USF1 tu peux sélectionner la ligne 3907-3 alors qu'elle est non visible !?
- tu devrais mettre le propriété "XlSheetVeryHidden" sur ta feuille "Users"
sinon l'utilisateur peux l'afficher, c'est vrai ça ne lui sert pas à grand chose :D

A+

Edit : Oups, salut JMPS
Edit : voir fichier plus bas
 
Dernière modification par un modérateur:

aredo

XLDnaute Occasionnel
Re : Pb pour quitter un fichier en réseau, Très important-svp

salut jmps, salut BrunoM45, salut le fofo,

merci à vous d'avoir répondu aussi vite.
J'ai testé aujourd'hui la modif de bruno. C'est tout bon, je n'ai plus de message d'erreur.(point 1 et 2 ok)
Merci beaucoup d'avoir pris le temps d'intégrer cette fonction ds mon fichier.
Petit truc constaté :
- lors de l'ouverture du USF1 tu peux sélectionner la ligne 3907-3 alors qu'elle est non visible !?
= elle est visible normalement, peut-être une erreur de manip
- tu devrais mettre la propriété "XlSheetVeryHidden" sur ta feuille "Users"
Normalement, elle est dans cet état.

J'aimerais si tu le veux bien que l'on regarde le 3ème point évoqué plus haut. Je rappelle que c'est un fichier de gestion de stock, on l'ouvre, on sort ou entre une pièce. Ceci plusieurs fois ds la journée sur des postes différents.(il faut que le fichier ne soit ouvert que sur un poste pour que les changements puissent se faire.
Voici ma demande: lorsque la fenêtre "Impossible d'utiliser ce bouton, vous êtes en lecture seule" s'affiche, l'idéal serait de rajouter ceci: "le poste a été ouvert par (nom de l'utilisateur)". Une info que l'on pourrait récupérer dans la feuille "connexion"(incrémentée automatiquement à chaque fois qu'un utilisateur ouvre le fichier). Ceci pour permettre d'identifier le poste connecté, afin de le fermer.(cette feuille connexion existe déjà)
Est-ce possible d'intégrer cet élément, dans le code.
merci encore pour le partage.
à bientôt, j'espère
 
Dernière édition:

mromain

XLDnaute Barbatruc
Re : Pb pour quitter un fichier en réseau, Très important-svp

bonsoir aredo et tout le monde

essaye cette ligne :
MsgBox (Environ("USERNAME") & " - " & CStr(Format(Now, "dd/mm/yyyy")))

elle permet de récupérer le nom du PC

il te reste plus qu'à l'écrire sur une feuille cachée à l'ouverture du fichier si ThisWorkbook.ReadOnly = False et à l'afficher si ThisWorkbook.ReadOnly = True

tu peux aussi faire le lien dans une autre feuille entre le nom du PC (unique en général) et le nom et n° de téléphone de l'utilisateur.

Bonne soirée
 
Dernière édition:

aredo

XLDnaute Occasionnel
Re : Pb pour quitter un fichier en réseau, Très important-svp

salut mromain

Est-ce bien le nom du pc déjà ouvert qui apparaît? ton idée peut m'intéresser, c'est surement tout bête, mais je n'arrive pas à l'intégrer dans le code existant, et mettre cette fonction en pratique. Désolé, je suis débutant, en tout cas merci pour ton intervention.
Effectivement, cela me donne le nom du poste, mais pas le nom de l'intervenant. On connaît plus le nom des personnes et donc de leur service que celui du pc. Je me raccroche à mon idée de départ, si quelqu'un a une petite idée pour l'intégrer dans mon code existant.
Enfin, s'il n'y a pas d'autre moyen!
bonne journée
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Pb pour quitter un fichier en réseau, Très important-svp

Salut tout le monde,
Aredo,

Ne serait-il pas plus simple de mettre un timer à l'ouverture du fichier.

Si aucun changement n'est intervenu dans un délai imparti, le fichier se ferme tout seul ;)

A toi de voir ...

A+
 

aredo

XLDnaute Occasionnel
Re : Pb pour quitter un fichier en réseau, Très important-svp

salut bruno

je n'avais pas pensé à cette éventualité. Cà serait plus simple et cela conviendrait parfaitement à l'utilisation.
Si tu peux intégrer cet état, j'en serais pleinement satisfait
bonne soirée
 
C

Compte Supprimé 979

Guest
Re : Pb pour quitter un fichier en réseau, Très important-svp

Re,

Voilà ton fichier modifié, qui se ferme tout seul au bout de 15 secondes

Timer mis dans l'évènement Open de ThisWorkbook ;)

A+
 
Dernière modification par un modérateur:

aredo

XLDnaute Occasionnel
Re : Pb pour quitter un fichier en réseau, Très important-svp

re,

est-il possible qu'il enregistre en quittant? car si on laisse ouvert aprés une saisie, il ne la prend pas en compte. (en l'état,avant la modif, il enregistre automatiquement lorsque l'on ferme le fichier )

je remarque à l'instant qu'il se coupe après 15 sec. quoique l'on fasse, même si on saisit, il ferme à peine ouvert.
merci beaucoup
bonne soirée
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Pb pour quitter un fichier en réseau, Très important-svp

Salut Aredo,

J'ai juste oublié quelques trucs par ci, par là ;)

Fichier modifié :
- le timer est reculé de 20 secondes à chaque fois qu'il y a un changement dans le classeur
- la fermeture se fait avec enregistremetn du fichier

Voili, voilà :D
 

Pièces jointes

  • Aredo_StockMagasinMoules.zip
    89.7 KB · Affichages: 60

aredo

XLDnaute Occasionnel
Re : Pb pour quitter un fichier en réseau, Très important-svp

salut Bruno,

ok, çà fonctionne super, je teste ce changement demain.
Un autre petit détail remarqué sur le réseau: quand le fichier est en lecture seule, le nom de l'utilisateur n'est pas sauvegardé dans la feuille connexion.(à chaque ouverture de fichier, il y a une traçabilité, j'aimerais qu'elle le soit également lorsque un autre poste s'ouvre)
Est-ce que "WbkRO = ThisWorkbook.ReadOnly" est mal plaçé ds le code.
merci beaucoup bruno, mon fichier est quasiment près pour affronter la dure loi de l'entreprise!
bonne soirée
 
C

Compte Supprimé 979

Guest
Re : Pb pour quitter un fichier en réseau, Très important-svp

Salut Aredo,

Pour moi la traçabilité n'a besoin d'exister qu'a partir du moment ou on fait des modifications dans le fichier, donc il n'est plus en lecture seule ;)

Sinon, après il faut utiliser un fichier log, dans lequel on inscrit toutes les activité. Mais ça devient un fichier "texte"

De plus sur un serveur, on peut mettre en place un audit de document.

A+
 

aredo

XLDnaute Occasionnel
Re : Pb pour quitter un fichier en réseau, Très important-svp

bonsoir bruno,

En fait, c'était au cas ou l'opérateur visionne le n° du casier d'une pièce, qu'il puisse la sortir sans la comptabiliser(étant en lecture seule). La traçabilité aurait permis de connaître l'utilisateur responsable. Depuis que tu as mis la fonction timer, ce point est en parti résolu. Cà me va.
Parcontre, j'ai rencontré un autre souci, depuis les deux derniers changements dans le code. En utilisation normale, tout paraît fonctionnel.
Un problème survient lorsque de temps en temps, je suis amené à modifier le contenu de certaines feuilles(il y a en totalité une cinquantaine de feuilles).

Avant, lorsque par exemple, dans une feuille, je devais insérer une ligne pour y rentrer une nouvelle référence, une fenêtre s'ouvrait: "erreur 13 incompatibilité de type", mais la modification prenait effet et tout était ok, en prenant garde avant de modifier d'avoir activer la macro "déprotège/protège".

Depuis les derniers changements, une autre erreur en plus de l'autre apparaît: "erreur 1004 la méthode OnTime de l'objet Application a échoué",
et la modif. ne prend pas effet.(lors du clic droit sur référence, la modif. n'apparaît pas) Ceci est fort génant, car souvent je dois intervenir dans les feuilles afin d'insérer ou de copier/coller etc...
J'espère ne pas abuser, mais on est proche du but, ce serait dommage d'en rester là.
Merci en tout cas d'avoir finalisé mon projet, je te dois un grand respect.

j'ai oublié (ce que tu as fait me convient parfaitement), si c'est possible et n'occasionne pas un grand changement. Ce serait bien si la fonction timer pouvait s'annuler lorsque l'on déplace la souris, car lors de modif, je ne déclenche aucun usf, juste de la saisie ds les cellules(insertion etc...) et le timer se déclenche donc rapidement et je ne peux pas trop allonger le temps sinon en utilisation normale, ce serait trop long. Qu'en penses-tu?
bonne soirée
 
Dernière édition:

aredo

XLDnaute Occasionnel
Re : Pb pour quitter un fichier en réseau, Très important-svp

bonsoir à tous

Après quelque temps d'utilisation du fichier en réseau, voici un des points prioritaires à éclaircir.
je reformule ma demande.
lorsque je modifie une feuille, car de nouvelles références apparaissent(il y a en totalité une cinquantaine de feuilles), une erreur apparaît "erreur 13 incompatibilité de type" , puis "erreur 1004 la méthode OnTime de l'objet Application a échoué".
Lorsque j'utilise le débogage, l'appli. s'arrête sur "reference = Target.Value", présent sur toutes les feuilles.
Je rappelle que le fichier marche bien lorsque je déclenche toutes les usf.
Le bug se produit lorsque je veux insérer une ligne, copier coller etc..dans n'importe quelle feuille.
Si quelqu'un a une idée
Le fichier dont les deux dernières modifs ont été réalisées par bruno, que je remercie au passage. se trouve quatre messages plus haut.
à bientôt, je l'espère

nom: posté - MdP : posté
clic droit sur visualisation quantité dans la colonne référence déclenche des usf. J'ai également crée deux boutons pour déclencher USF 1 et 5
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Pb pour quitter un fichier en réseau, Très important-svp

Salut Aredo,

Quel couche tard ou alors lève très, très top :D

Le problème se situe dans ta procédure "Worksheet_BeforeRightClick"
Il faut tester si le nombre de cellule est supérieur à 1
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  Dim icbc As Object
  ' Sort de la procédure si le nombre de cellule >1
  If Target.Count > 1 Then Exit Sub
  ' Sinon on continue
  xnomfeuil = ActiveSheet.Name
  reference = Target.Value
...

Procédure que tu peux d'ailleurs intégrée dans ThisWorkbook, ce que j'ai fait ;)

A+
 

Pièces jointes

  • Aredo_StockMagasinMoulesV2.zip
    94 KB · Affichages: 36

Discussions similaires

Statistiques des forums

Discussions
312 360
Messages
2 087 592
Membres
103 604
dernier inscrit
CAROETALEX59