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

Nom du classeur APRES sauvegarde

6 réponses
Avatar
Antonio
Bonjour,

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...

Merci.

6 réponses

Avatar
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.


Avatar
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.


Avatar
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.



.




Avatar
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.


Avatar
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.



.




Avatar
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.
.