Résolu Office 365 mise a jour automatique fichier excel protègé

cmdavid

XLDnaute Junior
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
 
Ce fil a été résolu! Aller à la solution…

Fichiers joints

ShuarS

XLDnaute Junior
Supporter XLD
Salut,

Ajoute ce code à tes macros :
VB:
With ActiveSheet 'CodeName
    .Unprotect "1" 'mot de passe à adapter
   
    ### TON CODE ###
   
    .Protect "1"
End With
Shu
 

cmdavid

XLDnaute Junior
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
 

eriiiic

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 Junior
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
 

eriiiic

XLDnaute Barbatruc
Bonjour,
si toutes tes feuilles concernéess sont protégées comme indiqué, les macros n'ont pas besoin de mot passe.
eric
 

eriiiic

XLDnaute Barbatruc
Concrètement ça donne ce que je t'ai mis au post #7.
Ensuite tes autres macros qui écrivent sur ces feuilles n'ont plus à se préoccuper de la protection, comme expliqué au post #7.
eric
 

cmdavid

XLDnaute Junior
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!
 

eriiiic

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
 

eriiiic

XLDnaute Barbatruc
Syntaxe
expression. Open(Filename, UpdateLinks, ReadOnly, format, Password, WriteResPassword, IgnoreReadOnlyRecommended, origin, __ Delimiter, editable, _Notify _, Convertisseur, AddToMru, local, CorruptLoad)
 

cmdavid

XLDnaute Junior
je suis un débutant en macro et je ne comprend pas se que je dois faire avec ta syntaxe. Merci de me communiquer une macro que je puisse utiliser.
 

eriiiic

XLDnaute Barbatruc
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
 
Ce message a été identifié comme étant une solution!

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas