XL 2013 macro ouverture en lecture seule

Bnj

XLDnaute Occasionnel
bonjour,

je souhaiterais que mon classeur excel s'ouvre en lecture seule automatiquement et systématiquement via une macro.
En effet, je le souhaite via macro car une commande via un bouton permettra :
- d'enlever la lecture seule (via la commande ThisWorkBook.ChangeFileAccess xlReadWrite)
- actualiser les données (ActiveWorkbook.RefreshAll)
- enregistrer le fichier (ActiveWorkbook.Save)
- remettre la lecture seule (via la commande ThisWorkBook.ChangeFileAccess xlReadWrite)

pour macro à l'ouverture, j'ai codé ceci :
Private Sub Workbook_Open()
ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
Worksheets("note mutation").Activate
ActiveWindow.View = xlPageBreakPreview
ActiveWorkbook.SlicerCaches("Segment_Division_bureau").ClearManualFilter
ActiveWorkbook.SlicerCaches("Segment_Bureau_service").ClearManualFilter
ActiveWorkbook.SlicerCaches("Segment_gestion").ClearManualFilter
End Sub

Cependant, rien ne se passe , le fichier ne s'ouvre pas en lecture seule.

complément d'info, je ne souhaite pas que l'utilisateur voit une texte box à l'ouverture lui parlant de lecture seule par exemple. c'est pour cela que je ne coche pas l'option lecture seule recommandée

MErci de votre aide
 

Bougla972

XLDnaute Occasionnel
Bonjour Bnj,

A insérer et adapter dans le ThisWorkBook.Open:

VB:
Dim MonFichier As String

Application.ScreenUpdating = False

MonFichier = ThisWorkbook.Path 'à adapter
'Ouverture du fichier en Lecture Seule
.Workbooks.Open filename:=MonFichier, ReadOnly:=True

Application.ScreenUpdating = True
 

Bougla972

XLDnaute Occasionnel
Bnj,

Dans le VBE aller dans le
upload_2017-3-17_13-13-57.png
et mettre le bout de code dans l’évènement
upload_2017-3-17_13-14-45.png
.
 

Bnj

XLDnaute Occasionnel
rien ne se passe à l'ouverture du fichier et je ne suis pas en lecture seule
et lorsque je clique sur mon bouton a qui j'ai attribué cette commande en VBA
Sub Macro9()
'
' Macro9 Macro
'

ThisWorkbook.ChangeFileAccess xlReadWrite
Range("G22:I29").Select
Selection.ClearContents
Range("B22:B29").Select
Selection.ClearContents
Range("E13:I13").Select
Selection.ClearContents
Range("H11").Select
Selection.ClearContents
Range("E8:I8").Select
Selection.ClearContents
Range("E5:I5").Select
Selection.ClearContents
ActiveWorkbook.SlicerCaches("Segment_Division_bureau").ClearManualFilter
ActiveWorkbook.SlicerCaches("Segment_Bureau_service").ClearManualFilter
ActiveWorkbook.SlicerCaches("Segment_gestion").ClearManualFilter
ActiveWorkbook.RefreshAll
Range("O3") = Date
ThisWorkbook.ChangeFileAccess xlReadWrite
ActiveWorkbook.Save
End Sub
cela me cause l'erreur suivante :
upload_2017-3-17_13-48-18.png
 

Bougla972

XLDnaute Occasionnel
Insère le code que je t'es fournit dans l'évènement 'Open' de Workbook
upload_2017-3-17_13-57-14.png

VB:
Dim MonFichier As String

Application.ScreenUpdating = False

MonFichier = ThisWorkbook.Path 'à adapter
'Ouverture du fichier en Lecture Seule
Application.Workbooks.Open filename:=MonFichier, ReadOnly:=True

Application.ScreenUpdating = True
 

Bnj

XLDnaute Occasionnel
merci beaucoup
adaptée sur mon fichier, cette macro mais une fenêtre me demande si je veux réouvrir le fichier à nouveau. J'ai contourné avec Application.DisplayAlerts = False

concernant mon bouton de commande qui sert à :
-enlever la lecture seule
-actualiser les données
-enregistrer
-remettre la lecture seule

cela beugue au moment de la remise en lecture seule (je l'ai marqué en rouge ci-dessous)

voici mon code de bouton :
Sub Macro9()
'
' Macro9 Macro
'

ThisWorkbook.ChangeFileAccess xlReadWrite
Range("G22:I29").Select
Selection.ClearContents
Range("B22:B29").Select
Selection.ClearContents
Range("E13:I13").Select
Selection.ClearContents
Range("H11").Select
Selection.ClearContents
Range("E8:I8").Select
Selection.ClearContents
Range("E5:I5").Select
Selection.ClearContents
ActiveWorkbook.SlicerCaches("Segment_Division_bureau").ClearManualFilter
ActiveWorkbook.SlicerCaches("Segment_Bureau").ClearManualFilter
ActiveWorkbook.SlicerCaches("Segment_Section1").ClearManualFilter
Range("O3") = Date
ThisWorkbook.ChangeFileAccess xlReadWrite
ActiveWorkbook.Save
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 161
Membres
103 148
dernier inscrit
lulu56