[Excel 2013] - Interception beforeSave

Le
ThierryP
Bonjour,

Avec mon bon vieil Excel XP, il était 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'év=
nement, il se passe plein de choses déagréables que je souhait=
e éviter !
- L'utilisateur clique sur la disquette,
- L'écran "Enregistrer sous" apparaît (j'utilise un fichier mod=
èle)
- L'utilisateur doit cliquer sur "Parcourir" et là seulement je peux i=
ntercepter le clic et exécuter ma macro.

Y a-t-il un moyen d'éviter çà ?

Merci d'avance à tous ceux qui vont se pencher sur mon souci !

ThierryP
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ThierryP
Le #26425071
Je m'auto-réponds !!
- Je peux créer un bouton sur ma feuille qui fera le job, SAUF que l'i cône Enregistrer reste active.
- Avec Excel 2013 je ne sais pas supprimer ou désactiver par macro ce tte icône(l'enregistreur reste désespérément vide....).
Une autre idée ??
ThierryP
JièL
Le #26425074
Hello,
pas testé, mais de mémoire, si on donnait à une macro le même nom que
"enregistrer" on remplaçait celle ci...
Désolé, c'est très approximatif comme aide, mais ça te donneras
peut-être une piste pour t'auto répondre à nouveau :-)
--
JièL toto ré pond
Le 03/02/2017 à 14:39, ThierryP a écrit :
Je m'auto-réponds !!
- Je peux créer un bouton sur ma feuille qui fera le job, SAUF que l'icône Enregistrer reste active.
- Avec Excel 2013 je ne sais pas supprimer ou désactiver par macro cette icône(l'enregistreur reste désespérément vide....).
Une autre idée ??
ThierryP
ThierryP
Le #26425086
Merci du retour !
J'ai fait le test, et j'ai juste reçu un message d'insulte d'Excel.... .
Dommage, je commençais à m'habituer à cette nouvelle version d'Excel, après mon bon vieux XP ! Mais la gestion des barres d'outils , menus et autres est nettement moins pratique maintenant (ou alors mes con naissances sont loin d'être suffisantes, ce qui est une certitude !!)
Allez, à qui le tour ?
Bon week-end,
ThierryP
MichD
Le #26425139
Bonjour,
Ta demande n'est pas très claire pour moi...
Tu peux utiliser ce bout de code que tu places dans le ThisWorkbook de ton classeur :
Chaque fois que l'usager appelle la commande "enregistrer" ou "enregistrer sous"
la procédure appelle ta macro.
'---------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
Call NomDeLaMacro 'La macro, je suppose, est dans un module standard.
End Sub
'---------------------------------------------
MichD
ThierryP
Le #26425309
Bonsoir Denis,
Désolé de ne pas avoir été plus clair ! Avant Excel 200 7, dès qu'un utilisateur cliquait sur l'icône disquette, l'é vènement était intercepté immédiatement.
Aujourd'hui, avec Excel 2013, l'utilisateur clique sur la disquette, l'à ©cran "Enregistrer sous" apparaît, puis l'utilisateur clique "Enregi strer" ou "Enregistrer sous", puis clique sur un dossier récent ou sur le bouton "Parcourir" et c'est seulement à ce moment-là que l' évènement est intercepté.
Et moi, j'aurais voulu éviter tout çà !
Et comme il semble qu'il faut passer par un éditeur xml pour modifier les menus d'Excel..... ça ne simplifie pas la tâche !
ThierryP
MichD
Le #26425319
Ton problème, c'est tes yeux et non Excel
Observe ce qui suit, avec les versions récentes d'Excel, il y a des nouvelles macros
événementielles
'Permet d'intercepter l'enregistrement AVANT (BEFORE)
'-------------------------------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'C'est celle-ci que tu dois utiliser
Cancel = true
Call NomDeLaProcédure
End Sub
'-------------------------------------------------------------
'Elle permet d'intercepter immédiatement après l'enregistrement APRÈS (AFTER)
'-------------------------------------------------------------
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
End Sub
'-------------------------------------------------------------
MichD
ThierryP
Le #26425382
Denis,
Mes yeux ne vont pas si mal que çà !! Ma mémoire aussi : sau f erreur ou omission de ma part, le BeforeSave existait déjà avec Excel 2002 (ma première rencontre avec le VBA, !!!) et sûrement dans les premières versions de VBA.
Par contre, je n'avais effectivement pas remarqué le AfterSave dans Ex cel, mais qui dans ce cas précis ne m'avance guère !
ThierryP
ThierryP
Le #26425390
J'ai également omis de préciser que je travaille sur un modè le, et que donc il n'y a pas de chemin défini avant le premier enregis trement.
Le but de ma question est donc d'éviter qu'un utilisateur peu habitu é à Excel n'enregistre le classeur n'importe où.
ThierryP
MichD
Le #26425396
J'ai compris, tu veux que j'écrive la macro ?
Débute par exécuter cette macro une fois pour être certain que les procédures événementielles
sont activées.
'---------------------------------
Sub Avant()
Application.EnableEvents = True
End Sub
'---------------------------------
Dans un classeur tout neuf qui n'a jamais été sauvegardé, copie dans le thisworkbook de ce
dernier ce qui suit et il se passera ceci :
A ) la première fenêtre qui s'ouvrira, l'usager pourra choisir le répertoire où il veut
enregistrer le fichier.
B ) la deuxième fenêtre lui permettra de choisir le nom du classeur puisque la fenêtre ouvrante
affichera déjà le répertoire qu'il a choisi.
C ) Si le fichier est déjà enregistré, il ne se passera rien sinon la sauvegarde du document.
'---------------------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Chemin As String
If SaveAsUI = True Then
Chemin = ChoixDossier()
CurDir Left(Chemin, 1)
ChDir Chemin
End If
End Sub
'---------------------------------------
Function ChoixDossier()
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ""
.Show
If .SelectedItems.Count > 0 Then
ChoixDossier = .SelectedItems(1)
Else
ChoixDossier = ""
End If
End With
End Function
'---------------------------------------
MichD
ThierryP
Le #26425476
Bonjour Denis,
Depuis le nombre d'années que je fréquente le MPFE, je n'ai jamai s demandé à ce qu'on m'écrive mes macros ! J'essaie d'ê tre un grand garçon ;o))
Ce que tu me proposes est justement ce que je ne veux pas :
- je ne veux pas que l'écran "Enregistrer sous" apparaisse
- je ne veux pas que l'utilisateur puisse choisir un répertoire d'enre gistrement
- je ne veux pas que l'utilisateur puisse choisir le nom du document.
Tout ceci se fait par macro.
Mon souhait, afin d'éviter toute fausse manip de l'utilisateur, serait justement d'inhiber l'apparition de l'écran "Enregistrer sous", qui a pparaît dès que l'on clique sur la disquette.
Et je maintiens que l'interception ne se produit que lorsque l'utilisateur choisit un répertoire de destination (en tout cas sur mon PC !!).
Et avec cette version 2013, je ne sais plus griser ou inhiber un bouton dan s un menu. J'ai fait quelques recherches, mais je n'ai rien trouvé de satisfaisant..
ThierryP
Publicité
Poster une réponse
Anonyme