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

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

8 réponses
Avatar
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

8 réponses

Avatar
Zoury
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/
Avatar
Jean-Marc
"titebonnie" a écrit dans le message de
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
Avatar
titebonnie
ç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" a écrit dans le message de
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




Avatar
titebonnie
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" a écrit dans le message de
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




Avatar
François Picalausa
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" a écrit dans le message de
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...


Avatar
titebonnie
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" a écrit dans le message de
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" a écrit dans le message de
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...




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

Merci encore!

"titebonnie" a écrit dans le message de
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" a écrit dans le message de
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" a écrit dans le message de
> 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...
>
>




Avatar
François Picalausa
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" a écrit dans le message de
news:%
J'avais oublié de spécifier que je travaillais en vba avec excel.
Une autre idée?

"François Picalausa" a écrit dans le message de
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