Macro pour supprimer un fichier Excel

Bonjour à tous,

Je cherche a faire une macro, pour trouver et supprimer un fichier on va dire "test.xlsm" qui se trouve dans C:\User et ses sous dossiers.

J'avais trouvé une macro mais elle ne fait que la suppression dans un dossier spécifique.

J'ai excel 2007

Je sais pas si c'est possible

Voilà si quelqu'un pouvais m'aider ça serait super.

Bonjour,

L'instruction dont tu as besoin est : Kill

Bien sûr, il te faut le chemin complet et le nom du fichier à supprimer ...

En espèrant que cela t'aide ...

Bonjour,

Oui avec cette commande, mais c'est pas suffisant, je veux qu'il trouve si c'est possible ce fichier mais dans tous C:\Users et ses sous dossiers.

Kill "C:\Users\essai.xlsm"

Re,

Donc si je comprends bien ... ta question n'est pas comment supprimer un fichier ... puisque tu sais le faire ...

Mais comment faire une boucle sur un répertoire et ses sous-répertoires ...

Est-ce-que c'est bien cela ...???

OKAZOU .... https://forum.excel-pratique.com/posting.php?mode=quote&f=2&p=440537

oui, c'est ça mais je l'ai pourtant bien écris dans le post supprimer un fichier on va dire "test.xlsm" qui se trouve dans C:\User et ses sous dossiers. J'allais pas mettre tous ça dans le sujet du titre ça rentre pas

Re,

Je te recommande d'étudier la macro de ThauThème ...

Bonne Continuation ...

Je sais pas si code me conviendra, car il cherche surtout des fichiers avec des extensions, je vais pas l'essayer je voudrais pas supprimer tous mes fichiers xlsm.

Ce que je veux surtout c'est trouver un fichier excel nommé tant "essai.xlsm" dans C:\Users sans connaitre forcement le nom des autres sous dossiers, comme le ferais Windows une recherche dans tous C:\Users une fois trouvé il supprime ce fichier.

Le code de ThauThème ne recherche que sur 1 niveau. Et je suis pas assez bon en programmation pour savoir le modifier.

En faite non

Content que tu aies trouvé une solution à ton problème initial ...

Je n'ai rien trouvé lol

Que signifie ton message ..???

En fait non ...

Il y avait le code de h2so4 plus bas mais la macro, si j'ai compris, elle cherche des fichiers dans tous c:\Users a hauteur de 10000 fichiers avec extension txt copie tous ses fichiers et va les mettre dans un nouveau dossier nommé srtest mais ne les supprime pas, j'ai essayé mais ça plante à la ligne "For Each f In fold.Files" j'ai activé la ref microsoft scripting runtime pourtant, ça serait presque ça ce que je voudrais sauf je veux pas de nouveau dossier et au lieu de copier je veux supprimer. Et j'imagine qu'en remplaçant ça "*.txt" par juste le fichier que je cherche "mon fichier.xlsm" ça doit pouvoir fonctionner aussi. Je précise que je fais sous Excel 2007

Sub listffolder()
    Dim a(1 To 10000) 'max 10000 fichiers sélectionnés
 sr = "c:\Users\srtest\" 'répertoire de destination (doit exister)
 rep = "c:\Users" ' répertoire à examiner
 listfolder rep, "*.txt", a, n
