Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1063 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  suppression fichier avec macro VB

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

suppression fichier avec macro VB

n°2253343
minimoack
Posté le 16-03-2015 à 10:57:58  profilanswer
 

Bonjour à tous !
 
J'ai fait ce petit code qui me permettrait de supprimer des fichiers en entrant en paramètre le chemin du dossier et l'extension genre *.doc :  
 

Code :
  1. Public Function DetruireLesFichiers(ByVal PublicationFolder As String, ByVal PatternList As String) As Long
  2. Dim chemin As String
  3. chemin = PublicationFolder & "\" & PatternList
  4. If ExisteFichier(chemin) Then
  5. '    SetAttr chemin, vbNormal
  6.     Kill (chemin)
  7. Else
  8.   MsgBox vbCrLf & "Aucun fichier correspondant aux patterns : " & PatternList & " n 'a été trouvé" & vbCrLf
  9.   MsgBox vbCrLf & chemin
  10. End If
  11. Application.StatusBar = False
  12. DetruireLesFichiersDeLaPublicationDeConfigurationCorrespondantAuxPattens = 0
  13. End Function


 
Le problème c'est que j'aimerais supprimer entre autre les fichiers Thumbs.db, mais il passe systématiquement dans le else... j'ai fait le test avec *.htm et ça fonctionne... comment faire pour les thumbs.db ?

Message cité 1 fois
Message édité par minimoack le 16-03-2015 à 10:58:58
mood
Publicité
Posté le 16-03-2015 à 10:57:58  profilanswer
 

n°2253345
minimoack
Posté le 16-03-2015 à 11:28:57  profilanswer
 

Code :
  1. SetAttr chemin, vbNormal


 
ça j'ai essayé, et ça ne marche pas. Il ne trouve pas les fichiers cachés...

n°2253398
lasnoufle
La seule et unique!
Posté le 16-03-2015 à 20:59:19  profilanswer
 

Salut

minimoack a écrit :

il passe systématiquement dans le else


... Du coup ton "probleme" il est dans la fonction ExisteFichier. C'est du VB standard en francais ou bien c'est une fonction perso? Si c'est une fonction perso, copies le code ici si tu veux de l'aide, sans ca personne ne peut rien pour toi. Si c'est du VB, vas voir la doc (mais Google n'a pas l'air de connaitre de toutes facons).

minimoack a écrit :

Code :
  1. SetAttr chemin, vbNormal


ça j'ai essayé, et ça ne marche pas. Il ne trouve pas les fichiers cachés...


Si on se base sur le premier post, tu as mis ca dans le then alors que tu dis toi meme qu'il n'y passe pas, et tu esperais que ca allait changer quelque chose?
 [:madame_de_galles:5]


---------------
C'était vraiment très intéressant.
n°2253414
minimoack
Posté le 17-03-2015 à 07:38:11  profilanswer
 

Bah en fait je me suis mal exprimée, ça marche pour des fichiers normaux (htm, doc ...), mais pas les thumbs.db qui sont cachés et qui sont des fichiers systèmes. Du coup j'ai essayé avec un fichier normal (non système, .htm) que j'ai mis en "caché", et ça ne marchait pas...
Donc ma fonction ExisteFichier est bonne, mais il n'arrive pas à trouver les fichiers cachés, et à modifier leurs attributs...
 
Edit : merci pour ta réponse  :jap:


Message édité par minimoack le 17-03-2015 à 07:38:32
n°2253416
minimoack
Posté le 17-03-2015 à 08:24:11  profilanswer
 

J'ai essayé :  
 

