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 !
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
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....).
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
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
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 !!)
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
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
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
'---------------------------------------------
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
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
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
'-------------------------------------------------------------
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
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
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
'---------------------------------------
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