COMMENT EFFACER ET PERSONNALISER LA LISTE DES DOCUMENTS RÉCENTS D’EXCEL (la vraie méthode)
La barre des documents récents d’Excel permet de lancer rapidement les derniers fichiers ouverts, sans besoin de rechercher ces derniers. Nous allons voir dans ce tutoriel comment procéder pour personnaliser cette liste, et également comment la purger de manière définitive pour en supprimer tous les fichiers déjà présents. Nous verrons également en toute fin de tutoriel comment sélectionner un classeur à retirer automatiquement de la liste des fichiers récents, en utilisant une petite macro VBA.
Téléchargement
Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :
Tutoriel Vidéo
Partie 1 : Comment effacer et personnaliser la liste des documents récents d’Excel (la vraie méthode)
Partie 2 : Comment supprimer un classeur de la liste des fichiers récemment ouverts sur Excel ?
Partie 3 : Comment rendre un classeur invisible aux yeux de la liste des fichiers récemment ouverts sur Excel ?
Vous trouverez très régulièrement de nouvelles vidéos sur la chaîne, alors pensez à vous abonner pour ne manquer aucune astuce et devenir rapidement un pro d’Excel (cliquez-ici) !
1. Les classeurs récents
1.1. Présentation
Par défaut, lorsque nous affichons le menu Fichier d’Excel, ou de n’importe quelle autre application de la suite Office (Word, PowerPoint, Outlook), les derniers éléments à avoir été ouverts sont affichés dans la zone des éléments récents.
Cette option très pratique permet de pouvoir accéder rapidement aux fichiers en question.
Nous allons voir dans ce tutoriel qu’il est tout à fait possible de personnaliser cette liste :
- Personnaliser le nombre d’éléments présentés dans cette liste
- Masquer ou afficher cette liste,
- Supprimer le contenu de cette liste,
1.2. Personnaliser le nombre d'éléments récemment utilisés
Pour personnaliser le nombre d’éléments récemment utilisés dans Excel, procédez simplement de la manière suivante :
- Rendez-vous dans le menu Fichier > Options
- Choisissez la catégorie Options avancés,
- Puis dans le groupe Affichage,
- Et enfin, il suffit de modifier la valeur du nombre de classeurs récents, comme le montre la capture ci-dessous (par défaut, ce nombre est à 50) :
-
Vous noterez qu’il est possible de personnaliser :
- Le nombre total de classeurs affichés dans la liste,
- Mais également le nombre de classeurs qui ne sont pas attachés
Pour attacher un classeur, il suffit de cliquer sur la punaise pour le conserver de manière systématique au sein de la liste.
Si vous n’avez attaché aucun classeur à la liste, alors Excel affichera le nombre de classeurs récents qui correspond au plus petits de ces deux réglages.
1.3. Masquer totalement la liste des éléments récemment utilisés
Pour masquer totalement cette liste, nous allons procéder exactement de la même manière, en choisissant de n’afficher aucun classeur récent (mettre le menu Afficher ce nombre de classeurs récents à zéro) :
La liste des documents récents est alors vide :
Attention, cette liste n’est pas supprimée pour autant, elle est juste masquée.
Il suffit en effet de redéfinir un nombre d’éléments supérieurs à zéro pour la réafficher de nouveau :
1.4. Supprimer un élément de la liste des documents récemment utilisés
Pour supprimer de manière définitive un élément de la liste, effectuez un clic-droit sur l’élément concerné, puis choisissez Supprimer de la liste
Attention, la suppression des éléments contenus dans la liste est définitive, aucun retour en arrière de sera plus possible ! Sauf bien entendu à rouvrir le fichier concerné…
Attention également de ne pas choisir Supprimer le fichier, ce qui aurait pour conséquence de supprimer directement le fichier en lui-même depuis son emplacement d’enregistrement, et non pas simplement le raccourci présenté dans ce menu !
Heureusement en cas de manipulation un peu hâtive, Excel demande une confirmation afin de ne pas supprimer un mauvais fichier par inadvertance !
2. Effacer définitivement tous les éléments de la liste en VBA
Depuis la version 2016 d’Excel, il n’est plus possible de supprimer tous les éléments de la liste (jusqu’à Excel 2013, il suffisait de choisir Effacer les documents non épinglés).
Il est maintenant nécessaire de passer par une macro commande VBA.
Pour cela, rendez-vous dans l’éditeur de macro VBE en effectuant un clic-droit sur le nom de l’onglet, afin de choisir l’option Visualiser le code :
Puis saisissez la macro suivante directement dans le code de la feuille de calcul :
Sub supprimerElementsRecents()
On Error Resume Next
For i = 1 To 50
Application.RecentFiles.Item(1).Delete
Next
End Sub
Ici, nous supprimons le premier raccourci présent dans la liste des documents récents, 50 fois de suite ! Pour de plus amples précisions sur cette macro VBA, je vous invite à visionner la vidéo présente au début de ce tutoriel.
Cela étant fait, positionnez simplement le curseur à l’intérieur de la macro, puis cliquez sur le triangle vert d’exécution (ou utilisez le raccourci clavier correspondant : [F5]) :
À présent, vous pouvez revenir dans le menu Fichier pour constater que la liste a été purgée :
3. Supprimer un classeur de la liste des documents récents en VBA
Pour supprimer un classeur donné, nous avons vu un peu plus tôt qu'il suffit d'effectuer un clic droit sur la liste des classeurs afin de sélectionner l’option « Supprimer de la liste » :
Mais, supposons que nous ne souhaitions ne supprimer qu’un seul classeur de cette liste en utilisant une macro-commande en VBA.
Pour cela, il sera nécessaire de procéder en deux temps :
- Dans un premier temps, nous allons afficher dans une feuille de calcul tous les fichiers présents dans l’historique,
- Puis dans un second temps, nous supprimerons de l’historique le classeur sélectionné
3.1. Lister tous les classeurs
Pour lister les classeurs, nous commençons par créer une nouvelle procédure, que nous appelons listeClasseursHistorique :
Sub listeClasseursHistorique()
End Sub
Ensuite, comme pour la macro que nous avons au cours de la partie précédente, nous allons créer une nouvelle variable que nous appelons i et qui va nous permettre de mettre en place une boucle For… Next :
Dim i As Integer
For i = 1 To 50
Next
Une boucle For… Next comme celle-ci permet de répéter une portion de code un nombre défini de fois.
Ici, nous commençons par donner à la variable i la valeur de 1, et nous souhaitons que la boucle se répète jusqu’à ce que cette valeur ait pour valeur 50, en sachant qu’à chaque fois que la boucle va recommencer, la variable i va voir sa valeur incrémentée d’une unité.
La boucle va donc se répéter 50 fois, ce qui correspond au nombre maximal de classeurs enregistrés dans l’historique.
Pour éviter toute erreur d’exécution dans le cas où l’utilisateur aurait défini un nombre de fichiers moindre, nous allons simplement ajouter l’instruction suivante, juste avant de lancer la boucle :
On Error Resume Next
Cette petite ligne de code permet de demander à VBA de continuer le déroulement de la macro, même lorsqu’une instruction problématique est rencontrée.
Cela permet ainsi de ne pas avoir à analyser au préalable le nombre de classeurs contenus dans l’historique.
Ensuite, il ne reste plus qu’à afficher le nom de tous les fichiers sur la feuille de calcul en insérant la ligne suivante à l’intérieur de la boucle :
For i = 1 To 50
Cells(i, 1) = Application.RecentFiles.Item(i).Name
Next
Nous faisons ici appel à l’objet Application.RecentFiles que nous avions déjà utilisé dans la macro précédente, lequel recense tous les classeurs enregistrés dans l’historique. Chacun de ces classeurs est ensuite accessible par des sous-objets Item.
Pour pouvoir tester la macro, nous revenons sur la feuille de calcul, et nous allons raccorder un petit bouton directement sur celle-ci.
Pour cela, nous nous rendons dans le menu Insertion, afin de cliquer sur Zone de texte.
Nous dessinons notre zone de texte à l’endroit et à la taille souhaitée, et nous saisissons un texte sur le bouton « Lister les documents » :
Puis, nous effectuons un clic droit sur ce bouton afin de sélectionner la ligne « Affecter une macro ».
Dans la fenêtre qui apparait, nous choisissons la macro que nous venons de créer « listeClasseursHistorique » :
Puis nous validons en appuyant sur le bouton [OK].
Maintenant, il suffit de cliquer sur ce bouton pour voir apparaitre la liste des fichiers présents dans l’historique :
3.2. Supprimer le classeur sélectionné
Maintenant, pour supprimer le fichier sélectionné, nous allons devoir créer une nouvelle macro-commande, que nous appelons cette fois-ci « supprimerDeLaListe » :
Sub supprimerDeLaListe()
End Sub
Pour commencer, et pour éviter tout risque d’erreur, nous allons nous assurer que l’utilisateur a bien sélectionné une cellule de la colonne A dans laquelle se trouvent les données.
Pour effectuer ce contrôle, il suffit de vérifier que la cellule active, obtenue avec l’objet ActiveCell se trouve bien dans la colonne A, en utilisant la fonction VBA Intersect. Comme nous l’avons vu dans le tutoriel dédié à cette fonction, si deux cellules ou plages de cellules ne se chevauchent pas, alors celle-ci renverra la valeur Nothing.
Et donc dans ce cas-là, nous pourrons afficher un message à l’utilisateur pour lui demander de sélectionner une cellule de la colonne A et nous quitterons juste après la procédure avec un Exit Sub :
If Intersect(ActiveCell, [a:a]) Is Nothing Then
MsgBox "Veuillez sélectionner un fichier à supprimer de l'historique"
Exit Sub
End If
Ensuite, pour supprimer le fichier sélectionné de l’historique, il suffit d’utiliser la méthode Delete sur l’Item dont l’index est retourné par la ligne de la cellule active :
Application.RecentFiles.Item(c.Row).Delete
Pour finir, il ne reste plus qu’à recréer la liste des fichiers dans laquelle le fichier a maintenant été effacé en appelant simplement la fonction « listeClasseursHistorique » que nous avons créée un peu plus tôt :
listeClasseursHistorique
4. Comment rendre un classeur invisible aux yeux de l'historique des fichiers récemment ouverts
Comme nous venons de le voir dans les parties précédentes l'historique des classeurs récemments ouverts permet d’afficher dans le menu Fichier d’Excel, ou de n’importe quelle autre application de la suite Office (Word, PowerPoint, Outlook), les derniers éléments à avoir été ouverts au sein de l’application. Il s’agit d’une option très pratique qui permet de pouvoir accéder rapidement aux fichiers en question.
Mais parfois, il peut arriver que nous souhaitions qu’un classeur en particulier n’apparaisse jamais dans cette liste, pour par exemple pouvoir travailler sur des informations confidentielles, le plus discrètement possible.
Ici, le but sera de rendre ce classeur totalement invisible de cette liste, de manière à ne pas laisser de trace.
Alors évidemment, ici nous allons nous limiter à empêcher l’historique d’enregistrer l’ouverture du classeur, mais pour que la confidentialité soit totale, il faudra également se pencher sur la suppression des traces laissées non plus sur Excel, mais directement au niveau du système d’exploitation.
Si nous souhaitons effacer toute trace de l’ouverture d’un classeur dans cet historique, nous allons devoir passer par le développement d’une petite macro-commande en VBA.
Pour cela, rendez-vous dans l’éditeur de macro VBE en utilisant le raccourci clavier [Alt]+[F11].
Ensuite, pour créer la macro, nous allons insérer un nouveau module, c’est-à-dire une feuille de code vide dans laquelle nous viendrons saisir les lignes de code.
Pour créer un module, nous nous rendons dans le menu Insertion > Module :
Puis, nous allons créer une nouvelle macro, que nous appelons supprimerFichierDansHistorique.
Pour cela, nous saisissons le mot-clé Sub, suivi du nom de la macro, et nous validons en appuyant sur la touche [Entrée] du clavier :
Sub supprimerFichierDansHistorique()
End Sub
Ainsi, tout ce que nous allons saisir entre ces deux lignes sera lancé automatiquement à chaque fois que nous appellerons la macro supprimerFichierDansHistorique.
Cela étant fait, nous allons passer en revue tous les fichiers présents dans l’historique.
Pour cela, nous allons utiliser une boucle For… Each, sur l’objet Application.RecentFiles, que nous avions découvert dans la partie précédente.
Pour commençons donc par créer une variable que nous appelons fichier et qui va nous servir à réaliser cette opération.
Nous typons cette variable en tant qu’objet RecentFile :
Dim fichier As RecentFile
Puis, nous mettons en place la boucle For… Each :
For Each fichier In Application.RecentFiles
Next
Ici, la boucle va donc nous retourner chaque élément de la bibliothèque d’objet Application.RecentFiles, directement dans la variable instanciée juste avant.
Pour tester le bon déroulement de la macro, nous pouvons maintenant afficher le nom de chaque classeur présent dans l’historique au sein du débogueur en utilisant l’instruction Debug.Print :
For Each fichier In Application.RecentFiles
Debug.Print fichier.Name
Next
Il ne reste maintenant plus qu’à comparer le nom de ces fichiers avec le nom du classeur actif.
Attention toutefois à une petite subtilité, car comme vous pouvez le constater, en fonction des répertoires d’enregistrement des classeurs, Excel peut enregistrer également le chemin de celui-ci.
Pour détecter si un fichier enregistré dans l’historique correspond bien au fichier actif, nous allons effectuer deux tests :
- Soit le nom du fichier est précédent d’une barre oblique, et dans ce cas, nous ferons précéder le test d’un astérisque afin de remplacer tout ce qui peut être saisi avant cette barre,
- Soit ce n’est pas le cas, et dans ce cas nous pourrons effectuer une comparaison du nom complet
Si l’une de ces deux options est validée, alors nous pourrons supprimer le fichier avec la méthode Delete :
Sub supprimerFichierDansHistorique()
Dim fichier As RecentFile
For Each fichier In Application.RecentFiles
If fichier.Name Like "*\" & ActiveWorkbook.Name Or fichier.Name Like ActiveWorkbook.Name Then
fichier.Delete
End If
Next
End Sub
Maintenant que nous venons de voir comment supprimer le classeur actif de la liste, nous allons devoir utiliser cette macro-commande pour rendre le classeur invisible de l’historique.
Pour cela, nous allons simplement appeler cette macro à l’intérieur d’un évènement.
Un évènement permet en effet de lancer une instruction lorsque quelque chose se passe sur le classeur.
L’évènement qui va nous intéresser ici est Workbook_Open qui comme son nom l’indique va se déclencher automatiquement à l’ouverture du classeur.
Pour mettre en place l’évènement, nous double-cliquons sur la feuille de code ThisWorkbook depuis le navigateur de Projet de VBA, ce qui va permettre d’ouvrir cette feuille :
Ensuite, pour créer l’évènement, nous utilisons les menus déroulants situés au-dessus de la feuille :
- Dans le premier, nous choisissons Workbook
- Et dans le second, nous choisissons Open
VBE nous ajoute alors automatiquement l’évènement Sub Workbook_Open, depuis lequel nous pourrons appeler la macro que nous avons créée juste avant supprimerFichierHistorique :
Private Sub Workbook_Open()
supprimerFichierHistorique
End Sub
Par contre, si vous essayez de tester la macro en fermant le classeur, puis en le relançant, il y a fort à parier que celui-ci reste dans l’historique comme si la macro n’avant jamais été lancée…
En vérité, celle-ci s’est bien exécutée, mais au tout démarrage du classeur, avant même qu’Excel n’ait eu le temps de mettre à jour l’historique des fichiers récents…
Pour contourner ce problème, nous pouvons temporiser le lancement de la macro-commande pour que celle-ci s’exécute quelques secondes après l’ouverture du classeur en utilisant l’instruction Application.OnTime comme ceci :
Private Sub Workbook_Open()
Application.OnTime Now() + TimeValue("00:00:03"), "supprimerFichierHistorique"
End Sub
Ici, le délai fixé à trois secondes permet de contourner le problème, à vous de voir s’il faut l’ajuster, en fonction de votre machine.
Article initial publié le 13/11/2019 et mis à jour le 12/05/2022