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

Résolu
dimud Messages postés 19 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 3 juillet 2009 - 2 juil. 2009 à 15:19
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 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

11 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
2 juil. 2009 à 17:38
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. <
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
2 juil. 2009 à 15:57
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. <
0
zwyx Messages postés 146 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 mars 2016
2 juil. 2009 à 16:01
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.
0
dimud Messages postés 19 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 3 juillet 2009
2 juil. 2009 à 16:56
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dimud Messages postés 19 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 3 juillet 2009
2 juil. 2009 à 17:51
Merci beaucoup, ça marche !!!
0
dimud Messages postés 19 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 3 juillet 2009
2 juil. 2009 à 18:14
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)
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
2 juil. 2009 à 18:19
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. <
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
2 juil. 2009 à 18:27
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. <
0
dimud Messages postés 19 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 3 juillet 2009
2 juil. 2009 à 18:31
Merci !!!

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

Peut être à une autre fois
Dimud
0
dimud Messages postés 19 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 3 juillet 2009
3 juil. 2009 à 09:24
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
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
3 juil. 2009 à 12:01
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. <
0
Rejoignez-nous