[VBA] Empêcher l'utilisateur d'enregistrer le classeur sans macro

Le
HD
Bonjour,

J'ai un souci avec mes classeurs Excel. J'ai des macros VBA sur ces
classeurs. Mais certains utilisateurs arrivent à enregistrer des
classeurs sans macro. Je voudrais pouvoir leur interdire de le faire.

Dans la fonction d'événement "Workbook_BeforeSave" j'ai voulu ajouter la
ligne suivante :

If FileFormat = xlOpenXMLWorkbook Then FileFormatNum =
xlOpenXMLWorkbookMacroEnabled

Mais cela n'a aucun effet.

Auriez vous une astuce pour empêcher les utilisateurs de sauvegarder en
d'autres formats ?

Cordialement,

DAH
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
DanielCo
Le #26426913
Bonjour,
Avec l'événement "Workbook_BeforeSave" et le paramètre "Cancel"
psitionné à "True", tu peux forcer un "Enregistrer" (pas d'"Enregistrer
sous").
Cordialement.
Daniel
Bonjour,
J'ai un souci avec mes classeurs Excel. J'ai des macros VBA sur ces
classeurs. Mais certains utilisateurs arrivent à enregistrer des
classeurs sans macro. Je voudrais pouvoir leur interdire de le faire.
Dans la fonction d'événement "Workbook_BeforeSave" j'ai voulu ajouter
la ligne suivante :
If FileFormat = xlOpenXMLWorkbook Then FileFormatNum =
xlOpenXMLWorkbookMacroEnabled
Mais cela n'a aucun effet.
Auriez vous une astuce pour empêcher les utilisateurs de sauvegarder
en d'autres formats ?
Cordialement,
DAH
MichD
Le #26426986
Bonjour,
Ce qui suit définit dans les options d'Excel, le format par défaut à "XLMS" lors d'un
enregistrement de fichier qu'il soit nouveau ou ancien. Ceci étant dit, l'usager peut toujours
choisir dans la fenêtre "enregistrer sous" un "type" de fichier différent.
'----------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False
Application.DefaultSaveFormat = xlOpenXMLWorkbookMacroEnabled
Application.DisplayAlerts = True
End Sub
'----------------------------------
MichD
HD
Le #26427612
Merci. Je vais tester cette solution.
Cordialement,
HD
HD
Le #26427611
Avec l'événement "Workbook_BeforeSave" et le paramètre "Cancel"
psitionné à "True", tu peux forcer un "Enregistrer" (pas
d'"Enregistrer sous").

Mon souci est que l'utilisateur aura besoin de faire des "Enregistrer
sous" et si il n'y parvient pas il risque de bidouiller.
Cordialement,
HD
ThierryP
Le #26427666
Bonjour,
Je sais que Denis est philosophiquement contre les bidouilles dans le xml.. ... mais j'ai eu le même souci que toi. Je m'en suis sorti en édi tant mon classeur modèle avec "Custom UI Editor For Microsoft Office" et en modifiant le xml comme suit :
'----------------------
<backstage>
<button idMso="FileSave" visible="false"/>
<button idMso="FileSaveAs" visible="false"/>
<button idMso="FileOpen" visible="false"/>
<button idMso="FileClose" visible="false"/>
<button idMso="ApplicationOptionsDialog" visible="false"/>
<button idMso="FileExit" visible="false"/>
<button idMso="HistoryTab" visible="false"/>
<button idMso="OfficeFeedback" visible="false"/>
<tab idMso="TabInfo" visible="false"/>
<tab idMso="TabRecent" visible="false"/>
<tab idMso="TabNew" visible="false"/>
<tab idMso="TabPrint" visible="false"/>
<tab idMso="TabShare" visible="false"/>
<tab idMso="TabHelp" visible="false"/>
<tab idMso="TabPublish" visible="false"/>
<tab idMso="TabSave" visible="false"/>
<tab idMso="TabOfficeStart" visible="false"/>
</backstage>
</customUI>
'------------------------
Ceci supprime tous les boutons accessibles en cliquant sur "Fichier" et ton utilisateur est obligé d'utiliser ta procédure de sauvegarde.
ThierryP
Mon souci est que l'utilisateur aura besoin de faire des "Enregistrer
sous" et si il n'y parvient pas il risque de bidouiller.
Cordialement,
HD
MichD
Le #26427735
Bonjour Thierry,
| Je sais que Denis est philosophiquement contre les bidouilles dans le xml
Absolument pas. J'ai simplement dit à plus d'une reprise que je ne répondais pas à ces
questions où l'on doit modifier le menu en écrivant un bout de code en XML. Faire cela n'est
pas une bidouille, c'est ce que Microsoft demande... Moi, j'ai décidé de ne pas intervenir à ce
niveau, je me contente de code en VBA ou formules si je le peux!
C'est très bien que tu puisses faire ce type de suggestion au demandeur, qui sait, je te
demanderai peut-être de "bidouiller" certains fichiers pour moi!
;-)
MichD
ThierryP
Le #26427789
" je te
demanderai peut-être de "bidouiller" certains fichiers pour moi!"

Houlà !! Moi, je ne suis qu'un bricoleur du dimanche qui essaie, comme tu le dis, de "bidouiller" pour arriver à mes fins !!!
ThierryP
Publicité
Poster une réponse
Anonyme