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

VBA + fermeture et réutilisation fichier texte

3 réponses
Avatar
Yves Caline
Bonjour,
J'ai écrit un programme VBA dans lequel je crée un fichier texte (output)
que je veux ensuite réouvrir sous Excel pour le transformer en feuille
Excel.
Si je ferme le fichier texte et que je réouvre ce fichier par
"WorkBooks.open", je reçois une erreur d'excécution 1004, fichier
introuvable (comme si le fichier n'avait pas été créé physiquement sur le
disque).
Par contre, si je termine le programme et que je le relance à partir de
l'instruction "WorkBooks.open", tout se passe bien.
C'est comme si il fallait terminer le programme pour que la création du
fichier soit prise en compte.
J'ai essayé l'instruction Reset qui est censée forcer l'écriture sur disque,
cela n'a rien donné. Cela ne marche que si je passe mon programme en 2 fois.
Or, je voudrais bien faire les 2 opérations dans le même programme.
Si quelqu'un a une idée, je le remercie.
Yves

3 réponses

Avatar
Yves Caline
Bonne remarque, je vais essayer. Merci
"michdenis" a écrit dans le message de
news:
Bonjour Yves,


Tu n'as pas publié ton code...

Il est possible qu'excel n'ait pas fini d'enregistrer ton fichier texte
lorsque ce même excel tente d'exécuter la commande

"Workbooks.Open Fichier .

Si c'est le cas, utilise une ligne de code comme celle-ci pour retarder
l'ouverture du fichier texte


Cette ligne insère un délai de 3 secondes...délai totalement arbitraire
... à toi de tester !

Application.Wait(Now + TimeValue("0:00:03"))


Salutations!


"Yves Caline" a écrit dans le message de
news:3f3a695e$0$243$

Bonjour,
J'ai écrit un programme VBA dans lequel je crée un fichier texte (output)
que je veux ensuite réouvrir sous Excel pour le transformer en feuille
Excel.
Si je ferme le fichier texte et que je réouvre ce fichier par
"WorkBooks.open", je reçois une erreur d'excécution 1004, fichier
introuvable (comme si le fichier n'avait pas été créé physiquement sur le
disque).
Par contre, si je termine le programme et que je le relance à partir de
l'instruction "WorkBooks.open", tout se passe bien.
C'est comme si il fallait terminer le programme pour que la création du
fichier soit prise en compte.
J'ai essayé l'instruction Reset qui est censée forcer l'écriture sur
disque,

cela n'a rien donné. Cela ne marche que si je passe mon programme en 2
fois.

Or, je voudrais bien faire les 2 opérations dans le même programme.
Si quelqu'un a une idée, je le remercie.
Yves





Avatar
Yves Caline
Le code utilisé :

Call ROUT04
Application.Wait (Now + TimeValue("0:00:03"))
Call ROUT05

Sub ROUT04()
' On a fini de traiter l'affaire, on ferme les fichiers Texte
Close #seqf01
Close #seqf02
Reset

Sub ROUT05()
' Ouverture Fichier Texte sous Excel
Workbooks.OpenText Filename:=Chemin01 + Nom02, Origin:= _
xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, _
1), Array(7, 1), Array(42, 1))

J'ai essayé ta manip que j'ai placée entre le Call Rout04 et le Call Rout05
et cela n'a rien changé, le fichier (#seqf02) ne figure toujours pas sur le
disque. J'ai vraiment l'impression que si je ne ferme pas le classeur Excel
du programme, le fichier n'est pas écrit sur le disque.
Salutations
Yves



"michdenis" a écrit dans le message de
news:
Bonjour Yves,


Tu n'as pas publié ton code...

Il est possible qu'excel n'ait pas fini d'enregistrer ton fichier texte
lorsque ce même excel tente d'exécuter la commande

"Workbooks.Open Fichier .

Si c'est le cas, utilise une ligne de code comme celle-ci pour retarder
l'ouverture du fichier texte


Cette ligne insère un délai de 3 secondes...délai totalement arbitraire
... à toi de tester !

Application.Wait(Now + TimeValue("0:00:03"))


Salutations!


"Yves Caline" a écrit dans le message de
news:3f3a695e$0$243$

Bonjour,
J'ai écrit un programme VBA dans lequel je crée un fichier texte (output)
que je veux ensuite réouvrir sous Excel pour le transformer en feuille
Excel.
Si je ferme le fichier texte et que je réouvre ce fichier par
"WorkBooks.open", je reçois une erreur d'excécution 1004, fichier
introuvable (comme si le fichier n'avait pas été créé physiquement sur le
disque).
Par contre, si je termine le programme et que je le relance à partir de
l'instruction "WorkBooks.open", tout se passe bien.
C'est comme si il fallait terminer le programme pour que la création du
fichier soit prise en compte.
J'ai essayé l'instruction Reset qui est censée forcer l'écriture sur
disque,

cela n'a rien donné. Cela ne marche que si je passe mon programme en 2
fois.

Or, je voudrais bien faire les 2 opérations dans le même programme.
Si quelqu'un a une idée, je le remercie.
Yves





Avatar
Yves Caline
Bonjour,
Je te remercie de ton aide. J'ai fini par trouver.
J'avais défini une variable :
Public Nom02 As String ' Nom du fichier Wpharma en format
Stock
J'avais ouvert ce fichier en Output puis je le fermais et le réouvrais sous
Excel en utilisant la même variable. Là je coinçais sur l'ouverture sous
Excel.
J'ai défini une deuxième variable :
Public Nom021 As String ' 2ème Nom du fichier Wpharma en
format Stock
J'utilise la variable Nom02 pour l'ouverture en Output et Nom021 pour
l'ouverture sous Excel et, ça marche !!
Ce sont les mystères de VBA.....
En tous cas merci. Ca me génait d'exécuter ce code en 2 fois.
Bon week-end
Yves

"michdenis" a écrit dans le message de
news:
Bonjour Yves,


Tu n'as pas publié ton code...

Il est possible qu'excel n'ait pas fini d'enregistrer ton fichier texte
lorsque ce même excel tente d'exécuter la commande

"Workbooks.Open Fichier .

Si c'est le cas, utilise une ligne de code comme celle-ci pour retarder
l'ouverture du fichier texte


Cette ligne insère un délai de 3 secondes...délai totalement arbitraire
... à toi de tester !

Application.Wait(Now + TimeValue("0:00:03"))


Salutations!


"Yves Caline" a écrit dans le message de
news:3f3a695e$0$243$

Bonjour,
J'ai écrit un programme VBA dans lequel je crée un fichier texte (output)
que je veux ensuite réouvrir sous Excel pour le transformer en feuille
Excel.
Si je ferme le fichier texte et que je réouvre ce fichier par
"WorkBooks.open", je reçois une erreur d'excécution 1004, fichier
introuvable (comme si le fichier n'avait pas été créé physiquement sur le
disque).
Par contre, si je termine le programme et que je le relance à partir de
l'instruction "WorkBooks.open", tout se passe bien.
C'est comme si il fallait terminer le programme pour que la création du
fichier soit prise en compte.
J'ai essayé l'instruction Reset qui est censée forcer l'écriture sur
disque,

cela n'a rien donné. Cela ne marche que si je passe mon programme en 2
fois.

Or, je voudrais bien faire les 2 opérations dans le même programme.
Si quelqu'un a une idée, je le remercie.
Yves