Bonjour,
Je débute sur VBA et cherche à sécuriser à minima via des codes VBA les enregistrements afin de ne pas en exécuter sur les fichiers modèles.
En gros les fichiers modèles ont des macros qui aboutissent sur un enregistrement sous en automatique. Mais je ne peux pas empêcher mes collègues de cliquer sur le bouton "Enregistrer" d'Excel. Je ne veux pas n'ont plus l'interdire mais juste m'assurer que la modification soit justifiée.
Par conséquent j'ai cherché à l'aide des forums à modifier le comportement du bouton "Enregistrer" par l'ouverture d'une boite de dialogue qui aboutit sur un enregistrement sous ...
Ainsi lorsque l'on clique sur le bouton "Enregistrer" la macro présente dans ThisWorkBook oriente l'utilisateur vers un enregistrement sous.
Si je ne modifie pas le nom du fichier tout se passe bien. Si je modifie le nom du fichier alors Excel cesse de fonctionner.
Pourtant l'enregistrement s'effectue quand même.
Pouvez-vous m'expliquez pourquoi cela se produit ? Est-il possible à l'aide du code VBA que je souhaite utiliser d'empêcher cette déconnexion Excel indésirable ? Avez-vous une autre solution à me proposer.
Exemple :
-Enregistrement sous ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Sub Macro1() Dim chemin As String chemin = "C:\" ActiveWorkbook.SaveAs Filename:=chemin & Worksheets(1).[A2].Value End Sub ------------------- - Code présent dans la feuille ThisWorkbook 'Ce code à pour but d'obliger l'utilisateur à enregistrer sous afin de ne pas modifier le fichier modèle Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox " - ATTENTION - " & Chr(10) & "" & Chr(10) & "Si la demande d'enregistrement fait suite au lancement d'une macro nous vous invitons à cliquer sur OK" & Chr(10) & "" & Chr(10) & "En cas contraire, nous vous informons que vous n'êtes pas autorisés à enregistrer sur le fichier modèle." & Chr(10) & "" & Chr(10) & "Vous allez être redirigés vers un Enregistrement sous ... qui vous permettra de modifier le nom du fichier modèle ou d'écraser votre précédent enregistrement." & Chr(10) & "Cliquer 2 fois sur OK" & Chr(10) & "" & Chr(10) & "Si vous voulez mettre à jour le fichier modèle vous devez désactiver les macros." Application.Dialogs(xlDialogSaveAs).Show End Sub 'Informe Excel que le fichier a déjà été enregistré (cela évite d'avoir une demande d'enregistrement à la fermeture) Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.ThisWorkbook.Saved = True End Sub
Partager