Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL pour MAC Oter la protection pendant un temps limité

  • Initiateur de la discussion Initiateur de la discussion chajmi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

chajmi

XLDnaute Occasionnel
Bonjour
Dans un fichier avec toutes les cellules protégées, je veux pouvoir donner à un opérateur, la possibilité de déverrouiller une cellule pour faire une correction, mais pendant un temps limité (exemple 30secondes).
Je souhaiterais que la protection se remette en place automatiquement, au bout du temps imparti.

Est ce envisageable en VBA ?. Merci d'avance au forum pour votre aide.
 
Bonjour chajmi,

Fichier joint avec dans le code de la feuille :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim t#
Cancel = True
Protect "chajmi", UserInterfaceOnly:=True
Target.Locked = False
t = Timer + 30
If t > 86400 Then t = t - 86400 'après minuit
While Timer < t: DoEvents: Wend
Target.Locked = True
End Sub
Et dans ThisWorkbook :
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
With Feuil1 'CodeName
    .Protect "chajmi", UserInterfaceOnly:=True
    .Cells.Locked = True
End With
End Sub
A+
 

Pièces jointes

Re,

Voici une autre méthode, plus complète, avec Application.OnTime :
Code:
Dim t# 'mémorise la variable

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
RAZ
Unprotect "chajmi"
Target.Locked = False
Target.AddComment "Vous avez 30 secondes pour modifier la cellule"
Target.Comment.Shape.TextFrame.AutoSize = True
Protect "chajmi", AllowFormattingCells:=True
t = Now + 30 / 86400
Application.OnTime t, Me.CodeName & ".RAZ"
End Sub

Sub RAZ()
Unprotect "chajmi"
Cells.ClearComments
Cells.Locked = True
Protect "chajmi"
On Error Resume Next
Application.OnTime t, Me.CodeName & ".RAZ", , False
End Sub
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Feuil1.RAZ
End Sub
Fichier (2).

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…