Autres Tests de diverses solution pour lister dans un dialog perso des fichiers en filtrant par expression et extension

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

patricktoulon

XLDnaute Barbatruc
Bonjour à tous
si il y a des âmes charitables qui voudraient bien tester ma pseudo boite de dialogue fichier avec filtre ca m'arrangerait
en fait je l'ai créée sous trois formae différente

1° la filedilogspecial1
avec un dir en ligne de commande lancée par wscript.shell(.excec) et récupérée par le stdout.readall
ce qui implique une apparition brève mais tout de même de la fenêtre dos

2° la filedilogspecial2
avec un dir en ligne de commande lancée par wscript.shell (.run)et récupérée dans un fichier text temporaire
ce qui implique que la fenêtre dos n'apparait pas puisque je hide la fenêtre

3° la filedilogspecial3
dans celle ci j'utilise un hersats de ma fonction FSOGOSUB de 2021 avec FSO

tout les argument sont optionnels
le choix du fichier se fait au double click
possibilité d'annuler

vous avez 3 module pour tester chaque version
si vous pouviez donc tester la testA4 , TestB4 , TestC4 qui sont selon moi les plus importantes
et me dire si la différence de temps d'apparition de la fenêtre avec la liste de fichier filtrée avec les arguments envoyés par les sub de testsest importante ou pas
voir même cela vous gène t il plus que ça (que la fenêtre dos apparaisse brièvement (pour la fildialoSpecial1) )?

merci aux testeurs 😉
après moult tests dans diverses situations la version 5 et celle qui a été retenu
 

Pièces jointes

Dernière édition:
Solution
bon après moults test dans diverses conditions pour la boites de dialog ce sera la petite dernière que j'ai un peu montré dans la vidéo
c'est pas la plus rapide mais

1° version 1 la méthode cmd Dir--> stdout readall ayant un problème de formatage et affichant la fenêtre de cmd vous l'avez compris de toute façon c'est la première a avoir été abandonnée

2° Version 2 méthode cmd dir --> fichier temporaire est acceptable mais selon l'occupation du pc elle peut varier su simple à X 7 a peu prés et elle exige forcement que au moins la destination du fichier soit autorisée pas simple sur pc pro voir même privé logué avec compte MS sur windows

3° version 3 FSO elle fonctionne très bien mais elle est plus lente que les autres mais je...
Re

Il y a aucune incohérence
Je ne fait que tester ton code et détaille (*) comment j'ai testé
C'est simplement tout à l'heure que j'ai pensé à regarder le contenu du fichier text

(*) en nommant depuis le début de mes tests, l'userform qui pose problème sur mon PC
à savoir : FilDialogSepcial2

On est bien d'accord que le fichier texte devrait contenir le résultat du dir, non ?
cmd /C Dir "C:\Users\XXX\Downloads\YYY\*.*.xlsx" /b /a-d > "C:\Users\XXX\desktop\temp_output.txt"

Or il est vide (suite au test que j'ai décrit dans le message#55)
 
re j'essaie a nouveau avec le dossier downloads
demo1.gif
 
Bonjour le fil

@patricktoulon
[A] Je viens de tester les 3 userforms en cochant Checkrecursif
(depuis VBE, => F5 )
=>FilDialogSepcial1
Affiche le nom du fichier dans ListBox1
Mais labelcount affiche 2 fichiers trouvés
=>FilDialogSepcial2
Toujours le même problème
=>FilDialogSepcial3
Affiche le nom du fichier dans ListBox1
Mais labelcount affiche 2 fichiers trouvés

J'ai fait le même test avec un seul fichier *.xlsm dans le dossier.
(et suppression du fichier *.xlsx précédent utilisé)
=> Même résultat pour les 3 trois tests qu'au point A

[B] en testant à partir du module
VB:
Const strPath As String = "C:\Users\XXX\Downloads\YYY"
Sub testB5()
    'rechercher les fichiers   avec extension "xlsx" avec récursivité
    MsgBox FilDialogSepcial2.File(strPath, Extension:="xlsx", cherche:=True, récursif:=True)
End Sub
Idem , le message MSG_LISTE_VIDE s'affiche.
 
Re

@patricktoulon
J'ai trouvé où le bât blessait(*) grâce à ce bon MSDOS 😉
Ton TempString initial était
cmd /C Dir "C:\Users\XXX\Downloads\YYY\*.*.xlsm" /b /a-d > "C:\Users\XXX\desktop\temp_output.txt"

En testant dans l'invite MSDOS, j'obtenais : Fichier introuvable
J'ai donc modifié comme suit et Eureka!
testMSDOS_PT.png

Ensuite j'ai modifié ton VBA ainsi
TempString = Replace("cmd /C Dir ""*****""" & Recurr & " /b /a-d > """ & tempFile & """", "*****", CStr(chemin) & Expression & Extension, 1, -1, vbTextCompare)
Et miracle 😉
TestOK.png

(*) avec mon PC et Office 365
 
@Staple1600
en fait c'est -2 pour le dernier vbcrlf
.List = Split(Mid(Liste, 1, Len(Liste) - 2), vbNewLine)

et enfin pour la version 3 Fso plutôt que de passer par une variable string que je coupe à la fin je passe par une variable array que je redim preserve tout au long de la boucle folder/ file
Pour afficher ce contenu, nous aurons besoin de votre consentement pour définir des cookies tiers.
Pour plus d'informations, consultez notre page sur les cookies.
 

Pièces jointes

Hello,
il me semble que dans les version 1 et 2 il y a un probléme de conversion OEM vers ANSI (les accents ne sont pas bien affichés) :
chercheFichiers1PT.png

Pour corriger ce problème , soit changer le CodePage avant de lancer la commande console ou soit faire la conversion OEM vers ANSI sur le texte récupéré.
Avec la version FSO il n'y a pas ce problème.
chercheFichiersFsoPT.png

Ami calmant, J.P
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour