Taille repertoire d'un disque

mbelha Messages postés 12 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 4 octobre 2004 - 16 août 2004 à 16:26
mbelha Messages postés 12 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 4 octobre 2004 - 7 oct. 2004 à 15:42
Comme simplement fair un scan de tout un disk pour voir la taille des repertoires principaux?

Merci d'avance

12 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
16 août 2004 à 17:30
Salut,
Il y a +sieurs exemples sur le site, il suffit de taper taille répertoire ou taille dossier et tu pourras choisir.

Personnellement, j'utilise le code suivant. A toi de l'adapter :

On utilise cette function comme ça :

msgbox TailleDossier(lettre du lecteur) ' ex c, c: ou c:\
ou
msgbox TailleDossier(chemin du dossier) 'ex c:\windows ou c:\windows\

Pour les chemins réseau ("\\serveur\........." g pas testé mais je pense que ça doit marcher ou qu'on peut adapter.

Function TailleDossier(Dossier)
  Dim fso, d, f, s
  Set fso = CreateObject("Scripting.FileSystemObject")
  
  On Error GoTo trt_Erreur
  If Len(Dossier) < 4 Then
  Set d = fso.GetDrive(Dossier)
  s = d.DriveLetter & " utilise " & Format(d.TotalSize - d.AvailableSpace, "### ### ### ### ##0") & " octets."
  Else
  Set f = fso.GetFolder(Dossier)
  s = UCase(f.Name) & " utilise " & Format(f.Size, "### ### ### ### ##0") & " octets."
  End If
  TailleDossier = s
  
Exit Function

trt_Erreur:

MsgBox "Lecteur ou chemin inconnu !"
   
End Function


Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
0
mbelha Messages postés 12 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 4 octobre 2004
17 août 2004 à 08:33
Enfin un code qui marche!
J'ai passer ma journee hier a essayer de trouver dans des forum un code avant de poser ma question.
J'ai essyer celui-ci c marche bien comment fair maintenant pour qu'il scan tou le disk dur, j'ai bo cherche dans le forum je ne voie rien de tres claire clair...l'ideal serais qui scan tout les repetoire pour l'espace disk mais qu'il me donne uniquement les principaux...
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
17 août 2004 à 10:54
Salut,

Un exemple simple alors :

Tu mets une listbox (list1 sur une form et tu essaies ça.
Ca listera les répertoires racine.
Si tu enlève l'apostrophe devant la ligne en commentaire
('Recherche_Dossier Chemin & sf.Name & ""), ca listera tous les répertoires du disque.

Après, c à toi de choisir les répertoires que tu appelles principaux.

Dim fso As Object

Private Sub Form_Load()
Dim Racine

Racine = "c:"

  Set fso = CreateObject("Scripting.FileSystemObject")
  
  Recherche_Dossier (Racine)
  
  Set fso = Nothing
  
End Sub

Sub Recherche_Dossier(Chemin As String)
Dim f, sf

  Set f = fso.GetFolder(Chemin)
  
  For Each sf In f.SubFolders
    List1.AddItem Chemin & sf.Name & " = " & Format(sf.Size, "### ### ### ### ##0") & " octets"
    'Recherche_Dossier Chemin & sf.Name & ""
  Next

End Sub

Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
0
mbelha Messages postés 12 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 4 octobre 2004
17 août 2004 à 15:17
Merci pour t'on code, jai fais un copy/past dans une form a l'execution j'ai:

Erreur d'execution 424
Un object et requis

C quoi pourquoi c marche pas?
0

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

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
17 août 2004 à 15:35
Ben, je ne vois qu'une chose, à la place de Dim fso As Object, tu mets Dim fso ou alors tu mets Dim fso As FileSystemObject (et tu ajoutes ds projet/références "Microsoft Scripting Runtime"). de toutes façon il faut que dim fso .... soit dans la section général de ta form.

Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
0
mbelha Messages postés 12 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 4 octobre 2004
17 août 2004 à 16:19
Toujour meme erreur . Le problem semble venir du List1.addItem c qui et bizar c que si je fait un List1additem "toto" je le même message d'erreur. A tu une ideé y a t'il besoin d'une declaration special pour cette command?

Merci d'avance
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
17 août 2004 à 16:45
Si tu as posé un controle listbox sur ta form et que tu lui donnes le nom "List1" ça devrait marcher.
Sinon, tu remplaces List1.AddItem par msgbox mais tu vas cliquer sur ok autant de fois que tu as de répertoires :big)

Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
0
mbelha Messages postés 12 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 4 octobre 2004
18 août 2004 à 08:25
Canislupus t un chef. me rest plus qua truver le moyen de stiker ca dans un fichier TXT puis trouver le moyen de l'envoyer par email...

Merci de ton aide precieuce dans mes premier pas...;)
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
18 août 2004 à 17:33
Pour stocker dans un fichier texte, tu transformes juste le code précédent comme ça :

Dim fso
Dim NumFic As Integer

Private Sub Form_Load()
Dim Racine

Racine = "c:"

Set fso = CreateObject("Scripting.FileSystemObject")

NumFic = FreeFile
Open "c:\temp\Taille_Repertoires.txt" For Output As #NumFic
Recherche_Dossier (Racine)
Close #NumFic

Set fso = Nothing

End Sub

Sub Recherche_Dossier(Chemin As String)
Dim f, sf

Set f = fso.GetFolder(Chemin)

For Each sf In f.SubFolders
Print #NumFic, Chemin & sf.Name & " = " & Format(sf.Size, "### ### ### ### ##0") & " octets"
Recherche_Dossier Chemin & sf.Name & ""
Next

Set f = Nothing

End Sub


et dans "c:\temp\Taille_Repertoires.txt" tu auras tout. Bien sûr, tu peux mettre un autre chemin et nom du txt.

Pour l'envoi par e-mail, il y à plein d'exemples sur le site, tape "envoi piece jointe" dans la zone de recherche du site.

Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
0
mbelha Messages postés 12 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 4 octobre 2004
19 août 2004 à 15:00
Super c marche. Encore une question y a t 'il en moyen d'aligner les chiffre sure la droite pour une meilleur visibiliter? j'ai bo chercher dans le forum "Aligement text" je voi rien qui correspond. Pour l'email je cherche...
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
19 août 2004 à 15:52
L'alignement, c autre chose, ça ne peut être possible qu'avec l'utilisation d'une police dite non-proportionnelle comme "Courier" ou "Courier New". Pour un fichier .txt, heureusement c'est ce qui est utilisé. Dans ce cas, tu peux remplacer la ligne :

Print #NumFic, Chemin & sf.Name & " = " & Format(sf.Size, "### ### ### ### ##0") & " octets"

par :

Print #NumFic, Chemin & sf.Name; Tab(30); " = " & Format(sf.Size, "@@@ @@@ @@@ @@@ @@@") & " octets"

Attention, Tab(30) veux dire que la suite est écrite à partir de la 30ème colonne (30ème caractère). Si la taille de la chaîne Chemin & sf.Name est égale ou supérieure à 30, ça sera écrit sur la ligne suivante. Bien sûr, tu peux modifier la valeur 30 et mettre plus ou moins.

Enfin, le principe est là, tu adaptes à tes besoins.

Pour l'envoi d'e-mail automatique, je sais faire mais pas encore très bien avec une pièce jointe.

Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
0
mbelha Messages postés 12 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 4 octobre 2004
7 oct. 2004 à 15:42
Oui toujour moi, ca avance un peti pas mais ca avance...

Comment simplement je peut metre sf.Name et sf.Size dans un tableau pour faire un trie pour avoir les répertoires en desenden.

Merci
0
Rejoignez-nous