Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

pb avec la fonction dir() en vb

10 réponses
Avatar
jc
Bonjour,

Sous vb6 j'ai un probleme afin de verifier l'existence d'1 fichier en effet
:

--------------
MyPath = "\\srv000458\Com_Rep_97.mdb"

If Dir(MyPath) = "" Then
Text13.Text = "Impossible de se connecter à la base !!!"

Else

Text13.Text = "Connexion à la base OK !"

End If
-----------
Qd le fichier existe impecable, par contre qd le fichier n'existe pas, vb
plante litterallement et va pas ds ma condition ....help me plize !!!

jc

10 réponses

Avatar
Jean-marc
jc wrote:
Bonjour,

Sous vb6 j'ai un probleme afin de verifier l'existence d'1 fichier



Hello,

"Comment savoir si un fichier existe ?"

http://faq.vb.free.fr/index.php?question)

Cordialement,


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
LE TROLL
Bonjour,

Sinon, tu peut en lançant l'ouverture de ton
fichier, comme pour le lire, évidemment, s'il ne
trouve pas, il va renvoyer une erreur <> 0 que tu
récupères:

freefile
on error goto erreur
open...
close
exit sub
erreur:
if erreur "53" (je crois) = inexistant
on error resume next


--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"jc" a écrit dans le message de
news: 482447d9$0$20005$
| Bonjour,
|
| Sous vb6 j'ai un probleme afin de verifier
l'existence d'1 fichier en effet
| :
|
| --------------
| MyPath = "srv000458Com_Rep_97.mdb"
|
| If Dir(MyPath) = "" Then
| Text13.Text = "Impossible de se
connecter à la base !!!"
|
| Else
|
| Text13.Text = "Connexion à la base OK !"
|
| End If
| -----------
| Qd le fichier existe impecable, par contre qd
le fichier n'existe pas, vb
| plante litterallement et va pas ds ma condition
....help me plize !!!
|
| jc
|
|
Avatar
Jean-marc
LE TROLL wrote:
Bonjour,

Sinon, tu peut en lançant l'ouverture de ton
fichier, comme pour le lire, évidemment, s'il ne
trouve pas, il va renvoyer une erreur <> 0 que tu
récupères:



Que l'on code comme ceci:

' ---------------------------------------------------
'
Public Function FileExists(ByVal fileName As String) As Boolean
Const FILE_NOT_FOUND As Long = 53
Dim f As Integer

On Error GoTo FileExists_ERR

f = FreeFile
Open fileName For Input As #f
Close #f
FileExists = True

FileExists_END:
Exit Function

FileExists_ERR:
If Err.Number = FILE_NOT_FOUND Then
FileExists = False
Else
FileExists = True
End If
Resume FileExists_END
End Function

' ---------------------------------------------------

et qu'on utilise comme ça:

Dim fic As String

fic = "c:data.dat"

If FileExists(fic) Then
MsgBox "le fichier " & fic & " existe."
Else
MsgBox "le fichier " & fic & " n'existe pas."
End If


Ca fonctionne bien sur, mais les méthodes présentées dans la FAQ sont
plutot meilleures, en particulier le deuxième :



--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
LE TROLL
Mais tu fais ça bien Jean-Marc, c'est beau, une
oeuvre d'art :o)


--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Jean-marc" a écrit dans le
message de news:
482561f9$0$2940$
| LE TROLL wrote:
| > Bonjour,
| >
| > Sinon, tu peut en lançant l'ouverture de
ton
| > fichier, comme pour le lire, évidemment, s'il
ne
| > trouve pas, il va renvoyer une erreur <> 0 que
tu
| > récupères:
|
| Que l'on code comme ceci:
|
|
' ---------------------------------------------------
| '
| Public Function FileExists(ByVal fileName As
String) As Boolean
| Const FILE_NOT_FOUND As Long = 53
| Dim f As Integer
|
| On Error GoTo FileExists_ERR
|
| f = FreeFile
| Open fileName For Input As #f
| Close #f
| FileExists = True
|
| FileExists_END:
| Exit Function
|
| FileExists_ERR:
| If Err.Number = FILE_NOT_FOUND Then
| FileExists = False
| Else
| FileExists = True
| End If
| Resume FileExists_END
| End Function
|
|
' ---------------------------------------------------
|
| et qu'on utilise comme ça:
|
| Dim fic As String
|
| fic = "c:data.dat"
|
| If FileExists(fic) Then
| MsgBox "le fichier " & fic & " existe."
| Else
| MsgBox "le fichier " & fic & " n'existe
pas."
| End If
|
|
| Ca fonctionne bien sur, mais les méthodes
présentées dans la FAQ sont
| plutot meilleures, en particulier le deuxième :
|
|
|
| --
| Jean-marc Noury (jean_marc_n2)
| Microsoft MVP - Visual Basic
| FAQ VB: http://faq.vb.free.fr/
| mailto: remove '_no_spam_' ;

|
|
|
|
Avatar
Jean-marc
LE TROLL wrote:
Mais tu fais ça bien Jean-Marc, c'est beau, une
oeuvre d'art :o)



Oui, hein ?

Merci du compliment :-)))))))

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
andre.araste
Bonjour

Cette approche se montre assez sûre :

Chemin = App.Path
If Right(Chemin, 1) <> "" Then Chemin = Chemin & ""
If Dir$(Chemin & "MonFichier.txt") = Empty Then
MsgBox "Le Fichier MonFichier.txt est absent ou introuvable." & vbCrLf &
"Le chercher ou le créer "
Sortie
End If
... suite ...
--
Bonne réception.

http://perso.orange.fr/andre.araste/
Membre du Club Win's: http://www.clubwins.org
Avertissement: Je ne vends rien.
"jc" a écrit dans le message de news:
482447d9$0$20005$
Bonjour,

Sous vb6 j'ai un probleme afin de verifier l'existence d'1 fichier en
effet :

--------------
MyPath = "srv000458Com_Rep_97.mdb"

If Dir(MyPath) = "" Then
Text13.Text = "Impossible de se connecter à la base !!!"

Else

Text13.Text = "Connexion à la base OK !"

End If
-----------
Qd le fichier existe impecable, par contre qd le fichier n'existe pas, vb
plante litterallement et va pas ds ma condition ....help me plize !!!

jc



Avatar
Jacques93
Bonjour andre.araste,
andre.araste a écrit :
Bonjour

Cette approche se montre assez sûre :

Chemin = App.Path
If Right(Chemin, 1) <> "" Then Chemin = Chemin & ""
If Dir$(Chemin & "MonFichier.txt") = Empty Then
MsgBox "Le Fichier MonFichier.txt est absent ou introuvable." & vbCrLf &
"Le chercher ou le créer "
Sortie
End If
... suite ...



Assez sûre, sauf si on travaille avec des chemins UNC :

NomDeMachineNomDePartage...

qui peuvent en fonction de la configuration, générer des erreurs 52,
notamment ;-)

--

Cordialement,

Jacques.
Avatar
Jean-marc
Jacques93 wrote:
Bonjour andre.araste,
andre.araste a écrit :
Bonjour

Cette approche se montre assez sûre :

Chemin = App.Path
If Right(Chemin, 1) <> "" Then Chemin = Chemin & ""
If Dir$(Chemin & "MonFichier.txt") = Empty Then
MsgBox "Le Fichier MonFichier.txt est absent ou introuvable." &
vbCrLf & "Le chercher ou le créer "
Sortie
End If
... suite ...



Assez sûre, sauf si on travaille avec des chemins UNC :

NomDeMachineNomDePartage...

qui peuvent en fonction de la configuration, générer des erreurs 52,
notamment ;-)



Sans compter que Dir n'est pas réentrante, ce qui fait que si
on tente de l'utiliser alors que par ailleurs on est en train de lister
les fichiers d'un répertoire avec une boucle Dir, et bien ça casse tout.

Cette méthode n'est donc pas non plus "sûre" de ce point de vue :o)

Avec quand même 2 restrictions majeures pour l'utilisation, on comprendra
que
cette méthode doit être évitée et qu'on lui préfèrera dans tous les cas
l'utilisation de la méthode N°2 de la FAQ qui n'a pas d'inconvénients connus
:

Function FileExists(ByVal sFileName As String) As Boolean
On Error Resume Next
FileExists = ((GetAttr(sFileName) And vbDirectory) = 0)
End Function

Bonne soirée!

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Patrick JONIEC
Bonjour

Pour faire plus simple, on peut aussi utiliser le scripting

Dim fs as object

Set fs = CreateObject("Scripting.FileSystemObject")
if not fs.fileexists(NomDuFichier) then

(pour les répertoires, c'est fs.folderexists(Nom du chemin)

pour remplacer le dir:
Set sfs = fs.getfolder(GetFullPath(RepertSource)).Files
For Each F1 In sfs
next

' ====================================== ' Récupérer le chemin réseau d'un lecteur
' ====================================== Private Declare Function WNetGetConnection Lib "mpr.dll" Alias
"WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal lpszRemoteName As
String, cbRemoteName As Long) As Long

Function GetFullPath(ByVal sDrive As String) As String
Dim sBuffer As String
Dim nDrive As String

sBuffer = String(255&, vbNullChar)
nDrive = Left(sDrive, 2)

If WNetGetConnection(nDrive, sBuffer, Len(sBuffer)) = NO_ERROR Then
GetFullPath = Left(sBuffer, InStr(1, sBuffer, vbNullChar) - 1)
Else
GetFullPath = vbNullString
End If
GetFullPath = GetFullPath & Right(sDrive, Len(sDrive) - 2)

End Function

et plein d'autres fonctions pour la manipulation de fichiers...

"jc" a écrit dans le message de
news:482447d9$0$20005$
Bonjour,

Sous vb6 j'ai un probleme afin de verifier l'existence d'1 fichier en
effet :

--------------
MyPath = "srv000458Com_Rep_97.mdb"

If Dir(MyPath) = "" Then
Text13.Text = "Impossible de se connecter à la base !!!"

Else

Text13.Text = "Connexion à la base OK !"

End If
-----------
Qd le fichier existe impecable, par contre qd le fichier n'existe pas, vb
plante litterallement et va pas ds ma condition ....help me plize !!!

jc



Avatar
jean-marc
"Patrick JONIEC" wrote in message
news:
Bonjour



Hello,

Pour faire plus simple, on peut aussi utiliser le scripting
Dim fs as object
Set fs = CreateObject("Scripting.FileSystemObject")
et plein d'autres fonctions pour la manipulation de fichiers...



Je ne sais pas si c'est plus "simple", mais ce qui est sur
c'est que ça a des inconvénients non négligeables, comme mentionné
dans la FAQ:
http://faq.vb.free.fr/index.php?question6

Cordialement;


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;