Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] Word 2013 et mode protégé à désactiver

30 réponses
Avatar
HD
Bonjour,

J'ai une macro VBA qui modifie le texte d'un document word. Ce document
word est en lecture seule afin d'être ainsi certain que l'utilisateur
fera un enregistré sous pour préserver le document original.

Mon souci est que depuis Word 2010 le document en lecture seule passe en
mode protégé dès l'ouverture et il n'est alors possible de le déprotéger
que si l'utilisateur désactive le mode protégé...

Je voudrais pouvoir garder le document original en lecture seule tout en
mettant le document en mode "normal" (et non protégé) dès son ouverture.

Est il possible de le faire et si oui comment ?

Cordialement,

HD

10 réponses

1 2 3
Avatar
Geo
Bonjour
Auriez vous une astuce pour permettre au lien symbolique de fonctionner sur
un réseau local ?

J'avoue mon incompétence.
Désolé.
Avatar
les renardeaux
Bonjour,
Le message du mercredi 29/06/2016 (cf.
), Geo dixit, stipule notammant :
Par contre, à partir de Word, Fichier/Ouvrir ouvre bien le modèle
:-( (ça n'était pas le cas avant, mais je ne sais pas avant quelle
version)

Pas vérifié l'origine, mais je suppose que ça correspond à une
demande des utilisateurs, pour pouvoir ouvrir directement un modèle
sans avoir à trop chercher, comme tout document.
Sachant que pour faire un nouveau document basé sur un modèle se fait
par Fichier / Nouveau.

S'lut, j'me faufile en douce... Je comprends pas bien le sujet.
à partir de Word, Fichier/Ouvrir


a bien toujours ouvert le fichier quel qu'il soit, non ?
--
... Michel
les petits renardeaux dans la clairière du CTV
Avatar
HB
Bonsoir,
Auriez vous une astuce pour permettre au lien symbolique de
fonctionner sur un réseau local ?

il me semble qu'il faudrait se recentrer sur le problème d'origine qui,
si je ne m'abuse, concernait un fichier mis à dispo sur un serveur qui
doit pouvoir être ouvert sans être modifiable.
Le fait qu'il s'agisse d'un fichier word ouvert pas une macro dans Excel
est à mon sens assez secondaire.
Comme je l'ai déjà précisé, une simple gestion des autorisations de
sécurité permet exactement d'obtenir l'effet recherché.
Les complications envisagées me semblent totalement surréalistes
( macros dédiée, lien symbolique , ...)
Par ailleurs, pour t'aider efficacement,
il faudrait connaitre quelques détails concrets
- Type de serveur (Windows, linux, Novell, autre ... quel OS exactement)
- Type de réseau ( AD ; domaine ...)
("réseau local" est on ne peut plus vague)
- Type de chemin est utilisé .
(Lecteur mappé, chemin UNC)
Peut-être sera-t-il possible ensuite
de te guider si nécessaire.
Cordialement,
HB
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
Geo
Bonjour
à partir de Word, Fichier/Ouvrir


a bien toujours ouvert le fichier quel qu'il soit, non ?

Maintenant : oui.
Dans d'anciennes versions quand on faisait cette opération sur un nom
de fichier modèle, cela revenait à ouvrir un nouveau fichier basé sur
ce modèle.
Pour ouvrir le modèle lui-même il fallait une manip particulière.
Ce sont deux logiques qui se défendent.
Avatar
HD
J'ai l'impression qu'il y a une petite erreur d'interprétation... Le
fait de mettre un doc en lecture seule ne verrouille pas l'exécution
des macros !!!

Nous sommes d'accord.
Par contre, si le document n'est pas sur un "Emplacement approuvé" là,
effectivement, ça empêche l’exécution des macros.

Le document est dans les emplacements approuvés.
Mon souci vient plus du fait que ma macro au démarrage ne peut pas
change le texte du document si il est ouvert avec Word 2013 ou 2016 vu
que le document s'ouvre en non modifiable. Il faudrait alors ouvrir le
document, le passer en modifiable puis exécuter la macro du démarrage...
ce qui pour certains utilisateurs représente une prouesse (j'ai eu des
réponses du style: "je ne suis pas informaticien moi !!!" ;-) ).
Sur toutes les anciennes versions de Word (antérieures à 2013) le fait
d'ouvrir un document en lecture seule n'empêche nullement de le modifier
directement. Il suffit alors de l'enregistrer sous un autre répertoire.
à moins qu'il soit possible de le faire
en VBA ?

