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

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

7 réponses
Avatar
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

7 réponses

Avatar
DanielCo
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
Avatar
MichD
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
Avatar
HD
Merci. Je vais tester cette solution.
Cordialement,
HD
Avatar
HD
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
Avatar
ThierryP
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 :
'----------------------
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<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
Avatar
MichD
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
Avatar
ThierryP
" 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