if n=0 then msgbox " pas de fichier trouvé":exit sub
   Range("A1").Resize(n) = Application.Transpose(a)
    For i = 1 To 10000
    If a(i) = "" Then Exit For
    s = InStrRev(a(i), "\")
    nf = Left(a(i), s - 1) & ".txt"
    s = InStrRev(nf, "\")
    nf = Mid(nf, s + 1)
    Cells(i, 2) = nf
    FileCopy a(i), sr & nf
    Next i
End Sub

Sub listfolder(folder, filtre, ByRef a, ByRef n)

    Set fold = CreateObject("Scripting.FileSystemObject").GetFolder(folder)
    For Each f In fold.SubFolders
        If Right(f, 1) <> "\" Then listfolder f & "\", filtre, a, n Else listfolder f, filtre, a, n
    Next
    For Each f In fold.Files
        If Right(f, 4) Like filtre Then
            n = n + 1
            a(n) = folder & f.Name
        End If
    Next
End Sub

Re,

Je t'ai conseillé la macro de ThauThème ... parce qu'elle est commentée ...

Avant de supprimer un fichier ou un autre ... tu peux la tester :

Sub MacroThauThème()
Dim CI As String        'définit le Chemin d'accès du dossier Initial
Dim SF As Object        'déclare la variable SF (Système de Fichiers)
Dim DI As Object        'déclare la variable DI (Dossier Initial)
Dim I As Integer        'déclare la variable I (Incrément)
Dim F As Object         'déclare la variable F (Fichier)
Dim TF()                'déclare la variable TF (Tableau des Fichiers)
Dim SD As Object        'déclare la variable SD (Sous-Dossiers)

CI = "C:\Users\"                                    'définit le chemin du dossier initial (à adapter) ''''''''''''''''''''
Set SF = CreateObject("Scripting.FileSystemObject") 'définit le système de fichier SF
Set DI = SF.GetFolder(CI)                           'définit le dossier initial
I = 1                                               'initialise la variable I
For Each F In DI.Files                              'boucle sur tous les fichiers F du dossier intial DI
    If Right(F.Name, 4) = "xlsm" Then               'condition : si les 3 derniers caractères du nom du fichier F sont "xlsm"
        ReDim Preserve TF(1 To 2, 1 To I)           'redimensionne le tableau des fichiers TF (2 lignes, I colonnes)
        TF(1, I) = DI.Name                          'récupère le nom du dossier dans la ligne 1
        TF(2, I) = F.Name                           'récupère le nom du fichier dans la ligne 2
        I = I + 1                                   'incrémente I (ajoute une colonne au tableau de fichiers TF)
    End If                                          'fin de la condition
Next F                                              'prochain fichier de la boucle
For Each SD In DI.SubFolders                        'boucle 1 : sur tous les sous-dossiers du dossier initial DI
    For Each F In SD.Files                          'boucle 2 : sur tous les fichiers du sous-dossier
        If Right(F.Name, 4) = "xlsm" Then           'condition : si les 3 derniers caractères du nom du fichier F sont "xlsm"
            ReDim Preserve TF(1 To 2, 1 To I)       'redimensionne le tableau des fichiers TF (2 lignes, I colonnes)
            TF(1, I) = DI.Name & "\" & SD.Name      'récupère le nom du sous-dossier dans la ligne 1
            TF(2, I) = F.Name                       'récupère le nom du fichier dans la ligne 2
            I = I + 1                               'incrémente I (ajoute une colonne au tableau de fichiers TF)
        End If                                      'fin de la condition
    Next F                                          'prochain fichier de la boucle 2
Next SD                                             'prochain sous-dossier de la boucle 1
If I > 1 Then                                       'condition : si au moins un fichier a été trouvé
    'renvoie dans la cellule A1 redimensionnée (autant de lignes que TF as de colonne, 2 colonnes) le tableau TF transposé
    Range("A1").Resize(UBound(TF, 2), UBound(TF, 1)).Value = Application.Transpose(TF)
End If                                              'fin de la condition
End Sub

En espèrant que cela t'aide ...

Il faut activer la Ref microsoft scripting runtime ou c'est pas nécessaire ? Et elle fait quoi en gros cette macro ? Je l'avais essayer mais il y a avait un plantage aussi, pareil "For Each F In SD.Files" et je met extension bidon txts par exemple 4 lettre

Re,

1. Pas besoin de Références ...

2. Dans un fichier totalement vierge ... elle te fournira la liste de tes fichiers dont l'extension est xlsm

Ça plante ici For Each F In SD.Files

Et avec cette ligne je cherche un nom de fichier avec son extension

ça doit dire extension avec 4 lettres mais on n'a pas le nom du fichier, j'en veux que un pas tous

 If Right(F.Name, 4) = "txts" Then 

Tu me file des macros mais moi j'y connais rien comment tu veux que je change quoi que ce soit

Si je devais mettre une echelle de 1 a 10, 10 étant le type balaise en VBA je dirais que je suis a 0.5

re,

Après avoir vérifié sur ton ordinateur ...

que tu as correctement adapté la première ligne ...

CI = "C:\Users\"

Peux-tu avoir la gentillesse de poster ton code ... qui plante ...

Le code que j'ai essayé celui que t'as mis juste en changeant xlsm par txts pour essayer , j'ai crée un fichier texte avec cette extension bidon et ça plante ici mais même avec la vrai extension ça plante pareil.

For Each F In SD.Files

Au risque de me répéter ... pourrais-tu avoir la gentillesse de tester le code initial ....

simplement en adaptant la première ligne du chemin ...

Tu parles du quel parce qu'il y en a eu plusieurs ?

Rechercher des sujets similaires à "macro supprimer fichier"