Instancier un filelistbox et un dirlistbox sans placer un objet sur une form

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 217 fois - Téléchargée 29 fois

Contenu du snippet

comment utiliser un dirlistbox sans le creer sur une form?
lorsque je lance le code ci dessous (qui devrai me donner la taille d'un repertoire)

j'obtient le message d'erraur suivant
object variable or with bloc variable not set

sur
dire.path = path

et la je suis bloque car je ne sais pas quoi faire... des idee? des solution ?
merci bcp de votre aide

Source / Exemple :


Private Function taillepath(ByVal path As String) As Double
Dim dire As DirListBox
dire.path = path
Dim file As FileListBox
file.path = path
Dim liste As ListBox
liste.Clear
taillepath = 0
Dim i As Integer
'dossier
i = 0
Do While i < dire.ListCount
    liste.AddItem dire.List(i)
    i = i + 1
    Loop
Do While liste.ListCount
    'fichier
    i = 0
    Do While i < File1.ListCount
        taillepath = taillepath + FileLen(File1.path & "\" & File1.List(i))
        i = i + 1
        Loop
    dire.path = liste.List(0)
    file.path = liste.List(0)
    liste.RemoveItem (0)
    i = 0
    Do While i < dire.ListCount
        liste.AddItem dire.List(i)
        i = i + 1
        Loop
    Loop
End Function

Conclusion :


ben heu... ca marche pas... je demande de l'aide qui pourra servir a d'autre personne...

A voir également

Ajouter un commentaire

Commentaires

Messages postés
112
Date d'inscription
vendredi 27 octobre 2000
Statut
Membre
Dernière intervention
26 janvier 2011
1
mecri bcp :-)...
Messages postés
550
Date d'inscription
vendredi 5 janvier 2001
Statut
Membre
Dernière intervention
23 septembre 2006

salut

en ce qui concerne la taille du fichier, c'est du au fait que le long VB est signé, or celui de la fonction ne l'est pas. voici le remede :

Taille=Filelen(fichier)
If Taille < 0 Then Taille = 2 ^ 32 + Taille

++
Messages postés
112
Date d'inscription
vendredi 27 octobre 2000
Statut
Membre
Dernière intervention
26 janvier 2011
1
ben c que je c pas comment se servir de la fonction dir... etc...
pour la solution au probleme, voici le code qui fonctionne...

Private Function taillepath(ByVal path As String) As Double
On Error Resume Next 'il y a des fichier foireux qui tourne sur le pc
Dim dire As DirListBox
Set dire = Controls.Add("VB.DirListBox", "Dir10")
dire.path = path
Dim file As FileListBox
Set file = Controls.Add("VB.FileListBox", "File10")
file.path = path
Dim liste As ListBox
Set liste = Controls.Add("VB.ListBox", "List10")
liste.Clear
taillepath = 0
Dim i As Integer
i = 0

liste.AddItem path

Do While liste.ListCount
'fichier
dire.path = liste.List(0)
dire.Refresh
file.path = liste.List(0)
file.Refresh
'z

liste.RemoveItem (0)
i = 0
Do While i < dire.ListCount
liste.AddItem dire.List(i)
i = i + 1
Loop
i = 0
Do While i < file.ListCount
taillepath = taillepath + FileLen(file.path & "" & file.List(i))
i = i + 1
Loop
Loop

Controls.Remove dire
Controls.Remove file
Controls.Remove liste
End Function


si vous savez la modifier en remplacant avec des autre fonction (dir et compagnie) je suis preneur

en passant, ma fonction est limitee par la taille des fichier (3go ca passe en negatif) qq connaitrait pas un type de donne plus "etendu" du genre qui compte de 0 a 2 tera (ca laisse de la marge pour les fichier lol)
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
22
Une alternative sans en être vraiment une !!! Pourquoi utiliser un bazooka pour tuer un moustique, alors que la paume de la main suffit !!
Messages postés
550
Date d'inscription
vendredi 5 janvier 2001
Statut
Membre
Dernière intervention
23 septembre 2006

:D

c vrai dir serait bien mieux adapte, mais c'est une alternative :)

+
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.