VBA : Autoriser modifications à l'ouverture

Résolu
BretonBeurre Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
fabien25000 Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Je souhaite ouvrir un fichier protégé par un mot de passe grâce à une macro en VBA. Qui plus est, j'avais aussi activé la fenêtre demandant confirmation à l'utilisateur s'il souhaite bien apporter des modifications au fichier :

"L'auteur souhaite que vous ouvriez "FileName" en lecture seule, à moins que vous ne deviez y apporter des modifications. Voulez-vous l'ouvrir en lecture seule ?"

J'ai donc écrit le code suivant pour ouvrir le fichier avec le mot de passe, mais je reste bloqué au message pour la lecture seule. Comment puis-je indiquer dans mon code que non, je ne souhaite pas ouvrir le fichier en lecture seule, pour pouvoir y apporter des modifications (copy/paste des données) ?

Code:
Sub ouvrirFichier()
Workbooks.Open Filename:="MonFichier", WriteResPassword:="Password"
End Sub

J'ai essayé avec "Application.DisplayAlerts = False" mais cela n'a pas fonctionné, le fichier est bien ouvert mais en lecture seule. D'autres idées ?

Merci à vous.


2 réponses

BretonBeurre Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci à fabien25000 d'avoir trouvé la solution, voici le code à utiliser lors de l'ouverture du fichier :
Set wkb = Workbooks.Open(Filename:=sFileName, UpdateLinks:=False, ReadOnly:=True, WriteResPassword:="Password", IgnoreReadOnlyRecommended:=True)

Merci encore à lui !
1
fabien25000 Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   59
 
Bonjour,
je n'ai pas le temps de tester mais peut être en partant sur une msgbox qui demande si besoin de modif ou pas si oui readonly:=true si non false
0
BretonBeurre Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1
 
Le truc c'est qu'il faut toujours pouvoir ouvrir le fichier manuellement, avec le choix de l'ouvrir en Lecture seule ou non.
Donc j'ai essayé de faire une msgbox à son ouverture, mais on ne peut pas modifier les attributs d'un fichier ouvert. Alors j'ai dû taper un code qui, en fonction de la réponse de l'utilisateur, ferme le fichier, puis le rouvre en changeant l'attribut de celui-ci. Sauf qu'au moment de le ré-ouvrir il me redemande si je veux la Lecture Seule ou non… Même avec "Application.DisplayAlerts = False".... Dommage ;)
0
BretonBeurre Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1
 
A moins que je ne me sois trompé dans mon code, peut-être qu'il y a un autre moyen que ce que j'ai fait pour que ça fonctionne, mais à première vue ça ne fonctionne pas...
0
fabien25000 Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   59
 
oui c'est pas faux...
et si tu code sur
Workbook_BeforeSave
avec un if et en condition ton
environ("username")
et si c'est pas toi
thisworkbook.close (false)
du coup t'as plus besoin de la lecture seule ?
0
BretonBeurre Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1
 
Par le code VBA, il faut que je puisse modifier et enregistrer "MonFichier.xlsx". Mais manuellement, il faut que je dise à l'ouverture si je veux être en lecture seule ou non. Donc je n'ai pas compris exactement ce que tu voulais faire, mais à la fin dans mon code je devrai finir par lui dire d'enregistrer les modifs. Merci quand même pour les idées ! ;)
0
fabien25000 Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   59
 
J'ai trouvé ce code :
Set wkb = Workbooks.Open(Filename:=sFileName, UpdateLinks:=False, ReadOnly:=True, IgnoreReadOnlyRecommended:=True)

à voir si ça peut t'aider en cruesant dans ce sens...
0