Code :
  1. Dim chemin As String
  2.     Dim chemDir As String
  3.    
  4.     chemin = Replace(PublicationFolder, "\", "/" )
  5.    
  6.     chemDir = Dir(chemin, vbSystem And vbHidden)
  7.    
  8.     chemin = Replace(PublicationFolder, "/", "\" )
  9.     chemin = chemin & "\" & PatternList
  10.        
  11.     If ExisteFichier(chemin) Then
  12.     '    ListeFichiers chemin, vbSystem + vbHidden
  13.     '    SetAttr chemin, vbNormal
  14.         Kill (chemin)
  15.     Else
  16.       MsgBox vbCrLf & "Aucun fichier correspondant aux patterns : " & PatternList & " n 'a été trouvé" & vbCrLf
  17.     End If


 
Mais je ne dois pas utiliser Dir correctement... ça ne fonctionne pas non plus...  
J'ai utilisé les replace parce que sans, chemDir était vide...


Message édité par minimoack le 17-03-2015 à 08:24:29
n°2253444
minimoack
Posté le 17-03-2015 à 13:59:15  profilanswer
 

Bon j'ai bien avancé ...  
Voilà ce que j'ai fait, et ça fonctionne :  
 

Code :
  1. Dim chemDir As String
  2.    
  3. 'On récupère le nom du fichier avec l'extension précisée en paramètre, tout en regardant dans les fichiers cachés et systèmes
  4. chemDir = Dir(PublicationFolder & "\" & PatternList, vbSystem + vbHidden)
  5. 'On vérifie qu'il existe
  6. If chemDir <> "" Then
  7.         Do
  8.             'On vérifie qu'il existe de nouveau, pour les traitements internes à la boucle
  9.             If chemDir <> "" Then
  10.                 'Puis on modifie ses attributs. On le transforme en fichier normal plutôt que caché pour pouvoir le supprimer
  11.                 SetAttr PublicationFolder & "\" & chemDir, vbNormal
  12.                 Kill (PublicationFolder & "\" & chemDir)
  13.                 MsgBox vbCrLf & "Le fichier " & chemDir & " a été supprimé !" & vbCrLf
  14.             End If
  15.             'On effectue de nouveau le Dir pour voir s'il reste des fichiers de ce type ou non dans le dossier.
  16.             chemDir = Dir(PublicationFolder & "\" & PatternList, vbSystem + vbHidden)
  17.         Loop While (chemDir <> "" )
  18. Else
  19.         MsgBox vbCrLf & "Aucun fichier correspondant aux patterns : " & PatternList & " n 'a été trouvé" & vbCrLf
  20. End If


 
Est-ce que quelqu'un aurait maintenant une idée pour que lorsque que je sélectionne le dossier 1, qui contient des fichiers et d'autres dossiers, qu'il fasse le traitement dans dossier 1, puis quand fini il regarde dans dossier 2 ect ...  
 
exemple :  
 
Dossier1
          thumbs.db
          pic1.jpg
          Dossier2
                    thumbs.db
                    pic2.jpg
                    Dossier3
                              thumbs.dn
                              pic3.jpg
                    Dossier4
                              thumbs.dn
                              pic4.jpg
 
Je veux supprimer tous les thumbs en une seule fois, donc je sélectionne Dossier1 et il fait le traitement tout seul ?
Je suis en train d'essayer dans un else dans mon do while pour l'instant mais je galere..


Message édité par minimoack le 17-03-2015 à 14:19:38
n°2253445
minimoack
Posté le 17-03-2015 à 14:18:35  profilanswer
 

Voici ce que je suis en train de faire :  

Code :
  1. Dim chemDir As String
  2. Dim chemin As String
  3.    
  4. 'On récupère le nom du fichier avec l'extension précisée en paramètre, tout en regardant dans les fichiers cachés et systèmes
  5. chemDir = Dir(PublicationFolder & "\" & PatternList, vbSystem + vbHidden)
  6. 'On vérifie qu'il existe
  7. If chemDir <> "" Then
  8.         Do
  9.             'On vérifie qu'il existe de nouveau, pour les traitements internes à la boucle
  10.             If chemDir <> "" Then
  11.                 'Puis on modifie ses attributs. On le transforme en fichier normal plutôt que caché pour pouvoir le supprimer
  12.                 SetAttr PublicationFolder & "\" & chemDir, vbNormal
  13.                 Kill (PublicationFolder & "\" & chemDir)
  14.                 MsgBox vbCrLf & "Le fichier " & chemDir & " a été supprimé !" & vbCrLf
  15.             Else
  16.                 chemin = Dir(PublicationFolder, vbDirectory)
  17.                 If chemin <> "." And chemin <> ".." Then
  18.                     If (GetAttr(PublicationFolder & chemin) And vbDirectory) = vbDirectory Then
  19.                         Do
  20.                             chemDir = Dir(chemin & "\" & PatternList, vbSystem + vbHidden)
  21.                             'On vérifie qu'il existe de nouveau, pour les traitements internes à la boucle
  22.                             If chemDir <> "" Then
  23.                                 'Puis on modifie ses attributs. On le transforme en fichier normal plutôt que caché pour pouvoir le supprimer
  24.                                 SetAttr PublicationFolder & "\" & chemin & "\" & chemDir, vbNormal
  25.                                 Kill (PublicationFolder & "\" & chemin & "\" & chemDir)
  26.                                 MsgBox vbCrLf & "Le fichier " & chemDir & " a été supprimé !" & vbCrLf
  27.                             End If
  28.                     End If
  29.                 End If
  30.                 chemin = Dir
  31.             End If
  32.            
  33.             'On effectue de nouveau le Dir pour voir s'il reste des fichiers de ce type ou non dans le dossier.
  34.             chemDir = Dir(PublicationFolder & "\" & PatternList, vbSystem + vbHidden)
  35.            
  36.         Loop While (chemDir <> "" )
  37. Else
  38.         MsgBox vbCrLf & "Aucun fichier correspondant aux patterns : " & PatternList & " n 'a été trouvé" & vbCrLf
  39. End If


 
J'ai l'impression que je vais droit dans le mur...  :pfff:  

n°2253448
kiki29
Posté le 17-03-2015 à 15:04:06  profilanswer
 

Salut, effectivement le syndrome usine à gaz ( ... à gags) n'est pas loin. Regarde ici : http://excel.developpez.com/telech [...] un-dossier et adapte à ton contexte, sinon il y a aussi FSO pour cela.


Message édité par kiki29 le 17-03-2015 à 15:15:46
n°2253449
minimoack
Posté le 17-03-2015 à 15:08:01  profilanswer
 

Merci je vais regarder :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  suppression fichier avec macro VB

 

Sujets relatifs
Comparer Bdd à fichier txtProbleme de macro
macro excel de verificationGestion d'un fichier .csv
Suppression des fichiers Thumbs avec phpRecherche d'un mot dans un fichier
[Excel 2010] Macro pour copier des graphiques dans Word[Excel] Macro copie de fichiers .tsv
[Powershell] Recherche fichier à partir d'un csvProgramme en VB Multicam
Plus de sujets relatifs à : suppression fichier avec macro VB


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR