Tester existance d'un fichier

Tester existance d'un fichier - VB/VBA/VBS - Programmation

Marsh Posté le 30-04-2004 à 14:15:26    

Recoucou
 
Dans mon programme VB, je souhaiterai intégrer un condition où on teste si le fichier existe.
 
J'ai trouvé qu'il faut écrire le langage suivant, dans un module,  :
Public Function FichierExiste(ByVal Nom As String) As Boolean
On Error Resume Next
    Dim attrib As Integer  
    attrib = GetAttr(Nom)
    If (Err <> 0) Then
        FichierExiste = False
    Else
        If ((attrib And vbDirectory) = vbDirectory) Then
            FichierExiste = False
        Else
            FichierExiste = True
        End If
    End If
End Function
 
et dans mon interface
if (FichierExiste (nom)) then ...  
 
Mais je ne sais pas à quoi corrrespond :
nom
Getattr
vbDirectory
 
Je vous remercie d'avance
 
Bon weekend
 
 
 

Reply

Marsh Posté le 30-04-2004 à 14:15:26   

Reply

Marsh Posté le 30-04-2004 à 15:18:50    

pourtant c'est expliqué dans la doc :o (mais je suppose que tu ne l'as pas si tu viens poser la question ici)
 
http://msdn.microsoft.com/
 
GetAttr permet d'avoir les attributs fichiers (Archive, Readonly, System, ...) vbDirectory est l'un de ces attributs possibles. Cependant, j'ai vu avec l'expérience que ce n'est pas la meilleure méthode. Personnellement, je teste directement la date du fichier, ça ressemble à ceci:
 

Code :
  1. Public Function FileExists(ByVal strFileName As String) As Boolean
  2.     Dim dtm As Date
  3. On Error GoTo ErrHandler
  4.     dtm = FileSystem.FileDateTime(strFileName)
  5.     FileExists = True
  6.     Exit Function
  7. ErrHandler:
  8.     FileExists = False
  9. End Function


 
J'avais déjà posté ce code ailleurs mais j'avais la flemme de le retrouver :o


Message édité par drasche le 30-04-2004 à 15:19:08

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 03-05-2004 à 10:33:02    

Coucou
 
Je te remerciepour ton aide.  
Effectivement je n'ai pas l'aide sous VB.
 
Bonne journée

Reply

Marsh Posté le 03-05-2004 à 18:05:25    

Il y a beaucoup plus simple que ça :
 
Utilises la fonction Dir("Adresse du fichier et son nom" )
Exemple:  
 

Code :
  1. Dim FileExist as boolean 'puisque tu tiens a revoyer Vrai si le fichier existe
  2. If Dir("C:\Test.txt" ) = "" then
  3. FileExist = False
  4. Else
  5. FileExist = True
  6. EndIf


 
Salut !


Message édité par prog1001 le 03-05-2004 à 18:06:10
Reply

Marsh Posté le 03-05-2004 à 18:09:30    

tu sais seulement à quoi ça sert Dir?  ça sert à faire une liste. Et une liste, ce n'est pas le but ici. Parce ce que la liste, faut bien la stocker quelque part et ça bouffe un peu. C'est pas le plus petit code qui est forcément le meilleur ;)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 03-05-2004 à 18:27:53    

hey ! drasche faut pas vexer ! En tout cas tu repond vite !
 
je sais pas ceux qui bouffe le plus de memoire, c'était juste pour montrer un code simple.
Quel genre de liste tu crées avec Dir ?
 
voici l'aide de vb pour dir :

Citation :

Dim MyFile, MyPath, MyName
' Renvoie "WIN.INI" si ce fichier existe.
MyFile = Dir("C:\WINDOWS\WIN.INI" )  
 
' Renvoie le nom de fichier avec l'extension indiquée.
' Si plusieurs fichiers *.ini
' existent, le premier fichier trouvé est renvoyé.
MyFile = Dir("C:\WINDOWS\*.INI" )


 
comme quoi Dir est bien fait pour tester et rechercher des adresses de fichier !
 
Aller, sans rancune !
A+

Reply

Marsh Posté le 03-05-2004 à 19:42:52    

euh je suis pas vexé ;)
 
pour en rajouter une, tu appelles ça l'aide? :D
 
pis l'exemple que j'y trouve est un poil plus long ;)
 

Code :
  1. Dim MyFile, MyPath, MyName
  2. ' Returns "WIN.INI"  if it exists.
  3. MyFile = Dir("C:\WINDOWS\WIN.INI" ) 
  4. ' Returns filename with specified extension. If more than one *.ini
  5. ' file exists, the first file found is returned.
  6. MyFile = Dir("C:\WINDOWS\*.INI" )
  7. ' Call Dir again without arguments to return the next *.INI file in the
  8. ' same directory.
  9. MyFile = Dir
  10. ' Return first *.TXT file with a set hidden attribute.
  11. MyFile = Dir("*.TXT", vbHidden)
  12. ' Display the names in C:\ that represent directories.
  13. MyPath = "c:\"   ' Set the path.
  14. MyName = Dir(MyPath, vbDirectory)   ' Retrieve the first entry.
  15. Do While MyName <> ""   ' Start the loop.
  16.    ' Ignore the current directory and the encompassing directory.
  17.    If MyName <> "." And MyName <> ".." Then
  18.       ' Use bitwise comparison to make sure MyName is a directory.
  19.       If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
  20.          Debug.Print MyName   ' Display entry only if it
  21.       End If   ' it represents a directory.
  22.    End If
  23.    MyName = Dir   ' Get next entry.
  24. Loop


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 04-05-2004 à 17:00:19    

Bin j'ai pas tout mis, je voulais pas te décourager a le lire :lol:
 
Au fait,toi qui a l'air de t'y connaitre j'ai lancé un sujet sur le forum intitulé "Utilisé un dll que j'ai crée avec vb" c'était pour savoir comment appeler les fonctions que j'ai écrit dans ce dll a partir d'un projet different que le projet de creation du Dll.
 
Si tu sais, merci de me le faire savoir.  
Aller salut!  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed