Progress Bar (krn)

kataragon Messages postés 5 Date d'inscription dimanche 5 septembre 2004 Statut Membre Dernière intervention 5 septembre 2004 - 5 sept. 2004 à 17:22
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 5 sept. 2004 à 18:09
J'aimerai insérer une barre de progression dans le code ci-dessous pour voir l'avancement de la copie des fichiers.

Merci kataragon

Private Sub OUI_Click()

'# Repertoires source et destination
Dim Source As String: Source = "E:\source"
Dim Dest As String: Dest = CurDir$ & "\destination"

'# Fichier *.*
Dim FileName As String
FileName = Dir$(Source & "*.*", 1)

'# Pour tous les fichiers du repertoire source
While FileName <> ""
'# Une erreur surviens si le fichier de Destination n'existe pas
'# On le copie donc

On Error Resume Next

If FileLen(Dest & FileName) < FileLen(Source & FileName) Then
FileCopy Source & FileName, Dest & FileName
End If
'# Fichier suivant
FileName = Dir
Wend

Unload Form

End Sub

4 réponses

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
5 sept. 2004 à 17:31
Pour utiliser une progresse bar de 0 a 100% il faut connaitre d'avance la valeur ninimal et maximal ! dans ton code la valeur maximal est inconnu. Pour faire ce que tu veux recupere en premier la liste des fichiers puis copie ensuite comme cela tu aura le nombre de fichier a copier.

@+

E.B.
0
kataragon Messages postés 5 Date d'inscription dimanche 5 septembre 2004 Statut Membre Dernière intervention 5 septembre 2004
5 sept. 2004 à 17:42
OK merci

mais je procède comment
J'ajoute un filelist , j'envoie tout les fichier dans un listbox ... :shy)
0
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
5 sept. 2004 à 18:07
non tu retape ton code de maniere a ce que chaque fichier soit stocker dans une collection par exemple :

dim Col as new collection
FileName = Dir$(Source & "*.*", 1)
Do Until FileName = ""
If FileLen(Dest & FileName) < FileLen(Source & FileName) Then
Col.Add Source & FileName
End If
FileName = Dir
Wend

puis ensuite tu parcour la collection et tu fait ta copie

@+

E.B.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 sept. 2004 à 18:09
Pas la peine, tu fais une boucle sur tout tes fichiers, avec un :
While Fic <> ""

iNbrFichier = iNbrFichier+1
Fic = dir

Wend

Comme cà, à la fin de ta boucle, tu a le nombre de fichier => le maximum pour ton progress bar.
Mais si tu veux une progression plus significative lors de la copie d'un fichier, je te conseille d'aller voir ma source nommée Défilement copie dossier : tu verra comment prendre en compte la taille de fichiers lors d'une copie. (car avec ta méthode, si tu a un fichier de 100 Mo, et 99 fichiers de 1 Ko, ca risque de faire une progression bizare...)

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
Rejoignez-nous