OVH Cloud OVH Cloud

autorisation refuser de copie d'un fichier

3 réponses
Avatar
thierry
Hello,

Je voudrais faire une copie de fichier dans un programme VB. Pour cela
j'utilise la fonction FileCopy de la manière suivante:

fichier_destination = repertoire & "fic1.dbf"
fichier_source = env_chemin_caduciel & "fic1.dbf"
If Dir(fichier_destination) <> "" Then Kill fichier_destination
FileCopy fichier_source, fichier_destination

il s'agit donc de la copie d'un fichier de type dbf d'un répertoire sur
un autre. Sous Windows cela fonctionne très bien, mais quand je le fais
sous VB, j'ai un message d'erreur de type autorisation refusé quand je
veux executer le filecopy.


Une idée?

Cdt

Thierry

3 réponses

Avatar
thierry
In article ,
says...


Hello,

Je voudrais faire une copie de fichier dans un programme VB. Pour cela
j'utilise la fonction FileCopy de la manière suivante:

fichier_destination = repertoire & "fic1.dbf"
fichier_source = env_chemin_caduciel & "fic1.dbf"
If Dir(fichier_destination) <> "" Then Kill fichier_destination
FileCopy fichier_source, fichier_destination

il s'agit donc de la copie d'un fichier de type dbf d'un répertoire sur
un autre. Sous Windows cela fonctionne très bien, mais quand je le fais
sous VB, j'ai un message d'erreur de type autorisation refusé quand je
veux executer le filecopy.


Une idée?

Cdt

Thierry






laisser tomber, en utilisant FSO (vive la FAQ VB), ça marche
Avatar
Patrice Henrio
Pour ma part j'utilise la fonction suivante :
Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" ( _
ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, _
ByVal bFailIfExists As Long) As Long

que j'ai francisé ainsi :
Public Sub CopieFichier(Source As String, Cible As String, Remplace As
Boolean)
Dim ErreurSiCibleExiste As Long
ErreurSiCibleExiste = CLng(Not (Remplace))
ErreurSiCibleExiste = CopyFile(Source, Cible, ErreurSiCibleExiste)
End Sub

Si Remplace a la valeur True, la copie autorise le remplacement du fichier
s'il existe déjà, si c'est la valeur False, il y a une erreur et la copie
n'a pas lieu.

"thierry" a écrit dans le message de news:

In article ,
says...


Hello,

Je voudrais faire une copie de fichier dans un programme VB. Pour cela
j'utilise la fonction FileCopy de la manière suivante:

fichier_destination = repertoire & "fic1.dbf"
fichier_source = env_chemin_caduciel & "fic1.dbf"
If Dir(fichier_destination) <> "" Then Kill fichier_destination
FileCopy fichier_source, fichier_destination

il s'agit donc de la copie d'un fichier de type dbf d'un répertoire sur
un autre. Sous Windows cela fonctionne très bien, mais quand je le fais
sous VB, j'ai un message d'erreur de type autorisation refusé quand je
veux executer le filecopy.


Une idée?

Cdt

Thierry






laisser tomber, en utilisant FSO (vive la FAQ VB), ça marche


Avatar
Zoury
Salut Thierry ! :O)

laisser tomber, en utilisant FSO (vive la FAQ VB), ça marche



Laisser tomber quand tu nous parle d'FSO ? JAMAAAAAAIS!!!! ;O)

Quels sont les désavantages d'FSO ?
http://faq.vb.free.fr/index.php?question6




Ton problème vient du fait que tu emplois Dir$() pour vérifier si le fichier
existe. Dir$() conserve un handle ouvert sur ce fichier ce qui cause
l'erreur que tu reçois.

Tu peux employé la solution de Patrice qui est très ingénieuse.

Pour une solution purement VB, test l'existence du fichier avec cette
fonction :
'***
Private Function FileExists(ByVal FileName As String) As Boolean
On Error Resume Next
FileExists = ((GetAttr(FileName) Or vbDirectory) = 0)
End Function
'***

--
Cordialement
Yanick
MVP pour Visual Basic