Vérifier l'existence d'un Fichier avec *.* [Résolu]

cs_tulesais 177 Messages postés mercredi 2 juin 2004Date d'inscription 11 avril 2013 Dernière intervention - 14 janv. 2009 à 15:18 - Dernière réponse : PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention
- 15 janv. 2009 à 19:49
Bonjour tout le monde !!!

peut on rechercher un fichier sans connaître le début ni la fin du nom ?

Exemple, je souhaite savoir si le fichier 'visualbas*' est présent dans un répertoire !

Malheureusement, je n'arrive pas à gérer l'étoile dans le FileExists ni dans le Dir() ... snif ...

Auriez vous une réponse à m'apporter ???

Merci d'avance pour votre aide très très très précieuse !!!!!!

TuLeSais
Afficher la suite 

10 réponses

Répondre au sujet
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 15 janv. 2009 à 11:44
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 14 janv. 2009 à 15:26
0
Utile
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" 
Commenter la réponse de jmf0
cs_tulesais 177 Messages postés mercredi 2 juin 2004Date d'inscription 11 avril 2013 Dernière intervention - 14 janv. 2009 à 15:40
0
Utile
oups ... je me suis trompé ! ce n'est pas avec dir mais getattr !

Etant déjà dans une boucle dir, puis je en utilisé un autre ???

Fichier = Dir(RepOne)
Do While Fichier <> ""

   vérifier ici la présence du fichier (avec *) dans un RepTwo

   Fichier = dir()
loop
Commenter la réponse de cs_tulesais
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 14 janv. 2009 à 16:49
0
Utile
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 !
Commenter la réponse de jmf0
cs_Orohena 578 Messages postés vendredi 26 septembre 2008Date d'inscription 20 novembre 2010 Dernière intervention - 14 janv. 2009 à 19:05
0
Utile
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

Amicalement
Commenter la réponse de cs_Orohena
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 15 janv. 2009 à 01:37
0
Utile
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 
Commenter la réponse de PCPT
cs_tulesais 177 Messages postés mercredi 2 juin 2004Date d'inscription 11 avril 2013 Dernière intervention - 15 janv. 2009 à 07:46
0
Utile
Bonjour tout le monde et merci beaucoup pour votre investissement dans mon problème !

je vais essayer d'être clair ...

j'ai un premier répertoire contenant des Fichiers et je souhaiterais savoir si le corps de ces Fichiers est présent dans un second répertoire.

j'ai donc la boucle suivante :

Fichier = Dir(RepOne)
Do While Fichier <> ""

   ' ici je dois tester si le corps du fichier est présent dans le second répertoire !!!

   Fichier = dir()
loop

Merci d'avance pour votre aide et vraiment désolé de ne pas avoir été assez clair !
Commenter la réponse de cs_tulesais
cs_tulesais 177 Messages postés mercredi 2 juin 2004Date d'inscription 11 avril 2013 Dernière intervention - 15 janv. 2009 à 14:36
0
Utile
pas bête !

dommage qu'il n'y ait pas d'autre solution plus rapide !

En tout cas merci à tous pour votre aide et merci beaucoup PCPT pour cette réponse 'de contournement' :-)

Merci !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Commenter la réponse de cs_tulesais
cs_Orohena 578 Messages postés vendredi 26 septembre 2008Date d'inscription 20 novembre 2010 Dernière intervention - 15 janv. 2009 à 19:04
0
Utile
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 ?

Amicalement
Commenter la réponse de cs_Orohena
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 15 janv. 2009 à 19:49
0
Utile
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 
Commenter la réponse de PCPT

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.