Autres tester ma pseudo boite de dialogue fichier avec filtre

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 ;)
 

Pièces jointes

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

patricktoulon

XLDnaute Barbatruc
bonsoir @Valtrase pour la version 1 je suis parti de ton idée de base
je lui ai ajouté la recursivité (optionnelle) ainsi que les partie de nom et extension optionnelles
1728242203472.png


il s'avère que j'avais ca mais avec redirection du resultat mais dans un fichier texte
et à ma grande surprise la version avec redirection dans fichier texte est plus rapide chez moi que la version avec récupération dans stdout.readall
et pour le fun j'ai fait un exemple avec un ersatz de ma fonction FSOGOSUB ultra simplifiée qui me permet d'accélérer la recherche en zappant des boucles inutiles
 

Staple1600

XLDnaute Barbatruc
Re

@patricktoulon
Bizarrement je peux quand même exécuter ce code sur le PC du boulot
Sub test()
CreateObject("WScript.Shell").Popup "Hello!", 5, "Title"
End Sub
Ce serait donc juste le .Run qui serait bloqué ?

PS: Sur mon PC boulot, le lecteur C est masqué, le %temp% pas accessible, je peux créer de fichier par code dans Mes Documents etc...
J'oubliais le filtrage web
Bref, vivement la retraite ;)

Sinon, personne ne reproduit ce j'expliquais dans le message#45 ?
Je viens de retester
Et le phénomène se produit toujours.
 

laurent950

XLDnaute Barbatruc
Bonjour @Staple1600, @patricktoulon

ce que j'ai compris !

ce système me plait bien @patricktoulon et pourquoi pas l'adopter, je vais aussi essayer de comprendre comment cela fonctionne pour l'utiliser par la suite. merci Patrick

L'erreur "Permission refusée" que tu rencontres provient probablement de restrictions d'accès au répertoire C:* sous Windows. Par défaut, les utilisateurs ordinaires n'ont pas toujours les droits pour créer ou modifier des fichiers directement à la racine du disque système (**C:*).

@patricktoulon
Sur PC boulot, pas de test possible, sécurité oblige
Je ne peux pas utiliser Wscript.Shell.Run
Bloqué par l'antivirus
et je ne peux pas créer de fichier sur le bureau par script: Permission refusée.

Solutions possibles :

1. Utiliser un chemin de répertoire où tu as les permissions :

Essaye d'enregistrer le fichier dans un répertoire où tu as des droits d'écriture, comme ton dossier Documents ou Bureau.

Par exemple, tu peux changer la ligne de code pour enregistrer le fichier dans ton dossier Documents :

TonDossier = Créer un dossier (Nouveau dossier) et appelle celui-ci (TonDossier)

VB:
Sub test2()
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    ' Exemple : Créer un fichier texte dans le dossier Documents
    Dim file As Object
    Set file = fso.CreateTextFile("C:\TonDossier\example.txt", True)
    file.WriteLine "Hello World!"
    file.Close
End Sub

Où se trouve physiquement scrun.dll ?

Sur la plupart des systèmes Windows, scrun.dll est situé dans le dossier système de Windows, généralement ici :
  • C:\Windows\System32\ (pour les systèmes 32 bits)
  • C:\Windows\SysWOW64\ (pour les systèmes 64 bits)
Tu n'as pas besoin de t'en soucier directement lorsque tu écris du code VBA ou VBScript, car l'environnement de développement ou l'exécution du script se charge de charger la DLL quand elle est nécessaire.

' ============================================================


La différence entre Wscript.Shell.Run et scrun.dll repose sur leurs rôles et fonctionnalités distincts dans les scripts et l'exécution sous Windows.

1. Wscript.Shell.Run :​

Wscript.Shell est un objet fourni par la bibliothèque Windows Script Host (WSH), utilisé pour interagir avec le système d'exploitation Windows à travers des scripts (par exemple, en VBScript ou VBA). La méthode .Run permet de lancer des commandes système, des programmes ou des fichiers exécutables directement depuis un script.

Exemples d'utilisation de Wscript.Shell.Run :​

  • Lancer une application ou exécuter une commande dans une fenêtre de commande (cmd.exe).
  • Exécuter un fichier batch ou un autre script.
