Ouverture en lecture seule dans Workbook_Open

Preparation

XLDnaute Nouveau
Bonjour,

Merci d'avance à ceux qui se pencheront sur mon problème, cela peut paraître simple mais je bloque.

J'ai un fichier, qui est utilisé par plusieurs utilisateurs, et qui doit être impérativement ouvert en lecture seule.

J'ai essayé de mettre ce bout de code dans le Workbook_Open de ThisWorkbook :
Application.Workbooks.Open Filename:="zzzzzzzz.xlsm", ReadOnly:=True
Mais le reste du code qui est derrière cette ligne ne s'exécute pas (j'ai plusieurs lignes de mise à jour de base de données et un affichage de userform qui ne se font pas)
Question : Comment faire pour que le code ne s'arrête pas?


J'ai essayé également de mettre la propriété ReadOnlyRecommended à True, mais la le souci c'est que l'utilisateur a la possibilité de l'ouvrir normalement en répondant non au message d'ouverture.
Question : Est-il possible de supprimer ce message à l'ouverture et obliger la réponse oui?
 

camarchepas

XLDnaute Barbatruc
Re : Ouverture en lecture seule dans Workbook_Open

Bonjour ,

Je vois que l'extension du fichier est xlsm, y'a-t-il une macro sur l'ouverture classeur ?

Dans ce cas , il faudrait désactiver les événementiels au moins le temps de l'ouverture .
 

NezQuiCoule

XLDnaute Occasionnel
Re : Ouverture en lecture seule dans Workbook_Open

Bonjour Preparation, camarchepas,

Preparation à dit:
J'ai essayé également de mettre la propriété ReadOnlyRecommended à True, mais la le souci c'est que l'utilisateur a la possibilité de l'ouvrir normalement en répondant non au message d'ouverture.
Question : Est-il possible de supprimer ce message à l'ouverture et obliger la réponse oui?

Je n'ai pas essayé, mais quelle est la valeur de la réponse qui s'affiche par défaut ? Car si c'est oui, peut être qu'en utilisant la propriété Application.DisplayAlerts = False ce problème serait réglé.
 

Preparation

XLDnaute Nouveau
Re : Ouverture en lecture seule dans Workbook_Open

Bonjour NezQuiCoule , Bonjour camarchepas ,

Merci de vos réponses,

Je pense que vos 2 réponses sont les mêmes : mettre un Application.DisplayAlerts = False

J'ai essayé mais cela ne marche pas. Je l'ai mis au début de la procédure ThisWorkbook / Workbook_Open et un True à la fin, mais cela ne marche pas, le message doit s'afficher avant l'évènement Open.

Je ne peux pas le mettre dans un module à part car il me faut quand même les évènements pour le reste de ma macro!

Merci tout de même.

D'autres idées??
 

NezQuiCoule

XLDnaute Occasionnel
Re : Ouverture en lecture seule dans Workbook_Open

Hmm sinon autre possibilité sans passer par du code, faire clic droit sur le fichier, propriétés, et dans Général cocher la case "Lecture seule" tout en bas à gauche. Après je ne sais pas si ça peut coller au projet.
 

Preparation

XLDnaute Nouveau
Re : Ouverture en lecture seule dans Workbook_Open

Re,

Merci, je n'y avais même pas pensé.. je vais utiliser cette méthode pour le moment car mon fichier est déjà en service, ce qui me gêne c'est que ce n'est pas du tout protégé.
Ma macro étant verrouillée par mot de passe, j'aurai préféré bloqué ça dedans.

Si quelqu'un a une autre idée, merci d'avance.
 

camarchepas

XLDnaute Barbatruc
Re : Ouverture en lecture seule dans Workbook_Open

Re ,

As -tu oui ou non une macro dans l'open ou l'activate du classeur que tu ouvres ?

Tu n'as à priori pas compris l'importance de cette question.

car pour desactiver le temps de l'ouverture c'est un Application.enableevents = false qu'il faut faire avant d'ouvrir le fichier à exploiter.

puis bien sur le remettre ensuite à true , pour revalider les événements, car sinon Excel devient trés triste
 

Preparation

XLDnaute Nouveau
Re : Ouverture en lecture seule dans Workbook_Open

Ah OK en effet j'avais pas compris cela comme ça.

