Macro evenementielle lorsque la protection excel est otée [Résolu]

Signaler
Messages postés
6
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
22 juillet 2009
-
Messages postés
6
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
22 juillet 2009
-
Bonjour,

Je souhaite lancer automatiquement une macro lorsque la protection du classeur excel est ôtée par l'utilisateur et une autre lorsque la protection est remise.


Je pense passer par une macro événementielle, mais ne trouve pas comment faire.
Avez vous une idée?
Merci par avance

djé31

9 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    With Sh
      If .Name = "feuil1" Then
         If .ProtectContents = False Then
            titi
         else
            toto
         End If
      End If
   End With
End Sub 


A+
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
67
Salut
Il n'existe d'évènement lié à cette action.
La solution peut consister à ajouter un Timer qui, toutes les secondes, irait lire l'état de la protection (?) + mémoriserait cet état pour savoir lorsqu'il est modifié pour lancer ton action.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
6
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
22 juillet 2009

Ok cette solution peux me convenir, mais est ce que cela va pas ralentir l'utilisation du fichier?
Peux tu me donner le code VBA pour checker toutes les secondes si la protection est active ou pas.

Merci

djé31
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

voici une solution sans timer:

code a mettre dans le code de ThisWorkBook

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
With Sh
If .Name = "feuil1" Then
If .ProtectContents = False Then
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End If
End With
End Sub

si tu veux appliquer la methode a toutes les feuilles, il te faut enlever la condition If .Name = "feuil1" Then

A+
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
67
Oui, c'est vrai qu'on peut attendre qu'il se passe quelque chose sur la feuille (SelectionChange) pour déclencher le test.
Bonne idée.
Messages postés
6
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
22 juillet 2009

OK mais maintenant comment je lui dis si classeur protegé appeler macro "toto" si pas protegé appeler macro "titi"?

djé31
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
re,

c'est quoi l'objectif final si ce n'est pas pour remettre en place la protection ?
Messages postés
6
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
22 juillet 2009

J'ai un fichier excel, en mode utilisateur (feuille protéger) la validation des données (liste Déroulant) est non active macro:
Sub toto()

Range("A1").Select
With Selection.Validation
.InCellDropdown = False
End With
End Sub



je souhaite en mode admin lorsque je ôte la protection que la validation des données soit réactivée.
Sub titi()
Range("A1").Select
With Selection.Validation
.InCellDropdown = True
End With
End Sub


Le problème c'est que excel ne capte pas le fait que j'enlève la protection afin de lancer la macro "titi" pour remettre la validation des données.

J'espère que je suis compréhensible.



djé31
Messages postés
6
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
22 juillet 2009

C'est bon Merci bcp.

djé31