Autoriser Macro à écrire dans une feuille protégée par mot de passe

adadck

XLDnaute Nouveau
Bonjour à tous,

J'ai trouvé le code suivant sur le forum (suivi des modifications dans un fichier):
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  If Sh.Name <> "Espion" Then
    Application.EnableEvents = False
    temp = Application.CountA(Sheets("espion").Range("a:a")) + 1
    Sheets("espion").Cells(temp, 1) = Sh.Name
    Sheets("espion").Cells(temp, 2) = Target.Address
    Sheets("espion").Cells(temp, 3) = Now
    Sheets("espion").Cells(temp, 4) = [mémo]
    Sheets("espion").Cells(temp, 5) = Target
    Sheets("espion").Cells(temp, 6) = Environ("username")
    Application.EnableEvents = True
 End If
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  If Target.Count = 1 Then
    ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr(34) & Target.Value & Chr(34)
  End If
End Sub

Ca fonctionne bien car ça enregistre dans la feuille "espion" toutes les modifs.
J'aimerai cependant vérrouiller cette feuille par mot de passe pour ne pas qu'un utilisateur puisse la modifier manuellement.

Si je verrouille la feuille, la macro ne peut plus écrire dans la feuille.
Une solution ?
 

Pièces jointes

  • Planning_réparation_matérielv5.xls
    142 KB · Affichages: 79
Dernière édition:

Hippolite

XLDnaute Accro
Re : Autoriser Macro à écrire dans une feuille protégée par mot de passe

Bonjour,
Il faut protéger la feuille en utilisant "userinterfaceonly" dans le code, la feuille ne sera pas verrouillée pour les macros.
à placer dans le module "thisworkbook" :
Code:
Option Explicit
Private Sub Workbook_Open()
sheets("espion").Protect "MotDePasse", userinterfaceonly:=True
End Sub
A+
 

Efgé

XLDnaute Barbatruc
Re : Autoriser Macro à écrire dans une feuille protégée par mot de passe

Re bonjour adadckn Bonjour Hippolite,
On pourrait cacher totalement la feuille et l'utiliser à la demande.
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.ScreenUpdating = 0
    If Sh.Name <> "Espion" Then
        With Sheets("espion")
            .Visible = 1
            temp = Application.CountA(Sheets("espion").Range("a:a")) + 1
            .Cells(temp, 1) = Sh.Name
            .Cells(temp, 2) = Target.Address
            .Cells(temp, 3) = Now
            .Cells(temp, 4) = [mémo]
            .Cells(temp, 5) = Target
            .Cells(temp, 6) = Environ("username")
            .Visible = xlVeryHidden
        End With
    End If
Application.ScreenUpdating = 1
End Sub
Cordialement
 
Dernière édition:

adadck

XLDnaute Nouveau
Re : Autoriser Macro à écrire dans une feuille protégée par mot de passe

Bonjour,
Il faut protéger la feuille en utilisant "userinterfaceonly" dans le code, la feuille ne sera pas verrouillée pour les macros.
à placer dans le module "thisworkbook" :
Code:
Option Explicit
Private Sub Workbook_Open()
sheets("espion").Protect "MotDePasse", userinterfaceonly:=True
End Sub
A+

Bonjour Hippolite et merci de ta réponse, je ne sais pas où intégrer ton code dans celui que j'ai dans "this workbook" ... :confused:



Re bonjour adadckn Bonjour Hippolite,
On pourrait cacher totalement la feuille et l'utiliser à la demande.
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.ScreenUpdating = 0
    If Sh.Name <> "Espion" Then
        With Sheets("espion")
            .Visible = 1
            temp = Application.CountA(Sheets("espion").Range("a:a")) + 1
            .Cells(temp, 1) = Sh.Name
            .Cells(temp, 2) = Target.Address
            .Cells(temp, 3) = Now
            .Cells(temp, 4) = [mémo]
            .Cells(temp, 5) = Target
            .Cells(temp, 6) = Environ("username")
            .Visible = xlVeryHidden
        End With
    End If
Application.ScreenUpdating = 1
End Sub
Cordialement

Bonjour Efgé et merci, ça a l'air de fonctionner mais :
Je n 'arrive pas à affichier la feuille espion qui est cachée par un mot de passe d'après ta macro
La macro fait "mouliner" le fichier quand on écrit dans une cellulle !
 

Pierrot93

XLDnaute Barbatruc
Re : Autoriser Macro à écrire dans une feuille protégée par mot de passe

Bonjour,

