Vérifier l'existence d'un Fichier avec *.*

Résolu
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 - 14 janv. 2009 à 15:18
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre 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

10 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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
3
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
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" 
0
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 2
14 janv. 2009 à 15:40
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
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
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

Amicalement
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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 
0
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 2
15 janv. 2009 à 07:46
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 !
0
cs_tulesais Messages postés 175 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 avril 2013 2
15 janv. 2009 à 14:36
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 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
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 ?

Amicalement
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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 
0
Rejoignez-nous