ATTENTION : le VBA est fait pour faire ce que Word ne sait pas faire
et/ou pour automatiser certaines actions, mais ne rentrez pas dedans
avant d'avoir vérifier si Word ne fait pas ce que vous avez besoin
nativement (exemple les modèles)

J'utilise fréquemment le VBA (mais généralement sur Excel).
@+
HD
Avatar
HD
Je viens de faire un test sur un document Word n'ayant pas l'attribut
lecture seule mais étant sur un emplacement partagé du réseau ne
permettant pas l'écriture du document (que cela soit par les droits ntfs
ou par les droits de partage d'un groupe utilisateur). Cela ne change
strictement rien. Word 2013 m'ouvre le document et le passe en non
modifiable. Il faut alors aller dans le menu "Affichage / Modifier le
document".
@+
HD
Avatar
HD
Le réseau local a un domaine avec serveur Windows 2008 R2. Mais je viens
de faire les tests modifier les droits ne permet pas de solutionner le
problème. Le souci est vraiment purement un problème Word lié aux
versions 2013 et supérieures. Dès qu'un document en lecture (par les
attributs, par les droits ntfs, par les droits de partages, etc...) est
ouvert par Word 2013 alors il le passe en non modifiable et il est alors
nécessaire de passer par le menu "Affichage / Modifier le document" pour
pouvoir le modifier. D'où ma question sur le VBA, Microsoft a peut être
prévu la possibilité de passer un document en modifiable via une
fonction vba ?
@+
HD
Avatar
Geo
Bonjour
Il faut alors aller dans le menu "Affichage / Modifier le document".

Vous pouvez faire une copie d'écran ? Je ne vois pas cette fonction
dans l'onglet affichage.
A moins que ce ne soit ce bandeau jaune sur la pièce jointe ?
http://www.cjoint.com/c/FGblF2HtgRz
Avatar
HD
Il faut alors aller dans le menu "Affichage / Modifier le document".

Vous pouvez faire une copie d'écran ? Je ne vois pas cette fonction
dans l'onglet affichage.

Voilà ce que cela donne :
http://www.cjoint.com/c/FGbmBXKlK7F
à l'ouverture du document il est complètement impossible de modifier
quoique ce soit dans le document et l'on a les menus "FICHIER", "OUTILS"
et "AFFICHAGE" qui apparaissent. L'on doit alors cliquer sur le menu
"AFFICHAGE / Modifier le document" pour pouvoir ensuite modifier quelque
chose. Mon problème est que dès l'ouverture j'ai une macro VBA qui doit
se lancer pour modifier le document... d'où mon problème. J'ai donc 2
solutions :
- Trouver le moyen de ne plus avoir le document en mode non modifiable à
l'ouverture... mais sans renommer le fichier qui se trouve sur le réseau
et tout en le laissant en lecture seule.
- Pouvoir passer en mode modifiable à l'ouverture du document... je
pensais à le faire en VBA mais existe il seulement une fonction VBA pour
le faire ? J'en doute... à moins qu'il n'y ai une solution via un
paramètre dans la base de registre ? Ou dans Word 2013 ?
En tout cas, le souci ne se pose que pour les postes équipés de Word
2013 ou Word 2016. Il n'y a aucun souci de ce genre avec les anciennes
versions. Malheureusement, avec le temps je vais me retrouver avec de
plus en plus de postes avec des versions Word 2013 ou supérieures...
@+
HD
Avatar
HD
Autre solution... utiliser une méthode que j'ai déjà utilisée avec Excel
avec un événement BeforSave où j'interdisais l'enregistrement sur un
répertoire dès qu'il trouvait la chaine de caractère "matrices" dans
le nom du fichier. Exemple :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
If InStr(1, ActiveWorkbook.FullName, "Matrices", vbTextCompare)
Then
If SaveAsUI = False Then
ret = MsgBox("Vous ne devez surtout pas écraser la matrice
du répertoire 'Matrices'..." & vbCrLf & _
"Annulation de sauvegarde !!!" & vbCrLf & _
"Veuillez lancer une 'sauvegarde sous' pour ne pas écraser
cette matrice !!!", vbCritical, "Attention !!!")
Cancel = True
End If
End If
End Sub
Le VBA de Word est différent, je vais tester en adaptant ma macro Excel
avec le VBA Word à partir de cette macro :
Private WithEvents App As Word.Application
Private Sub Document_Open()
Set App = Word.Application
End Sub
Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As
Boolean, Cancel As Boolean)
MsgBox("BeforeSave")
End Sub
Je vous tiens au courant Lundi de mon test.
@+
HD
1 2 3