Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    thomahh
    Invité(e)

    Par défaut Macro pour supprimer des fichiers

    Bonjour,

    Mon problème est le suivant :

    Je récupère dans mon fichier excel une liste de nom de fichier pdf.
    Ensuite, je veux supprimer parmi ces fichiers une certaine partie à partir de ma macro VBA.

    J'arrive à supprimer le fichier à partir du nom qui se situe en A1 avec ce programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Test2()
     
        Range("A1").Select
     
        Dim sNomFichier As String
        sNomFichier = "C:\Users\Thomas\Desktop\renommage de fichiers pdf\LOAD\" & Range("A1")
     
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFile(sNomFichier)
        f.Delete
     
     End Sub
    Je voudrais automatiser ce programme sur toute les cellules de la colonne A tant quelles sont non vides.


    Merci.
    Dernière modification par Invité ; 19/07/2012 à 05h34. Motif: Ajout des balises codes : Sélection du code + # dans la barre d'outils de la fenêtre de rédaction des messages, merci de relire les règles du forum

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    juin 2006
    Messages
    5 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : juin 2006
    Messages : 5 974
    Points : 12 769
    Points
    12 769

    Par défaut

    Salut, à adapter à ton contexte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Explicit
     
    Dim LastRow As Long
    Dim i As Long
     
        LastRow = Feuil1.Range("A" & Rows.Count).End(xlDown).Row
        For i = 1 To LastRow
            Kill Feuil1.Range("A" & i)
        Next i
    Solution moins définitive, les fichiers sont déplacés vers la corbeille, à adapter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Option Explicit
     
    Private Type SHFILEOPSTRUCT
        hwnd As Long
        wFunc As Long
        sFrom As String
        sTo As String
        fFlags As Integer
        fAnyOperationsAborted As Boolean
        hNameMappings As Long
        lpszProgressTitle As String
    End Type
     
    Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" _
                                             (ByRef lpFileOp As SHFILEOPSTRUCT) As Long
     
    Private Const FO_DELETE = &H3
    Private Const FOF_SILENT = &H4
    Private Const FOF_NOCONFIRMATION = &H10
    Private Const FOF_ALLOWUNDO = &H40
     
    Sub DelFichier()
    Dim oFilAPI As SHFILEOPSTRUCT
    Dim iRet As Long
    Dim sFichier As String
    Dim LastRow As Long
    Dim i As Long
     
        LastRow = Feuil1.Range("A" & Rows.Count).End(xlDown).Row
        For i = 1 To LastRow
            sFichier = Feuil1.Range("A" & i)
     
            With oFilAPI
                .wFunc = FO_DELETE
                .sFrom = sFichier
                .sTo = vbNullChar
                .fFlags = FOF_SILENT + FOF_NOCONFIRMATION + FOF_ALLOWUNDO
            End With
     
            iRet = SHFileOperation(oFilAPI)
        Next i
    End Sub
    Pensez à Voter, d'avance merci. @+ Philippe
    Balisez votre code après l'avoir indenté sous Excel (< 2013) via Smart Indenter
    Autres utilitaires : MZ Tools 8.0 VBA , 7Zip et Antidote

    Liste des Contributions : Manipulations des PDF via Excel / Acrobat / PDFCreator / xPDF

  3. #3
    thomahh
    Invité(e)

    Par défaut

    Salut ,

    Merci de votre aide.

    J'ai essayé les 2 codes, je n'arrive à en faire fonctionner aucun.

    J'ai essayé avec ce code ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub Test5()
     
    Dim LastRow As Long
    Dim i As Long
    LastRow = Range("A" & Rows.Count).End(xlDown).Row
    For i = 1 To LastRow
        Dim sNomFichier As String
        sNomFichier = "C:\Users\tliberti\Desktop\renommage de fichiers pdf\LOAD\" & Range("A" & i)
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFile(sNomFichier)
        f.Delete
     
       Next i
     
     End Sub

    ça me dit fichier introuvable.
    Dernière modification par AlainTech ; 21/07/2012 à 23h23. Motif: Fusion de 2 messages

  4. #4
    thomahh
    Invité(e)

    Par défaut Ok ça marche mais...

    Voici le code qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Test5()
     
    Dim LastRow As Long
    Dim i As Long
    LastRow = Range("A" & Rows.Count).End(xlDown).Row
    For i = 1 To LastRow
        Dim sNomFichier As String
        sNomFichier = "C:\Users\tliberti\Desktop\renommage de fichiers pdf\LOAD\" & Range("A" & i)
        Kill sNomFichier
     
     
       Next i
     
     End Sub

    Mais, après, ça me dit fichier introuvable. comment ne pas obtenir ce bug ?

  5. #5
    Rédacteur

    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    janvier 2010
    Messages
    8 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : janvier 2010
    Messages : 8 552
    Points : 20 178
    Points
    20 178
    Billets dans le blog
    8

    Par défaut

    Bonjour,
    Mais, après, ça me dit fichier introuvable. comment ne pas obtenir ce bug ?
    Ce n'est pas un bug, c'est un message d'erreur qui te signale qu'il est impossible de supprimer un fichier qui n'existe pas.
    Pour éviter ce message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     On Error Resume Next
     Kill "z:\tests\toto.xls"
     On Error GoTo 0
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  6. #6
    thomahh
    Invité(e)

    Par défaut YOUHOU !!

    OK, J 'AI REUSSI YOUHOU !!!


    MERCI À TOUS !

    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub Test5()
     
    Dim LastRow As Long
    Dim i As Long
    LastRow = Range("A" & Rows.Count).End(xlDown).Row
     
    For i = 1 To LastRow
     
        Dim sNomFichier As String
        sNomFichier = "C:\Users\tliberti\Desktop\renommage de fichiers pdf\LOAD\" & Range("A" & i)
        On Error Resume Next
        Kill sNomFichier
        If Err = 53 Then Exit Sub
       Next i
     
     End Sub

Discussions similaires

  1. [Toutes versions] Création Macro pour supprimer des lignes après tests conditionnels
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 26
    Dernier message: 14/01/2011, 17h00
  2. Réponses: 0
    Dernier message: 11/11/2010, 09h30
  3. Macro pour supprimer des sauts de page vide word 2007
    Par Sandrine1 dans le forum VBA Word
    Réponses: 6
    Dernier message: 09/11/2010, 22h38
  4. Réponses: 1
    Dernier message: 15/09/2006, 17h23
  5. Réponses: 45
    Dernier message: 04/05/2006, 02h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo