ERREUR : écriture vers fichier introuvable......

Le
titebonnie
bonjour,

via un bouton dans ma feuille excel, j'exécute une requête vers une base de
données access. Les résultat de la requête sont recopiés vers un fichier
texte.

Lorsque le f ichier n'existe pas, l'opération s'exécute sans problème, par
contre si le fichier existe, il indique une erreur 'FICHIER INTROUVABLE'.

Comment faire pour que le fichier soit écrasé à chaque exécution?
-
Voici mon code simplifié :
-
Sub CreationFichier()
rst.MoveLast
Open fichiertexte For Output As #2
Do While Not rst.BOF
Print #2, rst.Fields("XXX").Value & Chr(9) &
rst.Fields("YYYY").Value
End If
rst.MovePrevious
Loop
Close #2
End Sub



MERCI
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Zoury
Le #14735851
Salut! :O)

Comment faire pour que le fichier soit écrasé à chaque exécution?
-------------------------------------
Voici mon code simplifié... :
-------------------------------------
Open fichiertexte For Output As #2




l'ouverture en mode Output devrait écrasé le fichier s'il existe.. :

preuve :
'***
' Module1
Option Explicit

Private Sub Main()

Dim hFile As Long

hFile = FreeFile ' et tu devrais toujours utilisé ceci.. ;O)

Open "c:test.txt" For Output As #hFile
Print #hFile, "test"
Print #hFile, "test"
Print #hFile, "test"
Close #hFile

Open "c:test.txt" For Output As #hFile
Print #hFile, "test1"
Print #hFile, "test1"
Close #hFile

Call Shell("notepad ""c:test.txt""", vbMaximizedFocus)
Call Kill("c:test.txt") ' on ne laisse pas de trace..

End Sub
'***

Tu as aussi spécifié que ton code était simplifié... peut-être y a t-il
quelque chose d'autre qui cause le problème? montre nous le code exact,
peut-être trouverons-nous la cause.. :O/

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Jean-Marc
Le #14735661
"titebonnie" news:%
bonjour,

via un bouton dans ma feuille excel, j'exécute une requête vers une base


de
données access. Les résultat de la requête sont recopiés vers un fichier
texte.

Lorsque le f ichier n'existe pas, l'opération s'exécute sans problème, par
contre si le fichier existe, il indique une erreur 'FICHIER INTROUVABLE'.

Comment faire pour que le fichier soit écrasé à chaque exécution?
-------------------------------------
Voici mon code simplifié... :
-------------------------------------
Sub CreationFichier()
rst.MoveLast
Open fichiertexte For Output As #2



Hello,
avant toute chose, ne jamais faire des choses comme

Open truc For Output As #2

mais toujours:

-------------------------------
Dim f as Integer
' ...
f = Freefile
Open truc For Output As #f
' ...
-------------------------------------
Ca règle un nombre de problème incroyable !

Jean-Marc
titebonnie
Le #14734881
ça m'a l'air de fonctionner, comme je voudrais écraser le fichier texte crée
(s'il n'existe pas), il me semble qu'il n'est pas nécessaire d'utiliser la
commande shell Kill.... non?

merci pour vos réponses.

"titebonnie" news:%
bonjour,

via un bouton dans ma feuille excel, j'exécute une requête vers une base


de
données access. Les résultat de la requête sont recopiés vers un fichier
texte.

Lorsque le f ichier n'existe pas, l'opération s'exécute sans problème, par
contre si le fichier existe, il indique une erreur 'FICHIER INTROUVABLE'.

Comment faire pour que le fichier soit écrasé à chaque exécution?
-------------------------------------
Voici mon code simplifié... :
-------------------------------------
Sub CreationFichier()
rst.MoveLast
Open fichiertexte For Output As #2
Do While Not rst.BOF
Print #2, rst.Fields("XXX").Value & Chr(9) &
rst.Fields("YYYY").Value
End If
rst.MovePrevious
Loop
Close #2
End Sub


------------------------------------
MERCI




titebonnie
Le #14734831
ben finalement après de multiples test, il arrive qu'il ne trouve pas le
fichier (le 1er fichier). Bizarrement ça fonctionne une fois sur deux...

voici mon code (non simplifié) cette fois ci :-) :

Set rst = Nothing: Set connexion = Nothing

hFile = FreeFile
Open "config_extraction.ini" For Input As #hFile
While Not EOF(hFile)
Line Input #hFile, lignelue
chaine = lignelue & ";" & chaine
Wend
Close #hFile

-------------------------
Sub proc_connexion()

' Les variables ci dessous sont contenu dans le 1er fichier de configuration

connexion.Open "Driver={" & driver & "};" & _
"Dbq=" & cheminbd & ";" & _
"Uid=" & id & ";" & _
"Pwd=" & mdp & ""

-----------------------
Sub CreationFichier()

rst.MoveLast
Open fichiersortie For Output As #hFile
Do While Not rst.BOF
matr1 = rst.Fields("pers_mat").Value
If matr1 <> matr2 Then
Print #hFile, rst.Fields("pers_mat").Value & Chr(9) &
rst.Fields("cal_dat").Value & Chr(9) & rst.Fields("cal_val12").Value &
Chr(9) & rst.Fields("cal_val15").Value & Chr(9) &
rst.Fields("niv_cod1").Value
matr2 = matr1
End If
rst.MovePrevious
Loop
Close #hFile
End Sub

-------------------


"titebonnie" news:%
bonjour,

via un bouton dans ma feuille excel, j'exécute une requête vers une base


de
données access. Les résultat de la requête sont recopiés vers un fichier
texte.

Lorsque le f ichier n'existe pas, l'opération s'exécute sans problème, par
contre si le fichier existe, il indique une erreur 'FICHIER INTROUVABLE'.

Comment faire pour que le fichier soit écrasé à chaque exécution?
-------------------------------------
Voici mon code simplifié... :
-------------------------------------
Sub CreationFichier()
rst.MoveLast
Open fichiertexte For Output As #2
Do While Not rst.BOF
Print #2, rst.Fields("XXX").Value & Chr(9) &
rst.Fields("YYYY").Value
End If
rst.MovePrevious
Loop
Close #2
End Sub


------------------------------------
MERCI




François Picalausa
Le #14657381
Hello,

Open "config_extraction.ini" For Input As #hFile



Essaye d'avoir un chemin complètement qualifié, sinon au changement de
dossier courrant, ça ne foncionnera pas.
Par exemple:
C:config_extraction.ini

Ou encore
'S'assure qu'un backslash est présent en fin de chemin
Function EndPath(strPath As String) As String
If Right$(strPath, 1) <> "" Then
EndPath = strPath & ""
Else
EndPath = strPath
End If
End Function

EndPath(App.Path) & "config_extraction.ini"
si le fichier est dans le répertoire de l'application


--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"titebonnie" news:%
ben finalement après de multiples test, il arrive qu'il ne trouve pas
le fichier (le 1er fichier). Bizarrement ça fonctionne une fois sur
deux...


titebonnie
Le #14657341
merci de ta réponse, ça m'aiguille un peu.
J'avais oublié de spécifier que je travaillais en vba avec excel.

J'ai testé ta méthode et j'ai mis le chemin dans une variable afin de
vérifier si cela correspond. Le problème c'est que je retrouve le chemin où
j'ai installé excel et non pas le chemin de mon application.

Une autre idée?

"François Picalausa" news:
Hello,

> Open "config_extraction.ini" For Input As #hFile

Essaye d'avoir un chemin complètement qualifié, sinon au changement de
dossier courrant, ça ne foncionnera pas.
Par exemple:
C:config_extraction.ini

Ou encore
'S'assure qu'un backslash est présent en fin de chemin
Function EndPath(strPath As String) As String
If Right$(strPath, 1) <> "" Then
EndPath = strPath & ""
Else
EndPath = strPath
End If
End Function

EndPath(App.Path) & "config_extraction.ini"
si le fichier est dans le répertoire de l'application


--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"titebonnie" news:%
> ben finalement après de multiples test, il arrive qu'il ne trouve pas
> le fichier (le 1er fichier). Bizarrement ça fonctionne une fois sur
> deux...




titebonnie
Le #14657331
j'ai trouvé, en vba, il faut utiliser application.path et dans mon cas,
c'est plutôt : activeworksheet.path

Merci encore!

"titebonnie" news:%
merci de ta réponse, ça m'aiguille un peu.
J'avais oublié de spécifier que je travaillais en vba avec excel.

J'ai testé ta méthode et j'ai mis le chemin dans une variable afin de
vérifier si cela correspond. Le problème c'est que je retrouve le chemin



j'ai installé excel et non pas le chemin de mon application.

Une autre idée?

"François Picalausa" news:
> Hello,
>
> > Open "config_extraction.ini" For Input As #hFile
>
> Essaye d'avoir un chemin complètement qualifié, sinon au changement de
> dossier courrant, ça ne foncionnera pas.
> Par exemple:
> C:config_extraction.ini
>
> Ou encore
> 'S'assure qu'un backslash est présent en fin de chemin
> Function EndPath(strPath As String) As String
> If Right$(strPath, 1) <> "" Then
> EndPath = strPath & ""
> Else
> EndPath = strPath
> End If
> End Function
>
> EndPath(App.Path) & "config_extraction.ini"
> si le fichier est dans le répertoire de l'application
>
>
> --
> François Picalausa (MVP VB)
> http://faq.vb.free.fr --- http://msdn.microsoft.com
> http://apisvb.europe.webmatrixhosting.net
>
> "titebonnie" > news:%
> > ben finalement après de multiples test, il arrive qu'il ne trouve pas
> > le fichier (le 1er fichier). Bizarrement ça fonctionne une fois sur
> > deux...
>
>




François Picalausa
Le #14657321
Hello,

Essaye avec
EndPath (ThisWorkbook.Path)

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"titebonnie" news:%
J'avais oublié de spécifier que je travaillais en vba avec excel.
Une autre idée?

"François Picalausa" news:
'S'assure qu'un backslash est présent en fin de chemin
Function EndPath(strPath As String) As String
If Right$(strPath, 1) <> "" Then
EndPath = strPath & ""
Else
EndPath = strPath
End If
End Function

EndPath(App.Path) & "config_extraction.ini"
si le fichier est dans le répertoire de l'application




Publicité
Poster une réponse
Anonyme