Question sur Application.FileSearch

  • Initiateur de la discussion Thomas®
  • Date de début
T

Thomas®

Guest
Bonsoir le forum,

j'ai fait une macro qui recherche des fichiers dans windows.

pour ce faire j'ai utilisé le code suivant :

Application.FileSearch.NewSearch
Application.FileSearch.LookIn = ou
Application.FileSearch.Filename = quoi
Application.FileSearch.SearchSubFolders = True

cela fonctionne sans problème (je n'ai pas mis tout le code lol)
ma question est :

comme il ce peut que la recherche soit plus ou moins longue et afin que l'utilisateur n'ai pas l'impression qu'excel soit planté.

j'avais pensé utiliser un progressbar (mais deja je par avec un andicap car j'ai excel 97 :sick: )

mais grace à une demo de Thierry :
Lien supprimé

Mon problème est que je ne connais pas la fin de ma boucle puisque celle ci n'est connu qu'une fois le traitement terminé!!

Application.FileSearch.FoundFiles.Count (et là j'ai mon nombre)

est il possble d'avoir le nombre dans un label durant la recherche ?

D'avance merci
Thomas®
 
T

Thomas®

Guest
Bonsoir MichelXld, le forum,

Merci pour ce lien, je l'avais deja vu mais c'est gentil et c'est une solution.

mais dans mon cas j'aimerais avoir qqchose de representatif.
alors je sais un progressebar sans fin n'est pas possible mais est il possible de savoir le nombre de fichier trouvé au fur à mesure dans un label ??

D'avance merci
Thomas®
 

dg62

XLDnaute Barbatruc
Bonsoir Thomas, Michel


je suis confronté actuellement au meme probleme.
on connait le nombre de fichiers trouvés uniquement à la fin du traitement. Il n'y a pas de boucle.

La demo de Thierry nest pas utilisable car le temps de traitement est variable en fonction du nombre de fichiers.

L'ideal serait de lancer une action qui tournerait pendant le traitement et qu'on stopperait juste apres le filesfound.count.

j'ai pensé pour mon problème personnel a faire appel à l' API et de lancer un fichier wav pendant le traitement.

j'en suis la actuellement.
 
T

Thomas®

Guest
Bonsoir dg62, MichelXls, le forum

Dans ton cas dg62 la progressbar en gif ne te va pas?

moi je voudrais que quand je lance le fichier au lieu d'avoir

dans mon label 3700 fichiers trouvé je voudrai

1 puis 2 puis ... .. . . .. 3700

c'est fichier sont en mémoir même si l'on ne l'exploite pas

(exemple je peux faire une recherche et ne prendre que le nombre trouvé. Pour autant le nom de ces fichiers est en mémoir et peut être demandé avec une simple ligne de code avec le nombre lui correspondant)

je ne vois pas pourquoi faudrait t'il attendre que le traitement soit fini pour acceder à ces infos??
 
T

Thomas®

Guest
re,

Merci

dans ce cas rien n'est possible :silly: j'ai plus qu'a mettre un postiche de bar pour faire beau :ermm:

je suis deg sinon tu fais comment pour ton fichier wav?

tu utilise l'OCX windows media player??

Merci
Thomas®
 

dg62

XLDnaute Barbatruc
re

avec les fonctions API
il est est possible de lancer un fichier wav pendant le traitement et de le stopper juste au moment de récupérer le nombre de fichiers trouvés.
Histoire de faire patienter.

je dois experimenter ce we.
 

MichelXld

XLDnaute Barbatruc
rebonsoir Thomas , bonsoir Didier

avez vous essayé quelque chose du style :

Code:
...
With Application.FileSearch
.NewSearch
.LookIn = 'C:\\Documents and Settings\\michel\\dossier\\general\\excel'
.Filename = '*.*'
.SearchSubFolders = True
.Execute

ProgressBar1.Max = .FoundFiles.Count

For j = 1 To .FoundFiles.Count
Label1 = j
'ou
ProgressBar1.Value = J
'
'la suite de ma macro
'
Next j
End With
...


Didier , pour jouer une séquence musicale pendant le traitement de la procedure , tu pourrais utiliser la macro proposée dans ce lien

Lien supprimé


Code:
Option Explicit
Dim Wmp As WindowsMediaPlayer
'necessite d'activer la reference Microsoft Media Player
'michelxld le 11.05.2005
'pour le forum [URL]https://www.excel-downloads.com/[/URL]

Sub jouerMediaPlayer()
    
Set Wmp = CreateObject('WMPlayer.OCX.7')
Wmp.URL = 'C:\\Documents and Settings\\michel\\dossier\\monFichier.mid'
Wmp.Controls.Play
    
End Sub

Sub arreterMediaPlayer()
If Wmp Is Nothing Then Exit Sub
Wmp.Controls.stop
End Sub


bonne soiree
MichelXld
 

dg62

XLDnaute Barbatruc
Bonjour Le Forum, Michel, Thomas


MerCi Michel pour tes explications

dans le 1er cas pour la progessBar, elle ne s'affiche qu'apres le execute, et le temps d'attente le plus long est justement pendant cette phase.

Par contre je n'avais pas encore pensé à utiliser le with !


je vais tester la deuxieme procedure pour l'intermède musical.

merci et bonne journée
 

Discussions similaires

Réponses
2
Affichages
581

Statistiques des forums

Discussions
313 090
Messages
2 095 173
Membres
106 200
dernier inscrit
OCNAM