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

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

  • boite de dialog recherche de fichier V1 2 3 4 5 6.xlsm
    151.1 KB · Affichages: 1
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...

Staple1600

XLDnaute Barbatruc
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)
 

patricktoulon

XLDnaute Barbatruc
re j'essaie a nouveau avec le dossier downloads
demo1.gif
 

Staple1600

XLDnaute Barbatruc
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.
 

Staple1600

XLDnaute Barbatruc
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
 

patricktoulon

XLDnaute Barbatruc
re
j'ai pas du mettre la bonne version
j'ai aussi amélioré la version 3 avec FSO encore plus rapide et on peut partir du disque au depart
pour le disk c'est lettre +":" sans le slach
 

Pièces jointes

  • boite de dialog recherche de fichier with part of name and or extension.xlsm
    56.7 KB · Affichages: 1

patricktoulon

XLDnaute Barbatruc
@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
 

Pièces jointes

  • boite de dialog recherche de fichier with part of name and or extension.xlsm
    60.1 KB · Affichages: 0

jurassic pork

XLDnaute Occasionnel
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
 

Statistiques des forums

Discussions
315 083
Messages
2 116 038
Membres
112 640
dernier inscrit
rachidqadmir