cs_kurky
Messages postés111Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention27 avril 2010
-
2 sept. 2005 à 09:07
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 2019
-
2 sept. 2005 à 16:01
Bonjours,
J'ai un problème lors de la détection de fichiers. Ma fonction me détecte bien mes fichiers lorsque je lui passe le nom exact du fichier. Hors j'ai également besoin de l'utiliser dans un cas ou je ne connais qu'une partie du nom (pour des fichiers temporaires commencant par "tmp"). Mais lorsque je passe le nom du fichier "tmp*.*", il ne me trouve rien.
Voici le code :
Function FileExists(ByRef sFile As String) As Boolean
On Error GoTo ErrExp
FileExists ((GetAttr(sFile) And vbDirectory) 0)
ErrExp:
If Err.Number <> 0 Then
FileExists = False
Else
FileExists = True
End If
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 2 sept. 2005 à 12:41
Violent Ken
Kurky, tu as dit
J'ai un problème lors de la détection de fichiers. Ma fonction me détecte bien mes fichiers lorsque je lui passe le nom exact du fichier. Hors j'ai également besoin de l'utiliser dans un cas ou je ne connais qu'une partie du nom (pour des fichiers temporaires commencant par "tmp"). Mais lorsque je passe le nom du fichier "tmp*.*", il ne me trouve rien.
moi j'ai compris que tu ne connaissait pas la TERMINAISON du fichier, alors que c'est aussi une partie du nom du fichier que tu ne connais pas. Dans ce cas, tout le monde est d'accord, un simple
Private Function FileExists(PathetFichier As String) As Boolean
Dim Str As String
Str = Dir(PathetFichier)
If Str <> "" Then
Fichier = Str
FileExists = True
End If
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 2 sept. 2005 à 10:53
Violent Ken
Voilà une function :
Function FileExists(PathEtFichier As String, Fichier As String) As Boolean
FileExists = False
Dim X As String, Y As String
X = Dir(PathEtFichier & "*.*")
If X = vbNullString Then Exit FunctionIf LCase(X) LCase(Fichier) Then FileExists True: Exit Function
On Error GoTo Err:
Y = Left$(X, InStr(X, ".") - 1)If LCase(Y) LCase(Fichier) Then FileExists True: Exit Function
Err:
End Function
Exemple :
Existence=FileExists("c:\temporaire\temp","temp")
Si il existe des fichiers "temp" & n'importe quelle terminaison (ou "temp" sans terminaison), Existence=true autrement Existence=false
cs_kurky
Messages postés111Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention27 avril 2010 2 sept. 2005 à 11:17
Gobillot,
J'ai deja utilisé un code comme celui cie t je sais qu'il marche dans le cas qu'il me faut.
Le probleme c'est qu'il ne me trouve pas un fichier au démarrage alors qu'il est vraiment présent car le vbdirectory est a 16.
Or le fichier trouvé est un fichier avec une extension ".cop" dans ce cas.
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 2 sept. 2005 à 11:17
Violent Ken
Bon.
Message pour Gobillot : avant de tout rayer bêtement, essaye MA fonction et TA fonction. Tu verras que la mienne fonctionne, et que la tienne NE MARCHE PAS.
Un conseil, la prochaine fois réfléchit un peu avant d'écrire des anneries.
@+
cs_kurky
Messages postés111Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention27 avril 2010 2 sept. 2005 à 11:41
Mais je me demande si le GetAttr est vraiment indispensable ...
Parce que si je le supprime en laissant la condition if fichier <> "" then alors ca marchera ...
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 2 sept. 2005 à 11:43
Violent Ken
Utilise
Function FileExists(PathEtFichier As String, Fichier As String) As Boolean
FileExists = False
Dim X As String, Y As String
X = Dir(PathEtFichier & "*.*")
If X = vbNullString Then Exit FunctionIf LCase(X) LCase(Fichier) Then FileExists True: Exit Function
On Error GoTo Err:
Y = Left$(X, InStr(X, ".") - 1)If LCase(Y) LCase(Fichier) Then FileExists True: Exit Function
Err:
End Function
Tu verras, çà marche.
cs_kurky
Messages postés111Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention27 avril 2010 2 sept. 2005 à 11:47
La solution de virer le getattr marche nikel
Ta fonction ne peut pas marcher Daniel .
Dans ta condition tu met "and vbdirectory =0" ce qui sera toujours false. donc ton if ne sert a rien.
Violent ken le nom de ma fonction est osi fileexists mais je ne doit avoir qu'un seul argument :)
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 2 sept. 2005 à 11:50
Violent Ken
Remplace ta fonction par la mienne.
Pour PathEtFichier tu mets par exemple "c:\temporaires\temp" et pour Fichier tu mets "temp". Ma fonction te donneras True si il existe un fichier
"c:\temporaires\temp" ou
"c:\temporaires\temp.tmp" ou
"c:\temporaires\temp.doc" ou
"c:\temporaires\TEMP.TmP"....
et te revverras False s'il n'existe pas de fichier temp.