Voici un exemple en VBA :

vba
Copier le code
Code:
Sub TestRun()

    Dim shell As Object
    Set shell = CreateObject("WScript.Shell")
 
    ' Exécute un programme (ex : notepad.exe)
    shell.Run "notepad.exe"

End Sub

Dans cet exemple, Wscript.Shell.Run lance le programme Notepad via une commande.

Caractéristiques principales de Wscript.Shell.Run :​

  • Usage : Lancer des processus ou des commandes externes.
  • Retour : Tu peux spécifier si la commande s'exécute de manière synchrone (attendre la fin du programme) ou asynchrone (continuer le script sans attendre).
  • Contexte : Il est souvent utilisé dans des scripts pour exécuter des programmes, ouvrir des fichiers ou gérer des tâches système.

2. scrun.dll (Microsoft Script Runtime) :​

scrun.dll est une bibliothèque d'exécution de scripts de Microsoft Script Runtime. Contrairement à Wscript.Shell.Run, cette bibliothèque fournit des objets système pour manipuler des fichiers, des dossiers, des collections, et des dictionnaires dans des scripts VBA ou VBScript.

Le plus commun des objets fournis par scrun.dll est FileSystemObject, qui est utilisé pour interagir avec le système de fichiers (créer, lire, supprimer des fichiers et dossiers).

Exemple d'utilisation de scrun.dll (FileSystemObject) en VBA :​

vba
Copier le code
Code:
Sub TestFileSystemObject()

    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
 
    ' Créer un fichier texte dans le répertoire Documents
    Dim file As Object
    Set file = fso.CreateTextFile("C:\Users\TonNomUtilisateur\Documents\example.txt", True)
    file.WriteLine "Hello World!"
    file.Close

End Sub

Caractéristiques principales de scrun.dll :​

  • Usage : Manipuler des fichiers, des dossiers, des collections, et des dictionnaires via des scripts.
  • Contenu : Fournit des objets comme FileSystemObject, Dictionary, TextStream pour lire, écrire et gérer des fichiers et répertoires.
  • Contexte : Il est utilisé pour gérer des tâches liées au système de fichiers dans des scripts VBA, VBScript ou dans des macros.

Comparaison résumée :​

FonctionnalitéWscript.Shell.Runscrun.dll (Microsoft Script Runtime)
Rôle principalExécuter des commandes système ou des programmesManipuler des fichiers, dossiers, collections
Bibliothèque associéeWindows Script Host (WSH)Microsoft Script Runtime (scrun.dll)
Méthodes principales.RunFileSystemObject, Dictionary, TextStream
Exemples d'utilisationLancer un programme externeCréer ou lire des fichiers dans un script
Contexte d'utilisationLancer des processus ou commandes systèmeGérer des tâches liées au système de fichiers
En résumé, Wscript.Shell.Run est principalement utilisé pour exécuter des programmes ou des commandes, tandis que scrun.dll (via des objets comme FileSystemObject) est utilisé pour gérer des fichiers et des répertoires dans des scripts.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@laurent950
Merci pour ces explications mais je sais déjà tout cela 🤔
Tu aurais du comprendre en lisant ceci
Sur PC boulot, pas de test possible, sécurité oblige
Que ce PC est fourni par mon employeur et que dessus tourne un Windows bridé par la DSN.
(Direction des Services Numériques)
Et c'est pareil, pour tous mes collègues.
Nous ne nous loggons pas en tant qu'administrateur.
Je suis donc tributaire de l'outil qu'on me fournit pour bosser

Dans le message#51, j'informais simplement @patricktoulon que je n'avais pu testé son fichier au boulot
(et je résumais pourquoi)

Tu me parles du lecteur C alors que je précisais
le lecteur C est masqué
J'aurais du précisé, masqué dans l'explorateur Windows.
Je ne vois que le lecteur D (dans lequel est mon profil)
 

Membres actuellement en ligne

Statistiques des forums

Discussions
314 121
Messages
2 106 129
Membres
109 495
dernier inscrit
jerome bonneau