Autres supprimer les dossiers et classeur qui ont " - copie" en fin de leurs noms

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous 🙂

J'utilise Excel 2024

Je voudrais supprimer les dossiers et classeurs qui ont " - copie" en fin de leurs noms.

Par exemple :
affichage_texte - copie (espace- copie)

Je ne vois pas comment faire.
Pourriez-vous m'aider ?

Un grand merci par avance,
lionel 🤪
 
Dernière édition:
Bonjour à la communauté.
Perso, j'ai un petit fichier ".bat" dans la racine des dossiers, et je le lance de temps en temps.
Il est très évolutif.
Code:
@echo off
cls
erase * - copie.* /q /s /f
@echo Fin du nettoyage
Pas besoin de lancer Excel ou autre...
Denis.
 
Bonjour cher Lional, TooFatBoy, kiki29,

Exécute cette macro :
VB:
Sub Sup_Copie()
Dim contenu
With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Sélectionnez un dossier"
    If .Show = False Then End
    chemin = .SelectedItems(1)
End With
contenu = Dir(chemin & "\") 'fichiers
While contenu <> ""
    If LCase(contenu) Like "*- copie*" Then Kill chemin & "\" & contenu
    contenu = Dir
Wend
contenu = Dir(chemin & "\", vbDirectory) 'dossiers + fichiers
While contenu <> ""
    On Error Resume Next
    If LCase(contenu) Like "*- copie" Then RmDir chemin & "\" & contenu
    If Err Then MsgBox "Videz d'abord '" & contenu & "'"
    contenu = Dir
Wend
End Sub
La boîte de dialogue permet de choisir le dossier dont il faut tester le contenu.

Pour que la macro puisse supprimer un dossier il faut qu'il soit vide.

A+
 
Bonjour cher Lional, TooFatBoy, kiki29,

Exécute cette macro :
VB:
Sub Sup_Copie()
Dim contenu
With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Sélectionnez un dossier"
    If .Show = False Then End
    chemin = .SelectedItems(1)
End With
contenu = Dir(chemin & "\") 'fichiers
While contenu <> ""
    If LCase(contenu) Like "*- copie*" Then Kill chemin & "\" & contenu
    contenu = Dir
Wend
contenu = Dir(chemin & "\", vbDirectory) 'dossiers + fichiers
While contenu <> ""
    On Error Resume Next
    If LCase(contenu) Like "*- copie" Then RmDir chemin & "\" & contenu
    If Err Then MsgBox "Videz d'abord '" & contenu & "'"
    contenu = Dir
Wend
End Sub
La boîte de dialogue permet de choisir le dossier dont il faut tester le contenu.

Pour que la macro puisse supprimer un dossier il faut qu'il soit vide.

A+
Bonjour Gérard 🙂
Merci pour ce code que je vais garder (évidemment lol).
Mais pour mon besoin présent, les dossiers contiennent tous des classeurs.
Amicalement,
lionel 🤪
 
Bonjour à la communauté.
Perso, j'ai un petit fichier ".bat" dans la racine des dossiers, et je le lance de temps en temps.
Il est très évolutif.
Code:
@echo off
cls
erase * - copie.* /q /s /f
@echo Fin du nettoyage
Pas besoin de lancer Excel ou autre...
Denis.
Bonjour DenisHen 🙂
Merci pour ton retour.
Mais comment ça fonctionne ?
Merci,
lionel 🤪
 
Bonjour,
Une solution, utilisant Power Query pour lister tous les fichiers d'un répertoire dont le nom contient un mot clé, et VBA pour supprimer lesdits fichiers après validation par l'utilisateur.
Tout d'abord, si cela n'a jamais été fait, il faut configurer PQ (voir onglet "Lisez-moi"). A faire une bonne fois pour toute
Ensuite, dans la cellule A2, mettre le répertoire à scanner (on peut mettre tout le répertoire "Documents")
Dans la cellule A5, le mot-clé (déjà mis pour ton besoin)
Un clic sur le bouton "Rechercher" liste les fichiers répondants aux critères
Dans la colonne "Supprimer", mettre un "x" afin de confirmer la suppression
Puis, un clic sur le bouton "Poubelle" supprime ces fichiers, et effectue un nouveau balayage.
Je sais que tu n'es pas un fan inconditionnel de PQ, mais je l'ai fait également pour le fun
Bonne apm

Edit : Fichier modifié, petite erreur de syntaxe
 

Pièces jointes

Dernière édition:
Re-Bonjour Gérard, toutes et tous,

Une petite précision :
J'ai un dossier : affichage_texte
qui contient des classeurs
et un autre : affichage_texte - copie (espace- copie)
qui contient les même classeurs

affichage_texte - copie (espace- copie) et les classeurs qu'il contient sont en doublons.
🤪
 
Dernière édition:
Bonjour,
Une solution, utilisant Power Query pour lister tous les fichiers d'un répertoire dont le nom contient un mot clé, et VBA pour supprimer lesdits fichiers après validation par l'utilisateur.
Tout d'abord, si cela n'a jamais été fait, il faut configurer PQ (voir onglet "Lisez-moi"). A faire une bonne fois pour toute
Ensuite, dans la cellule A2, mettre le répertoire à scanner (on peut mettre tout le répertoire "Documents")
Dans la cellule A5, le mot-clé (déjà mis pour ton besoin)
Un clic sur le bouton "Rechercher" liste les fichiers répondants aux critères
Dans la colonne "Supprimer", mettre un "x" afin de confirmer la suppression
Puis, un clic sur le bouton "Poubelle" supprime ces fichiers, et effectue un nouveau balayage.
Je sais que tu n'es pas un fan inconditionnel de PQ, mais je l'ai fait également pour le fun
Bonne apm
Bonjour Cousinhub 🙂

Merci pour ton retour et solution.
Malheureusement, je ne suis jamais arrivé à utiliser Power Query et je suis bien incapable de le paramétrer.
lionel 🤪
 
Re-Bonjour 🙂
Avec Excel 2024, je n'ai pas ça :
1744294601083.png
1744294601083.png
1744294601083.png
 
Mais pour mon besoin présent, les dossiers contiennent tous des classeurs.
On peut facilement supprimer les classeurs mais les dossiers ne doivent pas contenir des sous-dossiers :
VB:
Sub Sup_Copie()
Dim chemin$, fso As Object, dossier As Object, f As Object, sf As Object
With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Sélectionnez un dossier"
    If .Show = False Then End
    chemin = .SelectedItems(1)
End With
Set fso = CreateObject("Scripting.FileSystemObject")
Set dossier = fso.Getfolder(chemin)
For Each f In dossier.Files
    If LCase(f.Name) Like "*- copie*" Then Kill chemin & "\" & f.Name 'supprime les fichiers
Next f
For Each sf In dossier.Subfolders
    If LCase(sf.Name) Like "*- copie*" Then
        For Each f In sf.Files
            Kill chemin & "\" & sf.Name & "\" & f.Name 'supprime tous les fichiers du dossier
        Next f
        On Error Resume Next
        RmDir chemin & "\" & sf.Name
        If Err Then MsgBox "'" & sf.Name & "' ne doit pas contenir des sous-dossiers !", 48
    End If
Next sf
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour