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

Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
11 avril 2013
- - Dernière réponse : PCPT
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 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 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de PCPT
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Dernière intervention
5 avril 2013
0
Merci
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
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
11 avril 2013
0
Merci
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
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Dernière intervention
5 avril 2013
0
Merci
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
Messages postés
578
Date d'inscription
vendredi 26 septembre 2008
Dernière intervention
20 novembre 2010
0
Merci
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
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
0
Merci
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
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
11 avril 2013
0
Merci
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
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
11 avril 2013
0
Merci
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
Messages postés
578
Date d'inscription
vendredi 26 septembre 2008
Dernière intervention
20 novembre 2010
0
Merci
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
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
0
Merci
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.