modifie ainsi :
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.ScreenUpdating = 0
Application.EnableEvents = False

    If Sh.Name <> "Espion" Then
        With Sheets("espion")
            .Visible = 1
            temp = Application.CountA(Sheets("espion").Range("a:a")) + 1
            .Cells(temp, 1) = Sh.Name
            .Cells(temp, 2) = Target.Address
            .Cells(temp, 3) = Now
            .Cells(temp, 4) = [mémo]
            .Cells(temp, 5) = Target
            .Cells(temp, 6) = Environ("username")
            .Visible = xlVeryHidden
        End With
    End If
Application.EnableEvents = True
Application.ScreenUpdating = 1
End Sub

bonne journée
@+
 

Hippolite

XLDnaute Accro
Re : Autoriser Macro à écrire dans une feuille protégée par mot de passe

Bonjour à tous,
Bonjour Hippolite et merci de ta réponse, je ne sais pas où intégrer ton code dans celui que j'ai dans "this workbook" ...
Option explicit se met en tête, mais tu peux ne pas le mettre
Les trois lignes de code peuvent se mettre avant ou après ta macro.
A+
 

Efgé

XLDnaute Barbatruc
Re : Autoriser Macro à écrire dans une feuille protégée par mot de passe

Bonjour adadck, Hippolite, Bonjour Pierrot,
Je n 'arrive pas à affichier la feuille espion qui est cachée par un mot de passe d'après ta macro
En fait la feuille n'est pas protégée, elle est complémtement masquée. On ne peux la faire réaparaitre que par macro ;
VB:
Sub Affiche()
Sheets("espion").Visible = 1
End Sub
Tu peux la mettre dans un module et la lancer par Alt + F8 quand tu as besoin de consulter la feuille.

Par contre il est évident que d'enregistrer toutes les modifications effectuées va sérieusement alourdir l'utilisation du classeur. D'autre part, Excel 2003 ne contient "que" 65536 lignes. Est ce que cela sera suffisant si tu ne purge jamais ton espion ?
Au pire, le plantage est assuré à l'écriture de la 65537em.

Cordialement
 

adadck

XLDnaute Nouveau
Re : Autoriser Macro à écrire dans une feuille protégée par mot de passe

Bonjour tout le monde,

Je suis un peu perdu avec les diverses propositions !

Actuellement j'ai les 2 sub suivantes :
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  If Sh.Name <> "Espion" Then
    Application.EnableEvents = False
    temp = Application.CountA(Sheets("espion").Range("a:a")) + 1
    Sheets("espion").Cells(temp, 1) = Sh.Name
    Sheets("espion").Cells(temp, 2) = Target.Address
    Sheets("espion").Cells(temp, 3) = Now
    Sheets("espion").Cells(temp, 4) = [mémo]
    Sheets("espion").Cells(temp, 5) = Target
    Sheets("espion").Cells(temp, 6) = Environ("username")
    Application.EnableEvents = True
 End If
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  If Target.Count = 1 Then
    ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr(34) & Target.Value & Chr(34)
  End If
End Sub

Que j'ai collée dans "ThisWorkBook", ça marche même si je ne comprends pas tout, en particulier la 2éme sub.


Toutes les infos sont suivies dans la feuille "Espion", ça ne "flash pas" (contrairement à ta proposition Efgé, je ne sais pas si c'est le fait d'écrire dans une feuille masquée), ça va en effet alourdir le fichier mais je purgerai si besoin !

J'aimerai faire 2 choses :
- Ne pas suivre dans cette feuille Espion les modifications de la feuille "Synthèse", pour résumer "espioner" toutes les feuilles sauf synthèse !
- Masquer la feuille espion avec un xlSheetVisible/xlSheetHidden. un bouton me permettrai d'afficher cette feuille avec un controle par mot de passe.
 

Pièces jointes

  • Planning réparation matériel.zip
    70.4 KB · Affichages: 54

adadck

XLDnaute Nouveau
Re : Autoriser Macro à écrire dans une feuille protégée par mot de passe

Bonjour tout le monde,

J'aimerai faire 2 choses :
- Ne pas suivre dans cette feuille Espion les modifications de la feuille "Synthèse", pour résumer "espioner" toutes les feuilles sauf synthèse !
- Masquer la feuille espion avec un xlSheetVisible/xlSheetHidden. un bouton me permettrai d'afficher cette feuille avec un controle par mot de passe.

J'ai résolu le deuxième point (masquer onglet par mdp).

Il me reste à résoudre le point 1 :
- Ne pas suivre dans cette feuille Espion les modifications de la feuille "Synthèse", pour résumer "espioner" toutes les feuilles sauf synthèse.
 

Discussions similaires

Statistiques des forums

Discussions
312 379
Messages
2 087 761
Membres
103 661
dernier inscrit
fcleves