OVH Cloud OVH Cloud

Suppression de fichiers

13 réponses
Avatar
padbra
Bonjour à tous,
Je repose ma question d'hier, le sujet n'étant p-e pas suffisamment
explicite :

Au sujet des documents récents :

Comment faire en sorte qu'à la fermeture d'un fichier excel, ce dernier ne
se retrouve ni dans la liste des derniers fichiers ouverts dans excel ni
dans la liste des documents récents du menu démarrer ?

Merci de vos réponses,

padbra

10 réponses

1 2
Avatar
DanC
Bonjour padbra

Pour ne pas retrouver les derniers fichiers Excel
Outils, Options, Général, décocher Liste des derniers fichiers utilisés

Au niveau du menu démarrer, faudrait peut-être demander sur un forum de ton
système d'exploitation

Bonne journée

Danielle
Je repose ma question d'hier, le sujet n'étant p-e pas suffisamment
explicite :

Au sujet des documents récents :

Comment faire en sorte qu'à la fermeture d'un fichier excel, ce dernier ne
se retrouve ni dans la liste des derniers fichiers ouverts dans excel ni
dans la liste des documents récents du menu démarrer ?

Merci de vos réponses,

padbra




Avatar
DanC
Re bonjour Padbra

Je viens de trouver ceci sous XP

Clic droit sur le bouton Démarrer, Propriétés, onglet du Menu Démarrer,
bouton Personnaliser, onglet Avancé, décocher "Afficher les documents
ouverts récemment", et effacer la liste pour repartir du bon pied.

Bonne journée
Danielle
"padbra" a écrit dans le message de
news:uEyVG$
Bonjour à tous,
Je repose ma question d'hier, le sujet n'étant p-e pas suffisamment
explicite :

Au sujet des documents récents :

Comment faire en sorte qu'à la fermeture d'un fichier excel, ce dernier ne
se retrouve ni dans la liste des derniers fichiers ouverts dans excel ni
dans la liste des documents récents du menu démarrer ?

Merci de vos réponses,

padbra




Avatar
Ellimac
Bonjour,

Si ton fichier est un fichier caché il n'apparaîtra pas
dans la liste des documents récents Windows.
Pour ceux d'Excel cela ne me dit rien, peut-être en
macro...

Camille

-----Message d'origine-----
Bonjour à tous,
Je repose ma question d'hier, le sujet n'étant p-e pas
suffisamment

explicite :

Au sujet des documents récents :

Comment faire en sorte qu'à la fermeture d'un fichier
excel, ce dernier ne

se retrouve ni dans la liste des derniers fichiers
ouverts dans excel ni

dans la liste des documents récents du menu démarrer ?

Merci de vos réponses,

padbra


.



Avatar
padbra
Hum hum Danielle, merci de tes réponses, mais ca je sais faire ;o).
Ce que je recherche, c'est qu'à la fermeture d'excel, seul le fichier que
j'aurais specifié (un .xls) ne se retrouve ni dans l'une ni dans l'autre de
ces deux listes, et pas tout supprimer.
De plus,

Clic droit sur le bouton Démarrer, Propriétés, onglet du Menu Démarrer,
bouton Personnaliser, onglet Avancé, décocher "Afficher les documents
ouverts récemment",


ceci ne permet pas de supprimer les fichiers mais seulement de ne pas les
afficher. WinXP garde tout de même la trace des docs récents et il suffit de
recocher l'option pour les afficher.

Merci de m'avoir accordé un peu de ton temps.
:¬)

padbra

"DanC" a écrit dans le message de news:

Re bonjour Padbra

Je viens de trouver ceci sous XP

Clic droit sur le bouton Démarrer, Propriétés, onglet du Menu Démarrer,
bouton Personnaliser, onglet Avancé, décocher "Afficher les documents
ouverts récemment", et effacer la liste pour repartir du bon pied.

Bonne journée
Danielle
"padbra" a écrit dans le message de
news:uEyVG$
Bonjour à tous,
Je repose ma question d'hier, le sujet n'étant p-e pas suffisamment
explicite :

Au sujet des documents récents :

Comment faire en sorte qu'à la fermeture d'un fichier excel, ce dernier
ne


se retrouve ni dans la liste des derniers fichiers ouverts dans excel ni
dans la liste des documents récents du menu démarrer ?

Merci de vos réponses,

padbra








Avatar
Michel Pierron
Bonsoir padbra;
Dans le module ThisWorkbook:
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Type ITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As ITEMID
End Type

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer, Recent As String
With ThisWorkbook
Recent = GetSpecialfolder(&H8)
If Recent <> "" Then Recent = Recent & "" & .FullName
If Dir(Recent) <> "" Then Kill Recent
For i = 1 To Application.RecentFiles.Count
If Application.RecentFiles(i).Path = .FullName Then
Application.RecentFiles(i).Delete
Exit For
End If
Next i
End With
End Sub

Private Function GetSpecialfolder(CSIDL As Long) As String
On Error GoTo Fin
Dim r As Long, IDL As ITEMIDLIST, Path As String
Path = Space(512)
r = SHGetSpecialFolderLocation(0, CSIDL, IDL)
r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path)
GetSpecialfolder = Left(Path, InStr(Path, Chr(0)) - 1)
Fin:
End Function

MP

"padbra" a écrit dans le message de
news:uEyVG$
Bonjour à tous,
Je repose ma question d'hier, le sujet n'étant p-e pas suffisamment
explicite :

Au sujet des documents récents :

Comment faire en sorte qu'à la fermeture d'un fichier excel, ce dernier ne
se retrouve ni dans la liste des derniers fichiers ouverts dans excel ni
dans la liste des documents récents du menu démarrer ?

Merci de vos réponses,

padbra




Avatar
padbra
Bonsoir Michel,
Merci de ta réponse.
J'arrive à faire fonctionner la suppression dans la liste
Application.RecentFiles, cependant la suppression au niveau de windows ne
s'effectue pas.
Il semble que la fonction "GetSpecialfolder" ne fonctionne pas. :c'(

padbra

"Michel Pierron" a écrit dans le message de news:

Bonsoir padbra;
Dans le module ThisWorkbook:
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As
Long

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As
Long

Private Type ITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As ITEMID
End Type

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer, Recent As String
With ThisWorkbook
Recent = GetSpecialfolder(&H8)
If Recent <> "" Then Recent = Recent & "" & .FullName
If Dir(Recent) <> "" Then Kill Recent
For i = 1 To Application.RecentFiles.Count
If Application.RecentFiles(i).Path = .FullName Then
Application.RecentFiles(i).Delete
Exit For
End If
Next i
End With
End Sub

Private Function GetSpecialfolder(CSIDL As Long) As String
On Error GoTo Fin
Dim r As Long, IDL As ITEMIDLIST, Path As String
Path = Space(512)
r = SHGetSpecialFolderLocation(0, CSIDL, IDL)
r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path)
GetSpecialfolder = Left(Path, InStr(Path, Chr(0)) - 1)
Fin:

End Function

MP

"padbra" a écrit dans le message de
news:uEyVG$
Bonjour à tous,
Je repose ma question d'hier, le sujet n'étant p-e pas suffisamment
explicite :

Au sujet des documents récents :

Comment faire en sorte qu'à la fermeture d'un fichier excel, ce dernier
ne


se retrouve ni dans la liste des derniers fichiers ouverts dans excel ni
dans la liste des documents récents du menu démarrer ?

Merci de vos réponses,

padbra








Avatar
Michel Pierron
Re padbra;
En fait, j'mas gourré (mille excuses svp); pour supprimer dans la liste des
fichiers récents, 2 solutions :
Une radicale mais simple (supprime l'intégralité des raccourcis présents dans le
dossier des fichiers récents)

Private Declare Function SHAddToRecentDocs Lib "Shell32" _
(ByVal lFlags As Long, ByVal lPv As Long) As Long

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call SHAddToRecentDocs(0, 0)
Dim i As Integer
With ThisWorkbook
For i = 1 To Application.RecentFiles.Count
If Application.RecentFiles(i).Path = .FullName Then
Application.RecentFiles(i).Delete
Exit For
End If
Next i
End With
End Sub

Une autre plus complexe mais sélective (ne supprime que le raccourci concerné)
Private Declare Function GetShortPathName Lib "kernel32" Alias
"GetShortPathNameA" _
(ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal lBuffer As
Long) As Long
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Type ITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As ITEMID
End Type

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer, Recent As String, lnkName As String
lnkName = GetShortPath(ThisWorkbook.Name)
lnkName = Mid(lnkName, 1, InStr(1, lnkName, "~")) & "1.lnk"
Recent = GetSpecialfolder(&H8) & "" & lnkName
If Dir(Recent) <> "" Then Kill Recent
With ThisWorkbook
For i = 1 To Application.RecentFiles.Count
If Application.RecentFiles(i).Path = .FullName Then
Application.RecentFiles(i).Delete
Exit For
End If
Next i
End With
End Sub

Private Function GetSpecialfolder(CSIDL As Long) As String
On Error GoTo Fin
Dim r As Long, IDL As ITEMIDLIST, Path As String
Path = Space(512)
r = SHGetSpecialFolderLocation(0, CSIDL, IDL)
r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path)
GetSpecialfolder = Left(Path, InStr(Path, Chr(0)) - 1)
Fin:
End Function

Private Function GetShortPath(strFileName As String) As String
Dim lngRes As Long, strPath As String
strPath = String(165, 0)
lngRes = GetShortPathName(strFileName, strPath, 164)
GetShortPath = Left(strPath, lngRes)
End Function

A toi de choisir.
MP

"padbra" a écrit dans le message de
news:uEyVG$
Bonjour à tous,
Je repose ma question d'hier, le sujet n'étant p-e pas suffisamment
explicite :

Au sujet des documents récents :

Comment faire en sorte qu'à la fermeture d'un fichier excel, ce dernier ne
se retrouve ni dans la liste des derniers fichiers ouverts dans excel ni
dans la liste des documents récents du menu démarrer ?

Merci de vos réponses,

padbra








Avatar
padbra
Re Michel,

Sans vouloir t'embéter, dans la 2éme solution, il me semble qu'il manque la
fonction "GetShortPathName" :-) que je serai bien incapable de pondre.
Au passage, je note que ce manque ne provoque aucune erreur d'exécution du
script ??

padbra

"Michel Pierron" a écrit dans le message de news:


Re padbra;
En fait, j'mas gourré (mille excuses svp); pour supprimer dans la liste
des

fichiers récents, 2 solutions :
Une radicale mais simple (supprime l'intégralité des raccourcis présents
dans le

dossier des fichiers récents)

Private Declare Function SHAddToRecentDocs Lib "Shell32" _
(ByVal lFlags As Long, ByVal lPv As Long) As Long

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call SHAddToRecentDocs(0, 0)
Dim i As Integer
With ThisWorkbook
For i = 1 To Application.RecentFiles.Count
If Application.RecentFiles(i).Path = .FullName Then
Application.RecentFiles(i).Delete
Exit For
End If
Next i
End With
End Sub

Une autre plus complexe mais sélective (ne supprime que le raccourci
concerné)

Private Declare Function GetShortPathName Lib "kernel32" Alias
"GetShortPathNameA" _
(ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal
lBuffer As

Long) As Long
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As
Long

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As
Long

Private Type ITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As ITEMID
End Type

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer, Recent As String, lnkName As String
lnkName = GetShortPath(ThisWorkbook.Name)
lnkName = Mid(lnkName, 1, InStr(1, lnkName, "~")) & "1.lnk"
Recent = GetSpecialfolder(&H8) & "" & lnkName
If Dir(Recent) <> "" Then Kill Recent
With ThisWorkbook
For i = 1 To Application.RecentFiles.Count
If Application.RecentFiles(i).Path = .FullName Then
Application.RecentFiles(i).Delete
Exit For
End If
Next i
End With
End Sub

