Si l'utilisateur fait un "save", je n'arrive pas
=E0 conna=EEtre le nom qu'il a utilis=E9 lors de la sauvegarde,
notamment lors de la fermeture d'Excel.
Bien entendu, la m=E9thode "beforesave" du classeur
me renvoi le nom AVANT la sauvegarde, mais pas
apr=E8s...en fait, c'est comme si je voulais avoir
une m=E9thode "aftersave" qui n'existe pas...
si vous avez des id=E9es...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pierre Fauconnier
Bonjour
Je ne comprends pas bien. Si tu veux connaître le nom du classeur APRES la sauvegarde, cela revient à vouloir connaitre le nom actuel du classeur ActiveWorkBook.Name devrait te renvoyer cela...
-- Cela convient-il? ---- Pierre Fauconnier "N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos Beaucarne)
Antonio wrote:
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas à connaître le nom qu'il a utilisé lors de la sauvegarde, notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur me renvoi le nom AVANT la sauvegarde, mais pas après...en fait, c'est comme si je voulais avoir une méthode "aftersave" qui n'existe pas... si vous avez des idées...
Merci.
Bonjour
Je ne comprends pas bien. Si tu veux connaître le nom du classeur APRES la
sauvegarde, cela revient à vouloir connaitre le nom actuel du classeur
ActiveWorkBook.Name devrait te renvoyer cela...
--
Cela convient-il?
----
Pierre Fauconnier
"N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos
Beaucarne)
Antonio wrote:
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas
à connaître le nom qu'il a utilisé lors de la sauvegarde,
notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur
me renvoi le nom AVANT la sauvegarde, mais pas
après...en fait, c'est comme si je voulais avoir
une méthode "aftersave" qui n'existe pas...
si vous avez des idées...
Je ne comprends pas bien. Si tu veux connaître le nom du classeur APRES la sauvegarde, cela revient à vouloir connaitre le nom actuel du classeur ActiveWorkBook.Name devrait te renvoyer cela...
-- Cela convient-il? ---- Pierre Fauconnier "N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos Beaucarne)
Antonio wrote:
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas à connaître le nom qu'il a utilisé lors de la sauvegarde, notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur me renvoi le nom AVANT la sauvegarde, mais pas après...en fait, c'est comme si je voulais avoir une méthode "aftersave" qui n'existe pas... si vous avez des idées...
Merci.
Pierre Fauconnier
Re, ...
Essaie de rester dans le même fil de discussion sinon cela devient difficile à suivre... Pour faciliter la lecture des news, tu aurais intérêt à utiliser un lecteur de news tel que Outlook Express, Eudora, NetScape, ... plutôt que CDO...
Le lecture et la gestion des messages en sera plus aisée ;-)
Pierre
Antonio wrote:
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas à connaître le nom qu'il a utilisé lors de la sauvegarde, notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur me renvoi le nom AVANT la sauvegarde, mais pas après...en fait, c'est comme si je voulais avoir une méthode "aftersave" qui n'existe pas... si vous avez des idées...
Merci.
Re, ...
Essaie de rester dans le même fil de discussion sinon cela devient difficile
à suivre...
Pour faciliter la lecture des news, tu aurais intérêt à utiliser un lecteur
de news tel que Outlook Express, Eudora, NetScape, ... plutôt que CDO...
Le lecture et la gestion des messages en sera plus aisée ;-)
Pierre
Antonio wrote:
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas
à connaître le nom qu'il a utilisé lors de la sauvegarde,
notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur
me renvoi le nom AVANT la sauvegarde, mais pas
après...en fait, c'est comme si je voulais avoir
une méthode "aftersave" qui n'existe pas...
si vous avez des idées...
Essaie de rester dans le même fil de discussion sinon cela devient difficile à suivre... Pour faciliter la lecture des news, tu aurais intérêt à utiliser un lecteur de news tel que Outlook Express, Eudora, NetScape, ... plutôt que CDO...
Le lecture et la gestion des messages en sera plus aisée ;-)
Pierre
Antonio wrote:
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas à connaître le nom qu'il a utilisé lors de la sauvegarde, notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur me renvoi le nom AVANT la sauvegarde, mais pas après...en fait, c'est comme si je voulais avoir une méthode "aftersave" qui n'existe pas... si vous avez des idées...
Merci.
Antonio
ça marche...
-----Message d'origine----- Re, ...
Essaie de rester dans le même fil de discussion sinon cela devient difficile
à suivre... Pour faciliter la lecture des news, tu aurais intérêt à utiliser un lecteur
de news tel que Outlook Express, Eudora, NetScape, ... plutôt que CDO...
Le lecture et la gestion des messages en sera plus aisée ;-)
Pierre
Antonio wrote:
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas à connaître le nom qu'il a utilisé lors de la sauvegarde,
notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur me renvoi le nom AVANT la sauvegarde, mais pas après...en fait, c'est comme si je voulais avoir une méthode "aftersave" qui n'existe pas... si vous avez des idées...
Merci.
.
ça marche...
-----Message d'origine-----
Re, ...
Essaie de rester dans le même fil de discussion sinon
cela devient difficile
à suivre...
Pour faciliter la lecture des news, tu aurais intérêt à
utiliser un lecteur
de news tel que Outlook Express, Eudora, NetScape, ...
plutôt que CDO...
Le lecture et la gestion des messages en sera plus
aisée ;-)
Pierre
Antonio wrote:
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas
à connaître le nom qu'il a utilisé lors de la
sauvegarde,
notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur
me renvoi le nom AVANT la sauvegarde, mais pas
après...en fait, c'est comme si je voulais avoir
une méthode "aftersave" qui n'existe pas...
si vous avez des idées...
Essaie de rester dans le même fil de discussion sinon cela devient difficile
à suivre... Pour faciliter la lecture des news, tu aurais intérêt à utiliser un lecteur
de news tel que Outlook Express, Eudora, NetScape, ... plutôt que CDO...
Le lecture et la gestion des messages en sera plus aisée ;-)
Pierre
Antonio wrote:
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas à connaître le nom qu'il a utilisé lors de la sauvegarde,
notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur me renvoi le nom AVANT la sauvegarde, mais pas après...en fait, c'est comme si je voulais avoir une méthode "aftersave" qui n'existe pas... si vous avez des idées...
Merci.
.
Pierre Fauconnier
Re,...
Tu peux connaître cela via l'évènement Deactivate du classeur, qui se produit en dernier lieu, après, dans l'ordre, BeforeClose et BeforeSave...
Private Sub Workbook_Deactivate() MsgBox ThisWorkbook.Name End Sub
Tu remplaces évidemment la ligne de code par les lignes de traitement que tu souhaites... Utilisé pour le classeur actif, il te permet de gérer le nom du classeur pour l'envoyer, par exemple, dans un fichier de log en txt, l'afficher à l'écran ou toute autre manipulation...
Si tu souhaites gérer cela pour tous tes classeurs, il faut gérer un objet Application dans le classeur "Maître", comme ceci
Dans le module ThisWorkbook du classeur Mapitre, tu dimensionnes un objet App comme ceci :
Dim WithEvents App As Application
Et cet objet est initialisé lors de l'ouverture du classeur avec ceci, dans le même module :
Private Sub Workbook_Open() Set App = Application End Sub
Ensuite, tu peux gérer les évènements de l'application, tels que WorkBookDeactivate
Private Sub App_WorkbookDeactivate(ByVal Wb As Workbook) MsgBox Wb.Name End Sub
-- Cela convient-il? ---- Pierre Fauconnier "N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos Beaucarne)
Antonio wrote:
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas à connaître le nom qu'il a utilisé lors de la sauvegarde, notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur me renvoi le nom AVANT la sauvegarde, mais pas après...en fait, c'est comme si je voulais avoir une méthode "aftersave" qui n'existe pas... si vous avez des idées...
Merci.
Re,...
Tu peux connaître cela via l'évènement Deactivate du classeur, qui se
produit en dernier lieu, après, dans l'ordre, BeforeClose et BeforeSave...
Private Sub Workbook_Deactivate()
MsgBox ThisWorkbook.Name
End Sub
Tu remplaces évidemment la ligne de code par les lignes de traitement que tu
souhaites...
Utilisé pour le classeur actif, il te permet de gérer le nom du classeur
pour l'envoyer, par exemple, dans un fichier de log en txt, l'afficher à
l'écran ou toute autre manipulation...
Si tu souhaites gérer cela pour tous tes classeurs, il faut gérer un objet
Application dans le classeur "Maître", comme ceci
Dans le module ThisWorkbook du classeur Mapitre, tu dimensionnes un objet
App comme ceci :
Dim WithEvents App As Application
Et cet objet est initialisé lors de l'ouverture du classeur avec ceci, dans
le même module :
Private Sub Workbook_Open()
Set App = Application
End Sub
Ensuite, tu peux gérer les évènements de l'application, tels que
WorkBookDeactivate
Private Sub App_WorkbookDeactivate(ByVal Wb As Workbook)
MsgBox Wb.Name
End Sub
--
Cela convient-il?
----
Pierre Fauconnier
"N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos
Beaucarne)
Antonio wrote:
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas
à connaître le nom qu'il a utilisé lors de la sauvegarde,
notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur
me renvoi le nom AVANT la sauvegarde, mais pas
après...en fait, c'est comme si je voulais avoir
une méthode "aftersave" qui n'existe pas...
si vous avez des idées...
Tu peux connaître cela via l'évènement Deactivate du classeur, qui se produit en dernier lieu, après, dans l'ordre, BeforeClose et BeforeSave...
Private Sub Workbook_Deactivate() MsgBox ThisWorkbook.Name End Sub
Tu remplaces évidemment la ligne de code par les lignes de traitement que tu souhaites... Utilisé pour le classeur actif, il te permet de gérer le nom du classeur pour l'envoyer, par exemple, dans un fichier de log en txt, l'afficher à l'écran ou toute autre manipulation...
Si tu souhaites gérer cela pour tous tes classeurs, il faut gérer un objet Application dans le classeur "Maître", comme ceci
Dans le module ThisWorkbook du classeur Mapitre, tu dimensionnes un objet App comme ceci :
Dim WithEvents App As Application
Et cet objet est initialisé lors de l'ouverture du classeur avec ceci, dans le même module :
Private Sub Workbook_Open() Set App = Application End Sub
Ensuite, tu peux gérer les évènements de l'application, tels que WorkBookDeactivate
Private Sub App_WorkbookDeactivate(ByVal Wb As Workbook) MsgBox Wb.Name End Sub
-- Cela convient-il? ---- Pierre Fauconnier "N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos Beaucarne)
Antonio wrote:
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas à connaître le nom qu'il a utilisé lors de la sauvegarde, notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur me renvoi le nom AVANT la sauvegarde, mais pas après...en fait, c'est comme si je voulais avoir une méthode "aftersave" qui n'existe pas... si vous avez des idées...
Merci.
Antonio
Oui, mais si tu as un autre workbook ouvert, attention les dégats, faut faire attention...à la perte de focus du premier en allant sur le deuxième par exemple...
-----Message d'origine----- Re,...
Tu peux connaître cela via l'évènement Deactivate du classeur, qui se
produit en dernier lieu, après, dans l'ordre, BeforeClose et BeforeSave...
Private Sub Workbook_Deactivate() MsgBox ThisWorkbook.Name End Sub
Tu remplaces évidemment la ligne de code par les lignes de traitement que tu
souhaites... Utilisé pour le classeur actif, il te permet de gérer le nom du classeur
pour l'envoyer, par exemple, dans un fichier de log en txt, l'afficher à
l'écran ou toute autre manipulation...
Si tu souhaites gérer cela pour tous tes classeurs, il faut gérer un objet
Application dans le classeur "Maître", comme ceci
Dans le module ThisWorkbook du classeur Mapitre, tu dimensionnes un objet
App comme ceci :
Dim WithEvents App As Application
Et cet objet est initialisé lors de l'ouverture du classeur avec ceci, dans
le même module :
Private Sub Workbook_Open() Set App = Application End Sub
Ensuite, tu peux gérer les évènements de l'application, tels que
WorkBookDeactivate
Private Sub App_WorkbookDeactivate(ByVal Wb As Workbook) MsgBox Wb.Name End Sub
-- Cela convient-il? ---- Pierre Fauconnier "N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos
Beaucarne)
Antonio wrote:
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas à connaître le nom qu'il a utilisé lors de la sauvegarde,
notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur me renvoi le nom AVANT la sauvegarde, mais pas après...en fait, c'est comme si je voulais avoir une méthode "aftersave" qui n'existe pas... si vous avez des idées...
Merci.
.
Oui, mais si tu as un autre workbook ouvert, attention
les dégats, faut faire attention...à la perte de
focus du premier en allant sur le deuxième par exemple...
-----Message d'origine-----
Re,...
Tu peux connaître cela via l'évènement Deactivate du
classeur, qui se
produit en dernier lieu, après, dans l'ordre,
BeforeClose et BeforeSave...
Private Sub Workbook_Deactivate()
MsgBox ThisWorkbook.Name
End Sub
Tu remplaces évidemment la ligne de code par les lignes
de traitement que tu
souhaites...
Utilisé pour le classeur actif, il te permet de gérer le
nom du classeur
pour l'envoyer, par exemple, dans un fichier de log en
txt, l'afficher à
l'écran ou toute autre manipulation...
Si tu souhaites gérer cela pour tous tes classeurs, il
faut gérer un objet
Application dans le classeur "Maître", comme ceci
Dans le module ThisWorkbook du classeur Mapitre, tu
dimensionnes un objet
App comme ceci :
Dim WithEvents App As Application
Et cet objet est initialisé lors de l'ouverture du
classeur avec ceci, dans
le même module :
Private Sub Workbook_Open()
Set App = Application
End Sub
Ensuite, tu peux gérer les évènements de l'application,
tels que
WorkBookDeactivate
Private Sub App_WorkbookDeactivate(ByVal Wb As Workbook)
MsgBox Wb.Name
End Sub
--
Cela convient-il?
----
Pierre Fauconnier
"N'insulte pas le crocodile avant d'avoir traversé la
rivière" (Julos
Beaucarne)
Antonio wrote:
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas
à connaître le nom qu'il a utilisé lors de la
sauvegarde,
notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur
me renvoi le nom AVANT la sauvegarde, mais pas
après...en fait, c'est comme si je voulais avoir
une méthode "aftersave" qui n'existe pas...
si vous avez des idées...
Oui, mais si tu as un autre workbook ouvert, attention les dégats, faut faire attention...à la perte de focus du premier en allant sur le deuxième par exemple...
-----Message d'origine----- Re,...
Tu peux connaître cela via l'évènement Deactivate du classeur, qui se
produit en dernier lieu, après, dans l'ordre, BeforeClose et BeforeSave...
Private Sub Workbook_Deactivate() MsgBox ThisWorkbook.Name End Sub
Tu remplaces évidemment la ligne de code par les lignes de traitement que tu
souhaites... Utilisé pour le classeur actif, il te permet de gérer le nom du classeur
pour l'envoyer, par exemple, dans un fichier de log en txt, l'afficher à
l'écran ou toute autre manipulation...
Si tu souhaites gérer cela pour tous tes classeurs, il faut gérer un objet
Application dans le classeur "Maître", comme ceci
Dans le module ThisWorkbook du classeur Mapitre, tu dimensionnes un objet
App comme ceci :
Dim WithEvents App As Application
Et cet objet est initialisé lors de l'ouverture du classeur avec ceci, dans
le même module :
Private Sub Workbook_Open() Set App = Application End Sub
Ensuite, tu peux gérer les évènements de l'application, tels que
WorkBookDeactivate
Private Sub App_WorkbookDeactivate(ByVal Wb As Workbook) MsgBox Wb.Name End Sub
-- Cela convient-il? ---- Pierre Fauconnier "N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos
Beaucarne)
Antonio wrote:
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas à connaître le nom qu'il a utilisé lors de la sauvegarde,
notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur me renvoi le nom AVANT la sauvegarde, mais pas après...en fait, c'est comme si je voulais avoir une méthode "aftersave" qui n'existe pas... si vous avez des idées...
Merci.
.
Antonio
En fait, j'ai trouvé :
dim wbAfterSave as Workbook
Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean) On Error Resume Next If Not Wb.IsAddin Then wbAfterSave = Wb App.OnTime Now, "AfterSave" End If End Sub
private sub AfterSave MsgBox wbAfterSave.Name end sub
Explications : 1)Je branche l'évènement "beforesave", jusque là rien de sorcier, 2)Dans cet évènement j'affecte une variable globale avec le wbook en train de se fermer (ici je n'ai pas encore le nom que choisira l'utilisateur, malheureusement), 3)Je place un évènement dans la file d'évènements d'Excel, en particulier le lancement d'une méthode sur un timer déclenché dès la fin du "save" utilisateur, 4)L'évènement "AfterSave" est appelé APRES le save et je récupère le nom dans la variable qui contient le wbook sauvegardé.
===> voilà comment créer un évènement "AfterSave"...
-----Message d'origine----- Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas à connaître le nom qu'il a utilisé lors de la sauvegarde, notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur me renvoi le nom AVANT la sauvegarde, mais pas après...en fait, c'est comme si je voulais avoir une méthode "aftersave" qui n'existe pas... si vous avez des idées...
Merci. .
En fait, j'ai trouvé :
dim wbAfterSave as Workbook
Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook,
ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error Resume Next
If Not Wb.IsAddin Then
wbAfterSave = Wb
App.OnTime Now, "AfterSave"
End If
End Sub
private sub AfterSave
MsgBox wbAfterSave.Name
end sub
Explications :
1)Je branche l'évènement "beforesave", jusque là rien de
sorcier,
2)Dans cet évènement j'affecte une variable globale avec
le wbook en train de se fermer (ici je n'ai pas encore le
nom que choisira l'utilisateur, malheureusement),
3)Je place un évènement dans la file d'évènements d'Excel,
en particulier le lancement d'une méthode sur un timer
déclenché dès la fin du "save" utilisateur,
4)L'évènement "AfterSave" est appelé APRES le save et
je récupère le nom dans la variable qui contient le
wbook sauvegardé.
===> voilà comment créer un évènement "AfterSave"...
-----Message d'origine-----
Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas
à connaître le nom qu'il a utilisé lors de la sauvegarde,
notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur
me renvoi le nom AVANT la sauvegarde, mais pas
après...en fait, c'est comme si je voulais avoir
une méthode "aftersave" qui n'existe pas...
si vous avez des idées...
Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean) On Error Resume Next If Not Wb.IsAddin Then wbAfterSave = Wb App.OnTime Now, "AfterSave" End If End Sub
private sub AfterSave MsgBox wbAfterSave.Name end sub
Explications : 1)Je branche l'évènement "beforesave", jusque là rien de sorcier, 2)Dans cet évènement j'affecte une variable globale avec le wbook en train de se fermer (ici je n'ai pas encore le nom que choisira l'utilisateur, malheureusement), 3)Je place un évènement dans la file d'évènements d'Excel, en particulier le lancement d'une méthode sur un timer déclenché dès la fin du "save" utilisateur, 4)L'évènement "AfterSave" est appelé APRES le save et je récupère le nom dans la variable qui contient le wbook sauvegardé.
===> voilà comment créer un évènement "AfterSave"...
-----Message d'origine----- Bonjour,
Si l'utilisateur fait un "save", je n'arrive pas à connaître le nom qu'il a utilisé lors de la sauvegarde, notamment lors de la fermeture d'Excel.
Bien entendu, la méthode "beforesave" du classeur me renvoi le nom AVANT la sauvegarde, mais pas après...en fait, c'est comme si je voulais avoir une méthode "aftersave" qui n'existe pas... si vous avez des idées...