Fermer un classeur session fermé

Signaler
Messages postés
134
Date d'inscription
mardi 15 avril 2014
Statut
Membre
Dernière intervention
14 janvier 2021
-
Messages postés
23801
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2021
-
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?


Configuration: Windows / Chrome 87.0.4280.141

3 réponses

Messages postés
23801
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2021
6 563
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
Messages postés
7196
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
13 janvier 2021
597
Messages postés
134
Date d'inscription
mardi 15 avril 2014
Statut
Membre
Dernière intervention
14 janvier 2021

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.
Messages postés
7196
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
13 janvier 2021
597 >
Messages postés
134
Date d'inscription
mardi 15 avril 2014
Statut
Membre
Dernière intervention
14 janvier 2021

et quand tu cliques sur Quitter Excel à partir d'un autre classeur, cela ne ferme pas tous les classeurs ouverts?

Messages postés
134
Date d'inscription
mardi 15 avril 2014
Statut
Membre
Dernière intervention
14 janvier 2021
>
Messages postés
7196
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
13 janvier 2021

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.
Messages postés
7196
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
13 janvier 2021
597 >
Messages postés
134
Date d'inscription
mardi 15 avril 2014
Statut
Membre
Dernière intervention
14 janvier 2021

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
Messages postés
23801
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2021
6 563
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
Messages postés
134
Date d'inscription
mardi 15 avril 2014
Statut
Membre
Dernière intervention
14 janvier 2021
>
Messages postés
23801
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2021

c'est vrai oui,
j'ai oublié,
mais j'ai dans une macro une fonction de retrait et ajout de protection et c'est cela qui n'est pas pris en compte pas le partage de fichier.
Messages postés
23801
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2021
6 563 >
Messages postés
134
Date d'inscription
mardi 15 avril 2014
Statut
Membre
Dernière intervention
14 janvier 2021

Ah bon, je ne me rappele pas... Tu as testé et ?
De toute façon il vaut mieux protéger ses feuilles à l'ouverture par macro avec le paramètre UserInterfaceOnly:=True
Ainsi les macros ont accès aux feuilles sans les déprotéger, seuls les utilisateurs sont bloqués.
eric
Messages postés
134
Date d'inscription
mardi 15 avril 2014
Statut
Membre
Dernière intervention
14 janvier 2021
>
Messages postés
23801
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2021

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 
Messages postés
23801
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2021
6 563 >
Messages postés
134
Date d'inscription
mardi 15 avril 2014
Statut
Membre
Dernière intervention
14 janvier 2021

par exemple, dans ThisWorkbook :
Private Sub Workbook_Open()
    Dim f, i As Long
    f = Array("Feuil2", "Feuil3") ' liste feuilles à protéger
    For i = 0 To UBound(f)
        Worksheets(f(i)).Protect Password:="mdp", UserInterfaceOnly:=True, DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowSorting:=True, AllowFiltering:=True
    Next i
End Sub

et tu supprimes toutes les lignes .Unprotect
eric
Messages postés
134
Date d'inscription
mardi 15 avril 2014
Statut
Membre
Dernière intervention
14 janvier 2021
>
Messages postés
23801
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2021

Bonjour,

j'ai un soucis:

J'ai changer le nom des feuilles car je n'ai pas de feuilles 1 et 2 mais j'ai toujours l'erreur.
autre point, chaque jour j'ajoute une nouvelle feuille, comment le prendre en compte dans ce cas?

j'avais déjà une private sub workbook_open.
il me dit alors, nom ambigü. comment passer outre?