Oui à l'ouverture dans l'open du ThisWorkbook j'ai une macro (supprimer les filtres potentiels, une mise à jour de la base de données par rapport à un autre fichier, puis tri etc...)

Je comprend donc qu'il faille un Application.enableevents = false puis un true.

Peux-tu me dire où il faut que je les place STP?
 

camarchepas

XLDnaute Barbatruc
Re : Ouverture en lecture seule dans Workbook_Open

Bien ,
donc sans plus de code que ce que tu donnes pas simple , mais le principe serait comme ceci ,

mais tout dépend de ce que tu fais et des macros qu'il y à dans l'autre classeur l'idéal serait :

Application.EnableEvents = False
Workbooks.Open Filename:="zzzzzzzz.xlsm", ReadOnly:=True

'Opérations à effectuer

'fin d'opérations

Workbooks("zzzzzzzz.xlsm").close false
Application.EnableEvents = True
 

Preparation

XLDnaute Nouveau
Re : Ouverture en lecture seule dans Workbook_Open

Bonjour camarchepas, le forum,

Merci de te pencher sur mon problème.

Lorsque je met ton code ça me fait la même chose qu'avec un DisplayAlerts = false : le code s'arrête à la ligne
Workbooks.Open Filename:="zzzzzzzz.xlsm", ReadOnly:=True
et n'effectue pas les mises à jour suivantes.

Peut être que cette ligne n'est pas utile car elle est dans le ThisWorkbook dans l'évènement Open de ce même fichier?

Mais alors comment bloquer le mode lecture seule dans la macro?

Pour plus d'infos:
Dans le dossier commun à plusieurs personnes, les utilisateurs cliquent sur le fichier zzzzzzzz.xlsm
lors de son ouverture j'ai mis dans l'évènement Open de nombreuses mises à jour puis l'ouverture d'un Userform, et je voudrais forcer l'utilisation en lecture seule sans que le code de mise à jour s'arrête.
Voilà le code de l'évènement Open:

Private Sub Workbook_Open()

Application.EnableEvents = False
'Application.Workbooks.Open Filename:="zzzzzzzz.xlsm", ReadOnly:=True (c'est après cette ligne que le code ne continue pas, je re-ouvre ce même fichier pour lui forcer lecture seule)
Call Synchro
Call Import (Synchro, Import et BDD sont des modules de mise à jour, et wwwwww un fichier de base de données d'un autre utilisateur "privé")
Workbooks.Open Filename:="wwwwwww.xlsm", UpdateLinks:=3, ReadOnly:=True
Call BDD
ActiveSheet.Unprotect Password:=MotDePasse
Sheets("pepepepepe").Cells(2, 2).Value = Date
ActiveSheet.Protect Password:=MotDePasse, DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True
Sheets("lalalalala").Activate
Application.EnableEvents = True

MonUserform.Show

End Sub

Je pense que la solution ReadOnlyRecommended dans la fenêtre propriété de ThisWorkbook serait une bonne solution, mais elle laisse le choix à l'utilisateur de répondre non.

Merci d'avance.
 

camarchepas

XLDnaute Barbatruc
Re : Ouverture en lecture seule dans Workbook_Open

Re ,
en fait tu veux ouvrir un fichier en lecture seule un fichier qui lui est déjà ouvert en mode modification .

cela change pas mal la donne , pas sûr que cela fonctionne ,

sur des opérations comme cela , je procéde d'une autre façon :

je réalise un filecopy du fichier , et ensuite je travail sur la copie ,

peut être cela pourrait convenir ?
 

Preparation

XLDnaute Nouveau
Re : Ouverture en lecture seule dans Workbook_Open

Merci pour votre aide,

Oui j'ai déjà une copie de sauvegarde au cas où mais j'aimerai vraiment réussir à mettre ce fichier en lecture seule.

Sinon il faudrait que je fasse mes mises à jour dans un autre module que l'évènement Open mais je ne vois pas où pour être sûr qu'ils s'exécutent à chaque démarrage.

Si quelqu'un à déjà eu le problème et connait la parade merci d'avance.
 

Discussions similaires

Statistiques des forums

Discussions
312 361
Messages
2 087 613
Membres
103 607
dernier inscrit
lolo1970