[déplacé VBS -> VB6] Supprimer un fichier à partir d'une listview [Résolu]

Messages postés
19
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
3 juillet 2009
- - Dernière réponse : Mayzz
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
- 3 juil. 2009 à 12:01
Bonjour,

Dans une appli excel/vba, dans une userform je liste :
1/une serie de repertoires dans une listbox
2/le contenu de chaque repertoire dans une listview ,après un clic sur un item de la listbox.

Je souhaiterais en selectionnant un item de la listview puis en cliquant sur un bouton, supprimer le fichier concerné de son repertoire.

Quelqu'un peut-il m'aider?

Merci
Afficher la suite 

11 réponses

Meilleure réponse
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
13
3
Merci
Oup's! pardon autant pour moi je me suis un peu mélanger les pinceaux entre vb6 et .Net ^^

If Not ListView1.SelectedItem Is Nothing then
   Dim Fichier As String 
   Fichier = ListView1.SelecedItem.Tag    
   KillFichier
End If

Tu peux aussi remplacer le Kill Par la méthode de zwyx comme ceci :

If Not ListView1.SelectedItem Is Nothing then
   Dim Fichier As String 
   Fichier = ListView1.SelecedItem.Tag    
   Dim FSO As Object
   Set FSO = CreateObject("Scripting.FileSystemObject")
   Dim File As Object
   File = FSO.GetFile (Fichier)
   File.Delete
   Set File = Nothing
   Set FSO = Nothing
End If

Ou encore en ajoutant le scrrun.dll aux références de ton projet

If Not ListView1.SelectedItem
Is Nothing then
   Dim Fichier
As String 
   Fichier = ListView1.SelecedItem.Tag    
   Dim FSO As New FileSystemObject
   Dim File As File
   File = FSO.GetFile (Fichier)
   File.Delete
   Set File = Nothing
   Set FSO = Nothing
End If

@+ Mayzz.
                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 134 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Mayzz
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
13
0
Merci
Bonjour,

Il faut stocker le chemin complet du fichier dans la propriété "Tag" de chaque Item de ton ListView lors de son remplissage.

Pour ce qui est de la supression tu peux placer un bouton nommé "Supprimer" sur ton userform, et placer le code suivat dans l'événement "click" :

If Not ListView1.SelectedItems Is Nothing then
   Dim Fichier As String 
   Fichier = ListView1.SelecedItems(0).Tag   
   Kill Fichier
End If

Attention ce code ne comporte pas de gestion des erreurs, si le fichier est en cours d'utilisation une erreur sera déclenché.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Commenter la réponse de Mayzz
Messages postés
152
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2016
0
Merci
Bonjour,

Je ne sais pas si c'est la partie qui te bloque, mais pour supprimer le fichier une fois que tu as son chemin complet, c'est comme ça:

Dim fsoObjetFichier As Object 'FileSystemOject
Dim hFichier As Object 'handle de fichier

Set fsoObjetFichier = CreateObject("Scripting.FileSystemObject")

Set hFichier = fsoObjetFichier.GetFile("C:\Documents and Settings\foobar.txt")

hFichier.Delete

Bon courage.
Commenter la réponse de zwyx
Messages postés
19
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
3 juillet 2009
0
Merci
Merci,

Je suis un autodidacte débutant alors je tatonne...
Mayzz, ça bloque avec listview1.selecteditems
Zwyx, je ne suis pas à l'aise avec les objets FSO

A suivre
Commenter la réponse de dimud
Messages postés
19
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
3 juillet 2009
0
Merci
Merci beaucoup, ça marche !!!
Commenter la réponse de dimud
Messages postés
19
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
3 juillet 2009
0
Merci
La première méthode fonctionne bien, il faut que je rajoute une verification sur l'ouverture du fichier
Sur la méthode de Zwyx, ainsi que sur la troisième méthodes, apparait un pb avec File = FSO.GetFile (Fichier)
Commenter la réponse de dimud
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
13
0
Merci
PS: La 3ème solution te permet d'y voir plus clair si tu n'aime pas utilisé le FileSystemObject, elle te permet de charger la référence Microsoft Scripting Runtime en mémoire dans l'IDE de Visual Basic, l'avantage c'est que les propriétés et les méthodes du FileSystemObject seront visibles depuis l'intellisense.
Biensur, ce n'est possible que depuis vb6/vba et non vbscript (Attention quand tu post d'ailleurs tu es dans la mauvaise catégorie pour toi Langages dérivés/VBA et non VBS)

@+ Mayzz.
                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Commenter la réponse de Mayzz
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
13
0
Merci
ainsi que sur la troisième méthodes, apparait un pb avec File = FSO.GetFile (Fichier) <= As tu charger le Microsoft Scripting Runtime dans les références de ton projet ???

"Ou encore en ajoutant le scrrun.dll aux références de ton projet" <= j'ai pas été très explicite... scrrun.dll c'est Microsoft Scripting Runtimedans la liste des références.

If Not ListView1.SelectedItem
Is Nothing then
   Dim Fichier
As String 
   Fichier = ListView1.SelecedItem.Tag    
   Dim FSO As New FileSystemObject
   Dim File As File
   File = FSO.GetFile (Fichier)
   File.Delete
   Set File = Nothing
   Set FSO = Nothing
End If

Pour gérer les erreurs tu peux faire :

On Error Goto ErrDel

If Not ListView1.SelectedItem Is Nothing then
   Dim Fichier As String 
   Fichier = ListView1.SelecedItem.Tag    
   Dim FSO As New FileSystemObject
   Dim File As File
   File = FSO.GetFile (Fichier)
   File.Delete
   Set File = Nothing
   Set FSO = Nothing
End If

Exit Sub

ErrDel:
Msgbox "Impossible de supprimer le fichier, celui-ci est peut être en cour d'utilisation !", vbExclamation, "Suppression Impossible"
Set File = Nothing
Set Fso = Nothing

@+ Mayzz.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Commenter la réponse de Mayzz
Messages postés
19
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
3 juillet 2009
0
Merci
Merci !!!

Désolé pour l'erreur de catégorie, de l'inattention surement

Peut être à une autre fois
Dimud
Commenter la réponse de dimud
Messages postés
19
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
3 juillet 2009
0
Merci
Bonjour,

J'ai trouvé la cause du pb, il faut lire :
Set File = FSO.GetFile (Fichier)et non
File = FSO.GetFile (Fichier)
J'avais bien scrrun.dll dans ma bibliothèque.

Je me rapproche de la perfection, il subsiste un pb :
si dans listview j'ai plusieur lignes et que je clic sur le bouton de suppression, la première ligne disparait, même si elle n'est pas selectionnée.
Fichier = ListView1.SelecedItem.Tag correspont par defaut au nom du dernier fichier trouvé dans le repertoire et non au fait de selectionner la ligne.

Que puis-je faire ?

Dimud
Commenter la réponse de dimud
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
13
0
Merci
Oui effectivement,

Désolé j'ai perdu mes reflèxes de développeur vb6... Ca fé un bail que je suis passé au .Net

++

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Commenter la réponse de Mayzz