Fermer un classeur session fermé
Maksime568
Messages postés
145
Statut
Membre
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je fais compléter un tableau par 3 utilisateurs.
il arrive qu'un utilisateur oubli de fermer le fichier en question et ne laisse donc que la lecture seule au suivant l'empêchant ainsi de pouvoir compléter ce tableau à son tour.
Comment éviteriez-vous ce soucis?
est-ce possible de forcer la fermeture d'excel (et la sauvegarde) même si la session n'est pas ouverte?
Je fais compléter un tableau par 3 utilisateurs.
il arrive qu'un utilisateur oubli de fermer le fichier en question et ne laisse donc que la lecture seule au suivant l'empêchant ainsi de pouvoir compléter ce tableau à son tour.
Comment éviteriez-vous ce soucis?
est-ce possible de forcer la fermeture d'excel (et la sauvegarde) même si la session n'est pas ouverte?
Configuration: Windows / Chrome 87.0.4280.141
3 réponses
-
Bonjour,
J'ai changer le nom des feuilles car je n'ai pas de feuilles 1 et 2 mais j'ai toujours l'erreur.
Comment veux-tu que je devine sans fichier ?
autre point, chaque jour j'ajoute une nouvelle feuille, comment le prendre en compte dans ce cas?
Et bien fait l'inverse, liste les feuilles à ne pas protéger :Private Sub Workbook_Open() Dim sh As Worksheet, f As String f = ",Feuil2,Feuil3," ' liste feuilles à ne pas protéger For Each sh In Worksheets If InStr(f, "," & sh.Name & ",") = 0 Then sh.Protect Password:="mdp", UserInterfaceOnly:=True, DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowSorting:=True, AllowFiltering:=True Next sh End Sub
j'avais déjà une private sub workbook_open.
il me dit alors, nom ambigü. comment passer outre?
Ne choisis pas trop la facilité, ça doit se trouver rapidement sur google ça...
eric
-
Bonjour,
voir ceci pour mettre dans le classeur
https://www.mediaforma.com/vba-excel-executer-procedure-a-fermeture-dun-classeur/
et ceci pour l'enregistrement:
https://docs.microsoft.com/fr-fr/office/vba/api/excel.workbook.save
et puis pour fermer tous les classeurs:
https://support.microsoft.com/fr-fr/office/fermer-des-classeurs-ou-des-fen%C3%AAtres-de-classeur-ca74dca4-8d2f-43f9-84e1-f9a1b1621d26
-
pour les 2 premiers onglets je connaissais et j'ai appliqué la procédure de sauvegarde automatique à la fermeture.
cependant,
si l'utilisateur ne ferme pas sont classeur excel et que l'on change de session windows, le fichier reste bloqué en lecture seule jusqu'à ce que le premier utilisateur ferme ce classeur.
c'est ce point là que je souhaiterais bloquer.- non car l'opération ne serait faite qu'avec un second utilisateur qui n'est pas celui qui a ouvert le classeur à la base.
il y a une macro qui force la fermeture d'excel au bout de X minutes après une saisie, ce qui serait applicable ici mais pas forcément la meilleur solution. Cela pourrait éviter qu'un utilisateur oubli de ferme un classeur malgré tous. - il y a une macro qui force la fermeture d'excel au bout de X minutes après une saisie, ce qui serait applicable ici mais pas forcément la meilleur solution
Voir cela
https://www.tutoderien.com/comment-fermer-un-classeur-apres-un-delai-dinactivite/
@+ Le Pivert
-
-
Bonjour,
je suppose le fichier sur un réseau.
Dans ce cas tu peux partager (ancienne fonctionnalité !) le classeur que chacun puisse faire ses modifs.
Ca demande une certaine discipline, qu'un utilisateur n'écrase pas les modifs d'un autre, mais à 3 c'est jouable.
Le mieux est d'enregistrer le fichier avant de démarrer une modif. Ca force excel à rapatrier les modifs des autres en suspend et limites les collisions.
eric
-
-
-
-
-
oui j'avais tenté cette méthode dans un premier temps mais le portect / unprotect bloque.
je ne connais pas le paramètre "UserInterfaceOnly = True" tu saurais m'en dire plus par rapport au protect / unprotect?
voici le code d'une macro qui posait problème de mémoire.
Sub ajoutProduction() ' ' ajoutProduction Macro ' Dim nomF As String nomF = Format(Date, "dd-mm-yy") If FExist(nomF) Then avertissement 'appel de la MsgBox pour avertir que la feuille existe déjà Exit Sub End If ' ActiveWorkbook.Unprotect Sheets("Suivi Production").Select ' ActiveSheet.Unprotect Sheets("Suivi Production").Copy Before:=Sheets(1) ActiveSheet.Name = nomF With [G3] ActiveSheet.Unprotect .Value = Now .NumberFormat = "dd/mm/yy" End With ActiveSheet.protect
-