VBA : Autoriser modifications à l'ouverture

Résolu/Fermé
BretonBeurre Messages postés 12 Date d'inscription vendredi 12 octobre 2018 Statut Membre Dernière intervention 22 octobre 2018 - Modifié le 12 oct. 2018 à 15:00
fabien25000 Messages postés 673 Date d'inscription mercredi 5 octobre 2016 Statut Membre Dernière intervention 28 juillet 2022 - 12 oct. 2018 à 17:31
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 vendredi 12 octobre 2018 Statut Membre Dernière intervention 22 octobre 2018 1
12 oct. 2018 à 17:29
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 mercredi 5 octobre 2016 Statut Membre Dernière intervention 28 juillet 2022 59
12 oct. 2018 à 15:53
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 vendredi 12 octobre 2018 Statut Membre Dernière intervention 22 octobre 2018 1
12 oct. 2018 à 16:13
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 vendredi 12 octobre 2018 Statut Membre Dernière intervention 22 octobre 2018 1
12 oct. 2018 à 16:16
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 mercredi 5 octobre 2016 Statut Membre Dernière intervention 28 juillet 2022 59
12 oct. 2018 à 16:40
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 vendredi 12 octobre 2018 Statut Membre Dernière intervention 22 octobre 2018 1
12 oct. 2018 à 16:51
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 mercredi 5 octobre 2016 Statut Membre Dernière intervention 28 juillet 2022 59
12 oct. 2018 à 17:08
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