IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

VBA Access Discussion :

Supprimer des fichiers anciens en vba


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Par défaut Supprimer des fichiers anciens en vba
    Bonjour à tous,

    Je cherche à supprimer des fichiers
    Dans le code ci-dessous j'obtiens un message d'erreur

    "Boucle sans Do"
    Qu'est-ce qui ne va pas avec mon code ?
    Quelqu'un peut-il m'aider ?

    Merci à tous pour l'aide


    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
    Public Function supprim()
     
    Dim filename As String
     Dim rep As String
     Dim fichierasupprimer As String
     rep = "P:\Gestion_RNI_Fichiers_Sauverardés"
     
    filename = Dir(rep & " \*.xlsx ")
     Do While filename <> " "
     
        fichierasupprimer = rep & "\" & "*.xlsx"
        If FileDate < Now Then
     
        Kill fichierasupprimer
     Loop
     
     
    End Function

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonsoir,

    A priori, c'est parce que tu écris ton IF sur DEUX lignes sans mettre un END IF, ce qui fait que VBA pense que le LOOP est pour le IF.
    Il faudrait faire :
    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
    Public Function supprim()
     
    Dim filename As String
    Dim rep As String
    Dim fichierasupprimer As String
    rep = "P:\Gestion_RNI_Fichiers_Sauverardés"
     
    filename = Dir(rep & " \*.xlsx ")
    Do While filename <> " "
     
         fichierasupprimer = rep & "\" & "*.xlsx"
         If FileDate < Now Then
              Kill fichierasupprimer
         End If
    Loop
    End Function
    Pour éviter cela, indentes-correctement tes codes.
    De plus, sur le forum, mets tes codes dans les balises correspondantes pour plus de lisibilité : Tu le sélectionnes et tu cliques sur #. Et c'est tout.

    Cordialement,

  3. #3
    Membre averti
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut suite..
    Merci de l'aide, ça fonctionne bien.
    Cependant tous les fichiers sont supprimés.
    Je souhaite supprimer les fichiers qui ont plus de 7 jours.

    J'ai essayé avec

    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If FileDate < Now -7 Then
              Kill fichierasupprimer
         End If

    et ça supprime tous les fichiers.
    Quelle est mon erreur ?







    Citation Envoyé par madefemere Voir le message
    Bonsoir,

    A priori, c'est parce que tu écris ton IF sur DEUX lignes sans mettre un END IF, ce qui fait que VBA pense que le LOOP est pour le IF.
    Il faudrait faire :
    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
    Public Function supprim()
     
    Dim filename As String
    Dim rep As String
    Dim fichierasupprimer As String
    rep = "P:\Gestion_RNI_Fichiers_Sauverardés"
     
    filename = Dir(rep & " \*.xlsx ")
    Do While filename <> " "
     
         fichierasupprimer = rep & "\" & "*.xlsx"
         If FileDate < Now Then
              Kill fichierasupprimer
         End If
    Loop
    End Function
    Pour éviter cela, indentes-correctement tes codes.
    De plus, sur le forum, mets tes codes dans les balises correspondantes pour plus de lisibilité : Tu le sélectionnes et tu cliques sur #. Et c'est tout.

    Cordialement,

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonsoir,

    T'es sûre que t'es sous VBA Access parce que je n'arrive pas à utiliser la fonction FileDate que tu as ??
    De ce fait, je te propose ce 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
    Public Sub PetitPoucet(Chemin As String, Modele As String)
      Dim FSO As Scripting.FileSystemObject
      Dim sRep As Scripting.Folder
      Dim sFichier As Scripting.File
      Dim i As Integer
      Set FSO = New Scripting.FileSystemObject
      Set sRep = FSO.GetFolder(Chemin)
        'Boucle sur les fichiers
        For Each sFichier In sRep.Files
          If (sFichier.Name Like Modele) And (sFichier.DateLastAccessed < DateAdd("d", -7, Date)) Then
               Debug.Print "resultat : ", i, sFichier.Name, sFichier.DateLastAccessed
               'Kill Chemin & "\" & sFichier.Name
          End If
        Next sFichier
    End Sub
    qui peut être appelé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function executer()
    Call PetitPoucet(CurrentProject.Path, "*.jpg")
    End Function
    Code piqué ICI d'après un exemple de Claude Leloup (que je salue s'il passe).

    Il ne faut pas oublier de faire référence à Microsoft Scripting Runtime comme indiqué dans la discussion.

    Bonne continutaion

Discussions similaires

  1. [langage] j´arrive pas a supprimer des fichiers
    Par makohsarah dans le forum Langage
    Réponses: 3
    Dernier message: 30/10/2006, 14h10
  2. Réponses: 7
    Dernier message: 30/06/2006, 14h45
  3. Réponses: 45
    Dernier message: 04/05/2006, 01h10
  4. Supprimer des fichiers blancs
    Par melmouj dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 05/12/2005, 14h38
  5. Comment supprimer des fichiers en nombre ?
    Par Didier L dans le forum API, COM et SDKs
    Réponses: 13
    Dernier message: 25/01/2005, 16h01

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