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

[Excel 2013] - Interception beforeSave

20 réponses
Avatar
ThierryP
Bonjour,

Avec mon bon vieil Excel XP, il =C3=A9tait simple d'intercepter l'enregistr=
ement d'un fichier, ce qui me permettait d'imposer un chemin, un nom etc...

Aujourd'hui, avec Excel 2013, avant que je puisse intercepter l'=C3=A9v=C3=
=A8nement, il se passe plein de choses d=C3=A9agr=C3=A9ables que je souhait=
e =C3=A9viter !
- L'utilisateur clique sur la disquette,
- L'=C3=A9cran "Enregistrer sous" appara=C3=AEt (j'utilise un fichier mod=
=C3=A8le)
- L'utilisateur doit cliquer sur "Parcourir" et l=C3=A0 seulement je peux i=
ntercepter le clic et ex=C3=A9cuter ma macro.

Y a-t-il un moyen d'=C3=A9viter =C3=A7=C3=A0 ?

Merci d'avance =C3=A0 tous ceux qui vont se pencher sur mon souci !

ThierryP

10 réponses

1 2
Avatar
ThierryP
Bonjour Denis,
Non tu n'as pas compris ! Depuis plus de 10 ans que je fréquente le MP FE pour essayer de progresser, je n'ai jamais demandé à ce qu'on m'écrive mes macros ! J'essaie d'être un grand garçon :-))
Finalement, en utilisant "Custom UI Editor for Office" et en modifiant le c ode xml j'ai pu m'en sortir : l'icône reste visible mais inactive et d u coup le clic est intercepté immédiatement.
ThierryP
Avatar
MichD
Pour inhiber l'action du bouton "enregistrer" ou les commandes du menu "enregistrer"
'---------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = true '<<<<<<<========= 'Et tu peux ajouter un message si tu le désires.
Msgbox "Utiliser le bouton dans la feuille de calcul pour enregistrer le fichier".
End Sub
'---------------------------------------
MichD
Avatar
ThierryP
Oui, c'est bien ce que j'utilisais avant !
Mais l'avantage d'inhiber l'icône, c'est que l'utilisateur ne peut m ême pas accéder à la page "Enregistrer" ou "Enregistrer sous " et la macro BeforeSave se lance dès le clic sur l'icône, sans q u'aucun écran intermédiaire n'apparaisse.
Du coup, je suis absolument sûr que les fichiers iront bien s'enregist rer à l'emplacement et sous le nom définis dans mes macros !
Merci pour le retour,
ThierryP
Avatar
Jacquouille
Bonjour Thierry,
Je ne suis pas sur (c'est même certain) d'avoir bien compris ton problème.
Mais, si tu parvenais à garder l'icône "enregistrer", mais lui attribuer une
autre macro, cela ne conviendrait-il pas?
cette gymnastique pourrait se faire auto à l'ouverture du fichier, puis,à la
fermeture, la macro remettrait la bonne destination à l'icône.
Facile à dire. ....
Bonne m****
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"ThierryP" a écrit dans le message de groupe de discussion :
Oui, c'est bien ce que j'utilisais avant !
Mais l'avantage d'inhiber l'icône, c'est que l'utilisateur ne peut même pas
accéder à la page "Enregistrer" ou "Enregistrer sous" et la macro BeforeSave
se lance dès le clic sur l'icône, sans qu'aucun écran intermédiaire
n'apparaisse.
Du coup, je suis absolument sûr que les fichiers iront bien s'enregistrer à
l'emplacement et sous le nom définis dans mes macros !
Merci pour le retour,
ThierryP
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
isabelle
bonjour ThierryP,
SaveAsUI: Vrai si la boîte de dialogue Enregistrer sous s'affiche en raison des
modifications apportées qui doivent être enregistrées dans le classeur.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
SaveAsUI = False
Cancel = True
MsgBox "ok"
End Sub
https://msdn.microsoft.com/en-us/library/office/ff840057.aspx
isabelle
Le 2017-02-07 à 07:46, ThierryP a écrit :
Oui, c'est bien ce que j'utilisais avant !
Mais l'avantage d'inhiber l'icône, c'est que l'utilisateur ne peut même pas accéder à la page "Enregistrer" ou "Enregistrer sous" et la macro BeforeSave se lance dès le clic sur l'icône, sans qu'aucun écran intermédiaire n'apparaisse.
Du coup, je suis absolument sûr que les fichiers iront bien s'enregistrer à l'emplacement et sous le nom définis dans mes macros !
Merci pour le retour,
ThierryP
Avatar
ThierryP
Bonjour Jacques,
Le truc pénible que j'expliquais à Denis, c'est que l'évà ¨nement est capturé "plus tardivement" qu'avec Excel XP, et comme me s utilisateurs ne sont pas tous des pros du PC, je souhaite éviter tou te fausse manip.... et pour ça, il vaut mieux que ce soit Excel qui s' en charge !
Et par rapport à ce que je connaissais, il semble qu'on ne puisse plus modifier directement par macro les menus d'Excel, mais je peux (sûrem ent !) me tromper.
ThierryP
Avatar
MichD
Bonjour,
Tu étais parti dans le sud? ;-)
Concernant la procédure, seulement ceci est suffisant.
Cela inhibe totalement la commande "Enregistrer sous" ou "Enregistrer"
que ce soit avec la commande du ruban ou du menu.
Qu'est-ce que tu fais quand le monsieur refuse de comprendre?
;-))
'--------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
End Sub
'--------------------------------
Au besoin, on peut ajouter après la ligne "Cancel", une ligne de code pour
appeler la procédure qui enregistrera le fichier
'--------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
Call MySaveSub(SaveAsUI)
End Sub
'--------------------------------
Sub MySaveSub(First As Boolean)
'Au début de la macro d'enregistrement
If First = True Then
'52 Macro avec macro
ThisWorkbook.SaveAs Filename:="C:ExcelNomDufichier", FileFormat:R
Else
ThisWorkbook.Save
End If
End Sub
'--------------------------------
MichD
Avatar
ThierryP
Denis,
Depuis plus de 10 ans que je fréquente le MPFE, tu m'as apporté q uantité de solutions, de pistes etc.... et j'ai appris des tonnes de t rucs.
Mais là, c'est toi qui ne veux pas comprendre !
Ce que tu as écrit dans ton dernier post, cela fait des années qu e je l'utilise (avec Excel XP), et je suis même arrivé à com prendre comment ça marche !
Quand l'utilisateur double clique sur mon modèle, il crée un nouv eau fichier qui n'a jamais été enregistré, nous sommes d'acc ord ?
Tout ce que je souhaite, c'est avoir l'équivalent de ceci pour Excel 2 003:
'----------------
With Application.CommandBars("Standard")
.Controls("Enre&gistrer").Enabled = False
End With
'-----------------------
A moins que j'ai une version spéciale d'Office (j'ai la version 2013), avant que la macro BeforeSave se déclenche, voilà ce qu'il se pa sse quand je clique sur la disquette :
- L'écran "Enregistrer sous" apparaît (mais je n'en veux pas)
- Je clique sur un dossier récent ou sur le bouton "Parcourir" et là   seulement la macro BeforeSave se déclenche et empêche l'enreg istrement.
- Je dois cliquer sur la flèche "Retour" en haut à gauche de l' écran pour retourner sur ma feuille de calcul.
Tout ceci n'est pas très ergonomique, surtout pour un utilisateur novi ce en bureautique.
Je souhaitais juste savoir si une solution aussi simple qu'avec Excel XP po uvait s'appliquer ......
PS : Le test que j'ai fait en modifiant le XML de mon modèle fonctionn e ... mais si je crée un nouveau fichier depuis mon modèle, à §a ne fonctionne plus.. Je crois que je vais pleurer ;o)
Ne voulant pas passer pour un troll et abuser, je crois que nous allons clo re cette discussion.
ThierryP
Avatar
MichD
Sur ce site Web (en anglais), tu as toute l'information nécessaire
pour transformer le ruban avec même des fichiers exemples.
http://www.rondebruin.nl/win/section2.htm
J'avais très bien compris ce que tu voulais faire, moi, je ne réponds
pas (n'écris pas de fichier xml) pour modifier les menus, et ce par
choix personnel.) directement à ce type de question.
Cependant, au lieu de modifier le fichier xml pour modifier la commande,
comme tu ne fais pas disparaître le bouton du ruban ni les commandes
sous le menu fichier, l'approche que je propose est plus simple et elle
est facile à mettre en application même dans un modèle!
Ceci dit, tu fais comme bon te semble! En espérant que tu gardes le
sourire quant à mes commentaires.
MichD
Avatar
ThierryP
Denis,
Depuis le temps, je connais bien ta manière :-))))
Tes procédures marchent nickel, mais je connais mes utilisateurs et mo ins ils peuvent cliquer n'importe où, meilleur c'est !
Tous les fichiers générés depuis mon modèle sont ensuit e analysés par un classeur que j'ai créé, mais il faut que l a structure du nom et le chemin soient toujours basés sur la même logique..... et il n'y a qu'une machine qui ne change jamais de logique ;o ))
Je vais creuser un peu plus chez l'ami Ron !
Merci pour ton temps
ThierryP
1 2