PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 15 janv. 2009 à 11:44
tu ne peux pas faire de récursivité avec le dir classique
fais toi un tableau des fichiers du premier repertoire (une première boucle)
et tu peux comparer dans une 2e boucle dans le 2e répertoire chaque élément du tableau
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 14 janv. 2009 à 15:26
Bonjour,
je n'arrive pas à gérer l'étoile dans le FileExists ni dans le Dir()
Que racontes-tu là ?
La fonction Dir accepte les caractères génériques ("jokers") !
Relis-la (dans ton aide en ligne) ainsi que les exemples qui l'accompagne puis montre-nous comment tu as tenté de l'utiliser !
Ceci étant dit, une recherche avec caractères génériques et Dir te conduira à la découverte du premier fichier en "harmonie" (et donc pas forcément un fichier précis), à moins d'utiliser une boucle (exemple dans ton aide en ligne) et d'envoyer dans uyne listbox tous les résultats "en harmonie"
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 14 janv. 2009 à 16:49
Il va falloir être plus clair si tu veux une réponse précise !
Tu cherches finalement dans deux répertoires ?
Le 2ème est-il un sous-répertoire du 1er ou un répertoire à part entière totalement distinct ?
Etc... etc...
Et cherches-tu un seul fichier (dont tu connais alors le nom exact) ou tous les fichiers dont le nom comporte une chaîne de caractères spécifiée ?
etc... etc...
Une solution te sera proposée, certes, mais encore faut-t-il (comme toujours en développement) que ton problème soit clair et que ta question n'en soulève pas d'autres !
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 14 janv. 2009 à 19:05
Bonjour,
>>Etant déjà dans une boucle dir, puis je en utilisé un autre : non, donc il faut lire tout le répertoire :
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(repertoire)
Set fc = f.Files For Each f in fc
if Instr(1,f.name, "visualbas") > 0 Then Msgbox "gagné !"
Next
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 15 janv. 2009 à 01:37
salut,
[../auteur/OROHENA/1483575.aspx Orohena]
-> pas testé mais en VB6 (et VBA aussi d'ailleurs) on évitera au possible (et c'est TOUJOURS POSSIBLE) FSO ; qui est conçu pour le SCRIPT et qui consomme des mille et des cents..
[../auteur/TULESAIS/287076.aspx tulesais]
-> en effet pas de dir pendant un dir. en même temps je ne comprends pas ton utilisation.
forcément ce n'est pas une fonction récursive
et d'après ton utilisation, tu connais apparemment le nom du dossier
alors juste
sFile = dir(chemin_complet_avec_antislash & "visualbas*",vbsystem or vbhidden)
sans boucle ni autre...
non?
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 15 janv. 2009 à 19:04
Bonjour
on évitera au possible (et c'est TOUJOURS POSSIBLE) FSO ; qui est conçu pour le SCRIPT et qui consomme des mille et des cents.. ok sur le principe d'éviter FSO en VBA, mais comment s'en passer ? en natif, je ne vois pas trop ; tu penses aux api ?
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 15 janv. 2009 à 19:49
pas toujours, çà dépend de ce que tu as besoin
essentiellement tout de même oui
tout ce que FSO fait, on peut le faire "plus rapidement" (même s'il faut plus de lignes de code)
ton code vbs (rappel : non testé)
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(repertoire)
Set fc = f.Files
For Each f in fc
if Instr(1,f.name, "visualbas") > 0 Then Msgbox "gagné !"
Next
le même en vb6/vba (pas testé non plus, je le saisie ici directement)
'collection pour pas m'embêter et pour reproduire l'esthétique à la fso....
dim oColl as new collection, s$, v as variant
s =dir("c:", vbsystem or vbhidden)
do
ocoll.add s
s=dir
loop until lenb(s)=0
for each v in ocoll
if v like
"visualbas*" Then Msgbox "gagné !"
next v
set v = nothing
set ocoll = nothing
ce n'est que mon montrer le principe...., ici pas d'API, pas de FSO, valide VB6 et VBA
(nb : pas de vérification dans les sous-dossiers, ce code n'est pas l'exemple de la question posée)
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp