Je trouve pas l'erreur [Résolu]

Signaler
Messages postés
2
Date d'inscription
mardi 11 février 2014
Statut
Membre
Dernière intervention
13 février 2014
-
Messages postés
2
Date d'inscription
mardi 11 février 2014
Statut
Membre
Dernière intervention
13 février 2014
-
Bonjour,
Je m'appel Anthony est je doit créer un petit programme pour mon travail.
Je suis un débutant (je commence juste a utiliser le vb depuis quelque jour).
l'application servirait a supprimer les fichiers des dossier s'il dépasse une taille donnée.

voila le code que j'ai fait il fonction bien mais il ne peut être utiliser que pour mon travail.
je souhaiterai pourvoir l'installer sur n'importe qu'elle pc.
Voila mon premier code qui marche


code du formulaire:
Public Class Form1

Dim mavar As Object
Public vmarva As String
Dim list1 As String
Dim list2 As String
Dim list3 As String
Dim list4 As String
Dim list5 As String

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim _main_Dir As New IO.DirectoryInfo(Application.StartupPath)
For Each _Dir In _main_Dir.GetDirectories
mavar = _Dir
ListBox1.Items.Add(mavar)
Next

ListBox1.SetSelected(0, True)
list1 = ListBox1.SelectedItem.ToString
ListBox1.SetSelected(1, True)
list2 = ListBox1.SelectedItem.ToString
ListBox1.SetSelected(2, True)
list3 = ListBox1.SelectedItem.ToString
ListBox1.SetSelected(3, True)
list4 = ListBox1.SelectedItem.ToString
ListBox1.SetSelected(4, True)
list5 = ListBox1.SelectedItem.ToString

mavar = TailleDossier(Application.StartupPath)
If mavar > 31457280 Then 'equivalent a 30giga octé
Dim PATHDOSSIER As String = Application.StartupPath & "\" & list1
If System.IO.Directory.Exists(PATHDOSSIER) Then
For Each files As String In System.IO.Directory.GetFiles(PATHDOSSIER)
System.IO.File.Delete(files)
Next
Dim PATHDOSSIER2 As String = Application.StartupPath & "\" & list2
If System.IO.Directory.Exists(PATHDOSSIER2) Then
For Each files As String In System.IO.Directory.GetFiles(PATHDOSSIER2)
System.IO.File.Delete(files)
Next
Dim PATHDOSSIER3 As String = Application.StartupPath & "\" & list3
If System.IO.Directory.Exists(PATHDOSSIER3) Then
For Each files As String In System.IO.Directory.GetFiles(PATHDOSSIER3)
System.IO.File.Delete(files)
Next
Dim PATHDOSSIER4 As String = Application.StartupPath & "\" & list4
If System.IO.Directory.Exists(PATHDOSSIER4) Then
For Each files As String In System.IO.Directory.GetFiles(PATHDOSSIER4)
System.IO.File.Delete(files)
Next
Dim PATHDOSSIER5 As String = Application.StartupPath & "\" & list5
If System.IO.Directory.Exists(PATHDOSSIER5) Then
For Each files As String In System.IO.Directory.GetFiles(PATHDOSSIER5)
System.IO.File.Delete(files)
Next
'End
'System.IO.Directory.Delete(PATHDOSSIER)
End If
End If
End If
End If
End If
Else
'End
End If

End Sub

code du module
Module Module1
Function TailleDossier(Dossier)
Dim fso, d, f, s
fso = CreateObject("Scripting.FileSystemObject")

On Error GoTo trt_Erreur
If Len(Dossier) < 4 Then
d = fso.GetDrive(Dossier)
s = Format(d.TotalSize - d.AvailableSpace, "### ### ### ### ##0")
Else
f = fso.GetFolder(Dossier)
s = Format(f.Size, "### ### ### ### ##0")
End If
TailleDossier = s - 32768

Exit Function

trt_Erreur:

MsgBox("Lecteur ou chemin inconnu !")

End Function
End Module

est voila le code que j'essaye de faire mais je ne trouve pas l'erreur

Public Class Form2

Dim mavar As Object
Dim Nligne As Integer
Dim List As String
Dim Vnom As String

Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load

Dim _main_Dir As New IO.DirectoryInfo(Application.StartupPath)
For Each _Dir In _main_Dir.GetDirectories
mavar = _Dir
ListBox1.Items.Add(mavar)
Next

Nligne = ListBox1.Items.Count()
For i = 1 To Nligne
ListBox1.SetSelected(i, True)
Vnom = "list" & i
Vnom = ListBox1.SelectedItem.ToString
mavar = TailleDossier(Application.StartupPath)
Next
For j = 1 To Nligne

If mavar > 30000 Then
Dim pathd As String = Application.StartupPath & "\" & Vnom
If System.IO.Directory.Exists(pathd(j)) Then
For Each files As String In System.IO.Directory.GetFiles(pathd(j))
System.IO.File.Delete(files)
Next

End If
End If
Next
End Sub
End Class


merci de votre aide j'espère que je ne me suis pas tromper est que je suis bien aller dans le bon endroit sur le forum

je souhaite encore préciser que le code n'a pas été trouver comme sa sur le net,j'ai rechercher des bouts de code déjà existant que j'ai mis ensemble pour réaliser mon code

5 réponses

Messages postés
32368
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
9 mai 2021
346
Bonjour,

Nous montrer le code que tu essayes de faire c'est bien..
Nous dire ce qui ne fonctionne pas et les éventuels messages d'erreurs serait UN PLUS NON NEGLIGEABLE.



Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Bonjour

et ça marche.....
un module 2 form et un goto c'est un peu lourd

Je suis sur que tu peux faire plus simple

Je trouve pas l'erreur
à ton travail le pc est différent ?

l'application servirait a supprimer les fichiers des dossier s'il dépasse une taille donnée.

de tous les dossiers ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour,
J'ai au premier coup d'oeil des difficultés à comprendre :
- l'intérêt de calculer en boucle ce qui est invariable au sein de la boucle :
mavar = TailleDossier(Application.StartupPath)
- l'intérêt de la première de ces deux lignes successives :
Vnom = "list" & i
Vnom = ListBox1.SelectedItem.ToString
--
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
D'abord
31457280 Then 'equivalent a 30giga octé
31457280 = 30 * 2^20 = 30 Mega bytes
1 giga byte = 2^30
30 giga byte = 30 * 2^30

A tester avec précaution car les fichiers sont vraiment supprimer
il ne sont pas copier dans la corbeille

Private Sub DeletFilesSize(ByVal dir As String, ByVal sizeinbyte As Double)
Try
For Each file As String In Directory.GetFiles(dir)
Dim info As New FileInfo(file)
If info.Length > sizeinbyte Then
IO.File.Delete(file)
End If
Next
For Each SUBDIR As String In Directory.GetDirectories(dir)
DeletFilesSize(SUBDIR, sizeinbyte)
Next
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

End Sub

Supprime tous les fichiers de plus de 30 giga se trouvant dans
E et tous ses sub directories
DeletFilesSize("E:\", 30 * 2 ^ 30)
Messages postés
2
Date d'inscription
mardi 11 février 2014
Statut
Membre
Dernière intervention
13 février 2014

merci a tous j'ai continué a chercher est j'ai trouver voila je vous donne le code

Public Class controle


Dim mavar As Object
Dim Nligne As Integer
Dim List As String


Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

mavar = TailleDossier(Application.StartupPath) 'recuperer la taille du dossier dans une variable

If mavar > 31457280 Then 'equivalent a 30giga octé (comparaison)

'fonction pour ajouter les dossiers dans une listbox du formulaire
Dim _main_Dir As New IO.DirectoryInfo(Application.StartupPath)
For Each _Dir In _main_Dir.GetDirectories
mavar = _Dir
ListBox1.Items.Add(mavar) 'ajouter les nom des dossiers a la listbox
Next
'fin du code

Nligne = ListBox1.Items.Count() 'compter le nombre de ligne dans une listbox

'création d'un tableau avec pour limite le nombre de ligne -1
For i = 0 To Nligne - 1
ListBox1.SetSelected(i, True) 'selectionner dans une listbox les lighe une apres l'autre
List = ListBox1.SelectedItem.ToString 'ajouter dans la varaible list la selection de la listbox
Dim PATHDOSSIER As String = Application.StartupPath & "\" & List 'recuperer les chemins des dossier
If System.IO.Directory.Exists(PATHDOSSIER) Then 'controle s'il existe
'code pour suprimer les fichiers
For Each files As String In System.IO.Directory.GetFiles(PATHDOSSIER)
System.IO.File.Delete(files)
Next
'fin du code
End 'fermer le programme
End If
Next
End 'fermer le programme
End If
End Sub
End Class

merci encore de votre aide est oui j'ai pas l'habitude des forums je suivrais vos conseil pour les prochain message