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:
Re-,
(mon premier gif)
1744295659724.gif
 
Bonjour le fil

Une autre possibilité avec Powershell (exemple basique)
(un seule ligne de code)
Ouvrez le bloc-notes
Code:
Get-ChildItem -Path "C:\Users\STAPLE\Documents\TESTS\" -Include "*copie*" -File -Recurse | Remove-Item
Puis enregistrer-sous ce script avec un nom de ce type suppr.ps1
NB: Pensez à penser à adapter le chemin dans le script avant de tester
Ensuite clic-droit sur ce script -> Exécuter avec PowerShell

Ici le fichiers contenant copie dans leur noms seront supprimés.
Et si il y a des sous-dossiers contenant des fichiers avec copie dans le nom ils seront supprimés également.

PS: Pour le moment, je ne traite que les fichiers
 
bonsoir
VB:
Sub test()
    Dim dossier
    dossier = "C:\MonDossier" 'chemin du dossier ici

      CreateObject("WScript.Shell").Run cmd = "cmd /c for /r """ & dossier & """ %F in (* - copie.*) do del ""%F"" /q /f", 0, True
        ' 0 c'est pour rendre la fenêtre bat invisible
        ' le True c'est pour attendre la fin de l'execution de la commande
    
End Sub
 
Bonjour Lionel, le forum,

Au temps pour moi, RmDir ne convient pas et en fait c'est très simple :
VB:
Sub Sup_Copie()
Dim chemin$
With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Sélectionnez un dossier"
    If .Show = False Then End
    chemin = .SelectedItems(1) & "\*- copie*"
End With
On Error Resume Next
With CreateObject("Scripting.FileSystemObject")
    .DeleteFile chemin, True
    .DeleteFolder chemin, True
End With
End Sub
A+
 
Bonjour Lionel, le forum,

Si l'on veut compter les fichiers et dossiers supprimés :
VB:
Sub Sup_Copie()
Dim chemin$, nf, nsf
With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Sélectionnez un dossier"
    If .Show = False Then End
    chemin = .SelectedItems(1)
End With
On Error Resume Next
With CreateObject("Scripting.FileSystemObject")
    nf = .GetFolder(chemin).Files.Count
    nsf = .GetFolder(chemin).SubFolders.Count
    .DeleteFile chemin & "\*- copie*", True
    .DeleteFolder chemin & "\*- copie*", True
    MsgBox "Nombre de fichiers supprimés : " & nf - .GetFolder(chemin).Files.Count _
        & vbLf & "Nombre de dossiers supprimés : " & nsf - .GetFolder(chemin).SubFolders.Count
End With
End Sub
A+
 
Bonjour le fil


Puisque qu'on utilise en fait du langage VBScript par le biais de VBA, pourquoi ne pas directement utiliser un script *.vbs ?

Ci-dessous la version du code VBA en version VBS
A copier/coller dans le bloc-notes et à enregistrer sous avec l'extension *.vbs
(par exemple Suppression.vbs)
Code:
Dim chemin, nf, nsf

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "Sélectionnez un dossier", &H1)
If Not objFolder Is Nothing Then
    chemin = objFolder.Self.Path
Else
    WScript.Quit
End If

On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
nf = fso.GetFolder(chemin).Files.Count
nsf = fso.GetFolder(chemin).SubFolders.Count

fso.DeleteFile chemin & "\*- copie*", True
fso.DeleteFolder chemin & "\*- copie*", True

MsgBox "Nombre de fichiers supprimés : " & nf - fso.GetFolder(chemin).Files.Count & vbCrLf & _
       "Nombre de dossiers supprimés : " & nsf - fso.GetFolder(chemin).SubFolders.Count

PS: Ce n'est qu'une question, pas une critique.

NB: Un désagrément dans ce script VBS: la non-gestion des caractères accentués

EDITION: En enregistrant le script au format ANSI depuis le bloc-notes, le problème des accents est réglé.
Pour infos : Taille du fichier vbs : 1Ko
 
Dernière édition:
Bonjour job75

Je sais très bien que l'on est sur un forum Excel.

Simplement parfois je m'étonne qu'on n'utilise pas (ou qu'on ne suggère pas aux XLDnautes) les outils natifs offerts par Windows.
(notamment avec les dernière versions de Windows -> PowerShell ou PowerAutomate)

Utiliser VBS par le bias de VBA, ce n'est pas la vocation initiale du tableur qu'est à la base Excel, non ?

Oui, comme je le disais, je suis étonné qu'on utilise Excel pour faire tout sorte de chose (que des outils tiers font simplement offrant parfois l'avantage d'éviter les problèmes liés aux macros : message d'erreur , environnement de travail qui interdit les macros etc...)

C'est juste ce point que ma question voulait soulever.

Bonne fin de journée et bon week-end (apparemment ensoleillé ce qui explique que nous soyons derrière nos écrans 😱 )
 
offrant parfois l'avantage d'éviter les problèmes liés aux macros : message d'erreur , environnement de travail qui interdit les macros etc...)
C'est Microsoft qui a créé cette phobie des macros VBA avec ses nouveaux produits, ça n'existait pas auparavant.

Il y a même une méthode très sûre : ne pas utiliser d'ordinateur, je connais des gens qui en sont allergiques.
 
re
juste en passant sans vouloir kikiner personne
puisque l'on a parlé de powershell
adapter la boite de dialog pour dossier_maitre
VB:
Sub SupprimerFichiersEtDossiersCopie()
     Dim pwsshellCommand As String
    Dim DOSSIER_MAITRE  As String
   
    ' Le Dossier  maitre  à  néttoyer
    DOSSIER_MAITRE = "C:\Users\patricktoulon\Desktop\Nouveau dossier  2"
   
    ' la ligne de commande  PowerShell pour dossier et fichier
    pwsshellCommand = _
        "Get-ChildItem '" & DOSSIER_MAITRE & "' -Recurse -File | Where-Object { $_.BaseName -like '*- copie' } | Remove-Item -Force;" & _
        "Get-ChildItem '" & DOSSIER_MAITRE & "' -Recurse -Directory | Where-Object { $_.Name -like '*- copie' } | Remove-Item -Recurse -Force"

    ' on le lance avec wscript.shell .run
     CreateObject("WScript.Shell").Run "powershell -NoProfile -ExecutionPolicy Bypass -Command """ & pwsshellCommand & """", 0, True
   
    Set shell = Nothing
End Sub
cela dit je rejoins @job75 ;faut il encore ajouter le paramètre dans nos réponses "a qui on s'adresse"
si le demandeur ne comprend pas le codage mieux vaut rester dans le pure vba avec l'object FSO dont les exemples fleurissent à foison sur la toile et qui est relativement simple à comprendre même si c'est un gros lourdaud
 
Re

@job75
Je ne suis pas phobique des macros VBA.
Je m'étonne simplement qu'on utilise Excel pour des tâches qui ne sont pas dans ses prérogatives usuelles.
(Suppression de fichiers, gestion de MP3, export de métadonnées EXIF etc...)
Où est le mal d'exploiter les outils offerts par son OS pour des tâches dédiées ?

Personnellement, j'utilise Excel avec ou sans macros, mais quand il s'agit de faire des tâches pouvant être effectués par des fonctionnalités natives de Windows, c'est ces fonctionnalités que j'utilise puisqu'elles existent.

@patricktoulon
Même question pourquoi passer par VBA (en exploitant une syntaxe VBS) pour lancer un script *.ps1 ?
Puisque par défaut PowerShell est installé sur les PC récents (et qu'on dispose de plus d'un éditeur PS : Windows PowerShell ISE)

Chacun fait au final ce qu'il veut, je remarquais simplement que peu d'entre nous (les répondants) signalent, suggèrent aux XLDnautes qu'on n'est pas obligé de passer par Excel et que Windows nous offrent des outils qui à mon sens sont parfois plus légitimes pour faire ce que le demandeur veut faire.

Et je le redis, ce n'est qu'une question (ou l'expression de mon opinion) mais nullement une critique des solutions postées dans ce fil.

Je souhaite de nouveau une bonne fin de journée.
 
Dernière édition:
@Staple1600
1° tout simplement par ce que vba le permet
2°par ce que c'est plutôt sympa d'avoir un pole pour piloter un travail et ses( à cotés)
en l’occurrence excel

imagine si on avait pas createobject ou même vba et toute ses fonctions (dites natives)dérivées du VB
ben il y aurait pas grand monde ici

perso je ne me pose pas la question si des outils plus appropriés existent
ça c'est c'est une réponse que chacun de nous doit y répondre en fonction de sa propre vision des choses

ce qui de ce fait et par conséquent rend cette question caduque au final

et pour finir de et par mon expérience personnelle au vue des transformation de windows et tout les possibilités qu'il offre avec ses additifs il semblerait que ça nous entraine a un conformisme (fait avec et comme ça)

d'ailleurs (par exemple) PQ qui est le fleuron de MS en terme de complément excel(voir même définitivement intégré aujourd'hui) ne va t il pas a l'encontre de ton point de vue
puisqu'il permet de gérer des choses et faire des choses qui n'ont rien avoir avec un tableur

si l'on avait raisonné de cette façon il y a 25 ans on travaillerait encore avec des macro4
et dieu sait que perso je me régale avec même encore aujourd'hui

et puis la diversité n'augmente t il pas le spectre du champ de vision de chaque individu si tant est qu'on se l'autorise soit même

j'arrête là j'ai l'impression d'être au boulot là
 
- 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