Private Function GetSpecialfolder(CSIDL As Long) As String
On Error GoTo Fin
Dim r As Long, IDL As ITEMIDLIST, Path As String
Path = Space(512)
r = SHGetSpecialFolderLocation(0, CSIDL, IDL)
r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path)
GetSpecialfolder = Left(Path, InStr(Path, Chr(0)) - 1)
Fin:
End Function

Private Function GetShortPath(strFileName As String) As String
Dim lngRes As Long, strPath As String
strPath = String(165, 0)
lngRes = GetShortPathName(strFileName, strPath, 164)
GetShortPath = Left(strPath, lngRes)
End Function

A toi de choisir.
MP

"padbra" a écrit dans le message de
news:uEyVG$
Bonjour à tous,
Je repose ma question d'hier, le sujet n'étant p-e pas suffisamment
explicite :

Au sujet des documents récents :

Comment faire en sorte qu'à la fermeture d'un fichier excel, ce
dernier ne



se retrouve ni dans la liste des derniers fichiers ouverts dans excel
ni



dans la liste des documents récents du menu démarrer ?

Merci de vos réponses,

padbra












Avatar
padbra
RE-re
[au temps ?] [autant?] pour moi, d'après ce que je peux en comprendre, il
s'agit d'une fonction récupérée dans la librairie kernel32 de l'os. Si elle
est déclarée elle est donc utilisable, me trompe-je ??

Cependant, aucune des deux méthodes ne me donne le résultat escompté. Que
fais-je de travers ??

padbra

"padbra" a écrit dans le message de news:

Re Michel,

Sans vouloir t'embéter, dans la 2éme solution, il me semble qu'il manque
la

fonction "GetShortPathName" :-) que je serai bien incapable de pondre.
Au passage, je note que ce manque ne provoque aucune erreur d'exécution du
script ??

padbra

"Michel Pierron" a écrit dans le message de news:


Re padbra;
En fait, j'mas gourré (mille excuses svp); pour supprimer dans la liste
des

fichiers récents, 2 solutions :
Une radicale mais simple (supprime l'intégralité des raccourcis présents
dans le

dossier des fichiers récents)

Private Declare Function SHAddToRecentDocs Lib "Shell32" _
(ByVal lFlags As Long, ByVal lPv As Long) As Long

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call SHAddToRecentDocs(0, 0)
Dim i As Integer
With ThisWorkbook
For i = 1 To Application.RecentFiles.Count
If Application.RecentFiles(i).Path = .FullName Then
Application.RecentFiles(i).Delete
Exit For
End If
Next i
End With
End Sub

Une autre plus complexe mais sélective (ne supprime que le raccourci
concerné)

Private Declare Function GetShortPathName Lib "kernel32" Alias
"GetShortPathNameA" _
(ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal
lBuffer As

Long) As Long
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As
Long

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As
Long

Private Type ITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As ITEMID
End Type

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer, Recent As String, lnkName As String
lnkName = GetShortPath(ThisWorkbook.Name)
lnkName = Mid(lnkName, 1, InStr(1, lnkName, "~")) & "1.lnk"
Recent = GetSpecialfolder(&H8) & "" & lnkName
If Dir(Recent) <> "" Then Kill Recent
With ThisWorkbook
For i = 1 To Application.RecentFiles.Count
If Application.RecentFiles(i).Path = .FullName Then
Application.RecentFiles(i).Delete
Exit For
End If
Next i
End With
End Sub

Private Function GetSpecialfolder(CSIDL As Long) As String
On Error GoTo Fin
Dim r As Long, IDL As ITEMIDLIST, Path As String
Path = Space(512)
r = SHGetSpecialFolderLocation(0, CSIDL, IDL)
r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path)
GetSpecialfolder = Left(Path, InStr(Path, Chr(0)) - 1)
Fin:
End Function

Private Function GetShortPath(strFileName As String) As String
Dim lngRes As Long, strPath As String
strPath = String(165, 0)
lngRes = GetShortPathName(strFileName, strPath, 164)
GetShortPath = Left(strPath, lngRes)
End Function

A toi de choisir.
MP

"padbra" a écrit dans le message de
news:uEyVG$
Bonjour à tous,
Je repose ma question d'hier, le sujet n'étant p-e pas suffisamment
explicite :

Au sujet des documents récents :

Comment faire en sorte qu'à la fermeture d'un fichier excel, ce
dernier ne



se retrouve ni dans la liste des derniers fichiers ouverts dans
excel




ni
dans la liste des documents récents du menu démarrer ?

Merci de vos réponses,

padbra
















Avatar
Michel Pierron
Bonjour padbra;
Eh oui, l'affaire se complique car je crois que selon que l'on ouvre un fichier
directement avec Excel ou au travers de l'explorateur, l'ajout du raccourci
correspondant dans le dossier Recent ne s'effectue pas au même instant.
Une ouverture avec l'explorateur ajoute le raccourci immédiatement.
Une ouverture avec Excel ajoute le raccourci au moment de la fermeture du fichier.
Pour que cela marche à tous coups, la procédure 1 est modifiée comme suit:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer
With ThisWorkbook
For i = 1 To Application.RecentFiles.Count
If Application.RecentFiles(i).Path = .FullName Then
Application.RecentFiles(i).Delete
Exit For
End If
Next i
End With
Application.DisplayRecentFiles = True
Application.ScreenUpdating = False
Dim objNB As Object: Set objNB = Workbooks.Add
With ThisWorkbook
Open .Path & "xx.bas" For Output As #1
Print #1, "Private Declare Function SHAddToRecentDocs Lib " _
& """Shell32""" & "(ByVal lFlags As Long, ByVal lPv As Long) As Long"
Print #1, "Sub Kill_Link"
Print #1, "SHAddToRecentDocs 2, 0"
Print #1, "Kill " & """" & .Path & "xx.bas" & """"
Print #1, "ThisWorkbook.Close False"
Print #1, "End Sub"
Close #1
objNB.VBProject.VBComponents.Import Filename:=.Path & "xx.bas"
End With
Application.OnTime Now(), objNB.Name & "!Kill_Link"
End Sub

Et la procédure 2 comme suit:

Private Declare Function GetShortPathName Lib "kernel32" Alias _
"GetShortPathNameA" (ByVal lpszLongPath As String _
, ByVal lpszShortPath As String, ByVal lBuffer As Long) As Long
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwner As Long, ByVal nFolder As Long _
, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Type ITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As ITEMID
End Type

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer, Recent As String, lnkName As String
With ThisWorkbook
For i = 1 To Application.RecentFiles.Count
If Application.RecentFiles(i).Path = .FullName Then
Application.RecentFiles(i).Delete
Exit For
End If
Next i
End With
lnkName = GetShortPath(ThisWorkbook.Name)
lnkName = Mid(lnkName, 1, InStr(1, lnkName, "~")) & "1.lnk"
Recent = GetSpecialfolder(&H8) & "" & lnkName
If Dir(Recent) = "" Then Exit Sub
Application.ScreenUpdating = False
Dim objNB As Object: Set objNB = Workbooks.Add
With ThisWorkbook
Open .Path & "xx.bas" For Output As #1
Print #1, "Sub Kill_Link"
Print #1, "Kill " & """" & Recent & """"
Print #1, "Kill " & """" & .Path & "xx.bas" & """"
Print #1, "ThisWorkbook.Close False"
Print #1, "End Sub"
Close #1
objNB.VBProject.VBComponents.Import Filename:=.Path & "xx.bas"
End With
Application.OnTime Now(), objNB.Name & "!Kill_Link"
End Sub

Private Function GetSpecialfolder(CSIDL As Long) As String
On Error GoTo Fin
Dim r As Long, IDL As ITEMIDLIST, Path As String
Path = Space(512)
r = SHGetSpecialFolderLocation(0, CSIDL, IDL)
r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path)
GetSpecialfolder = Left(Path, InStr(Path, Chr(0)) - 1)
Fin:
End Function

Private Function GetShortPath(strFileName As String) As String
Dim lngRes As Long, strPath As String
strPath = String(165, 0)
lngRes = GetShortPathName(strFileName, strPath, 164)
GetShortPath = Left(strPath, lngRes)
End Function

A toi de tester et nous tenir au courant.
MP

"padbra" a écrit dans le message de
news:
RE-re
[au temps ?] [autant?] pour moi, d'après ce que je peux en comprendre, il
s'agit d'une fonction récupérée dans la librairie kernel32 de l'os. Si elle
est déclarée elle est donc utilisable, me trompe-je ??

Cependant, aucune des deux méthodes ne me donne le résultat escompté. Que
fais-je de travers ??

padbra

"padbra" a écrit dans le message de news:

Re Michel,

Sans vouloir t'embéter, dans la 2éme solution, il me semble qu'il manque
la

fonction "GetShortPathName" :-) que je serai bien incapable de pondre.
Au passage, je note que ce manque ne provoque aucune erreur d'exécution du
script ??

padbra

"Michel Pierron" a écrit dans le message de news:


Re padbra;
En fait, j'mas gourré (mille excuses svp); pour supprimer dans la liste
des

fichiers récents, 2 solutions :
Une radicale mais simple (supprime l'intégralité des raccourcis présents
dans le

dossier des fichiers récents)

Private Declare Function SHAddToRecentDocs Lib "Shell32" _
(ByVal lFlags As Long, ByVal lPv As Long) As Long

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call SHAddToRecentDocs(0, 0)
Dim i As Integer
With ThisWorkbook
For i = 1 To Application.RecentFiles.Count
If Application.RecentFiles(i).Path = .FullName Then
Application.RecentFiles(i).Delete
Exit For
End If
Next i
End With
End Sub

Une autre plus complexe mais sélective (ne supprime que le raccourci
concerné)

Private Declare Function GetShortPathName Lib "kernel32" Alias
"GetShortPathNameA" _
(ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal
lBuffer As

Long) As Long
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As
Long

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As
Long

Private Type ITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As ITEMID
End Type

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer, Recent As String, lnkName As String
lnkName = GetShortPath(ThisWorkbook.Name)
lnkName = Mid(lnkName, 1, InStr(1, lnkName, "~")) & "1.lnk"
Recent = GetSpecialfolder(&H8) & "" & lnkName
If Dir(Recent) <> "" Then Kill Recent
With ThisWorkbook
For i = 1 To Application.RecentFiles.Count
If Application.RecentFiles(i).Path = .FullName Then
Application.RecentFiles(i).Delete
Exit For
End If
Next i
End With
End Sub

Private Function GetSpecialfolder(CSIDL As Long) As String
On Error GoTo Fin
Dim r As Long, IDL As ITEMIDLIST, Path As String
Path = Space(512)
r = SHGetSpecialFolderLocation(0, CSIDL, IDL)
r = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path)
GetSpecialfolder = Left(Path, InStr(Path, Chr(0)) - 1)
Fin:
End Function

Private Function GetShortPath(strFileName As String) As String
Dim lngRes As Long, strPath As String
strPath = String(165, 0)
lngRes = GetShortPathName(strFileName, strPath, 164)
GetShortPath = Left(strPath, lngRes)
End Function

A toi de choisir.
MP

"padbra" a écrit dans le message de
news:uEyVG$
Bonjour à tous,
Je repose ma question d'hier, le sujet n'étant p-e pas suffisamment
explicite :

Au sujet des documents récents :

Comment faire en sorte qu'à la fermeture d'un fichier excel, ce
dernier ne



se retrouve ni dans la liste des derniers fichiers ouverts dans
excel




ni
dans la liste des documents récents du menu démarrer ?

Merci de vos réponses,

padbra




















1 2