Microsoft 365 mise a jour automatique fichier excel protègé

cmdavid

XLDnaute Occasionnel
Bonjour à tous,
je souhaiterai savoir comment mettre a jour des fichiers excel protégés.
j'ai 3 fichier :
COM (protégé)
BASE (protégé)
DG (sans protection)
mot de passe = 1
si je change la date du fichier DG, il me demande le mot de passe de BASE! alors que je cherche a mettre a jour les données et en meme temps que les fichiers COM et BASE soit protégés.
Merci par avance
 

Pièces jointes

  • com.xlsm
    14.5 KB · Affichages: 2
  • MMG Raport TBS - BASE.xlsm
    511.5 KB · Affichages: 2
  • MMG Raport TBS - DG.xlsm
    693.3 KB · Affichages: 2
Solution
Tente avec :
VB:
Workbooks.Open(Filename:=ThisWorkbook.Path & "\a-mmg\MMG Raport TBS - BASE.xlsm", Password:="1").Close True
Je ne peux pas vraiment tester car chez moi le fichier protégé s'ouvre même sans mot de passe (?!?)
eric

cmdavid

XLDnaute Occasionnel
bonjour,
lorsque j'utilise la macro ci-dessous, j'ai un message "erreur de compilation, instruction incorrecte à l'exterieur d'une procedure",

Option Explicit
With ActiveSheet
.Unprotect "1"
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [AT3,AT4:AW4]) Is Nothing Then Exit Sub
Dim etat As Boolean
With Application
.ScreenUpdating = False
.DisplayAlerts = False
etat = .AskToUpdateLinks
.AskToUpdateLinks = False
Workbooks.Open(ThisWorkbook.Path & "\a-mmg\MMG Raport TBS - BASE.xlsm").Close True
.AskToUpdateLinks = etat
End With
ThisWorkbook.Save
End Sub
.Protect "1"
End With
 

James007

XLDnaute Barbatruc
Bonjour,

Tu peux tester

VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [AT3,AT4:AW4]) Is Nothing Then Exit Sub
Dim etat As Boolean
    
    ActiveSheet.Unprotect "1"
        
        With Application
            .ScreenUpdating = False
            .DisplayAlerts = False
            etat = .AskToUpdateLinks
            .AskToUpdateLinks = False
        Workbooks.Open(ThisWorkbook.Path & "\a-mmg\MMG Raport TBS - BASE.xlsm").Close True
            .AskToUpdateLinks = etat
        End With
        
    ActiveSheet.Protect "1"
        
ThisWorkbook.Save

End Sub
 

eriiic

XLDnaute Barbatruc
Bonjour,

autre façon, protéger les feuilles uniquement pour l'utilisateur, pas les macros :
VB:
Private Sub Workbook_Open()
    Dim sh As Worksheet
    For Each sh In Worksheets
        sh.Protect "1", UserInterfaceOnly:=True
    Next sh
End Sub
à mettre dans le module ThisWorkbook des classeurs protégés.
Enregistrer, fermer et ouvrir au moins une fois pour appliquer la protection.
Ensuite les macros pourront travailler dessus sans déprotéger les feuilles.
Bonus : si tu oublies de remettre la protection, elle sera remise automatiquement à l'ouverture
eric
 

cmdavid

XLDnaute Occasionnel
Bonjour,
j'ai utilisé la macro ci-dessous, mais lorsque je change la date, il me demande le mot de passe!
l'idée est de faire fonctionner le fichier ou se trouve la macro lorsque le fichier "MMG Raport TBS - BASE.xlsm" est protégé a l'ouverture et fermé.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [AT3,AT4:AW4]) Is Nothing Then Exit Sub
Dim etat As Boolean

ActiveSheet.Unprotect "1"

With Application
.ScreenUpdating = False
.DisplayAlerts = False
etat = .AskToUpdateLinks
.AskToUpdateLinks = False
Workbooks.Open(ThisWorkbook.Path & "\a-mmg\MMG Raport TBS - BASE.xlsm").Close True
.AskToUpdateLinks = etat
End With

ActiveSheet.Protect "1"

ThisWorkbook.Save

End Sub
 

cmdavid

XLDnaute Occasionnel
donc
macro ci-dessous dans thisworbook :
Private Sub Workbook_Open()
Dim sh As Worksheet
For Each sh In Worksheets
sh.Protect "1", UserInterfaceOnly:=True
Next sh
End Sub

et macro ci-dessous dans feuil4RDGV :
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [AT3,AT4:AW4]) Is Nothing Then Exit Sub
Dim etat As Boolean
With Application
.ScreenUpdating = False
.DisplayAlerts = False
etat = .AskToUpdateLinks
.AskToUpdateLinks = False
Workbooks.Open(ThisWorkbook.Path & "\a-mmg\MMG Raport TBS - BASE.xlsm").Close True
.AskToUpdateLinks = etat
End With
ThisWorkbook.Save
End Sub

dans ce cas il me demande toujours le mot de passe lorsque je change de date!
 

eriiic

XLDnaute Barbatruc
A y regarder de plus près, tu n'écris pas sur une feuille, tu forces une à jour des liens.
Ceci explique sans doute cela.
On parle bien de protection de feuilles et non du classeur hein ?
Parce que c'est bizarre que même avec la version qui déprotège la feuille ça ne passe pas.
eric
 

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla