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

importer fichier txt dans excel via ne macro

1 réponse
Avatar
c_luimeme
Bonjour,

J'ai besoin d'aide car je souhaite r=E9cup=E9rer =E0 partir d'une macro
des donn=E9es dans des fichiers txt g=E9n=E9r=E9s horairement
le format de fichiers txt est le suivant "monfichierYYDDMM_HH.txt"
Cette macro devra parcourir les 24 fichiers du jour et r=E9cup=E9rer les
champs bien pr=E9cis et les copier dans un fichier excel unique .
Pour l'intant je n'arrive pas =E9crire la macro qui me permet de ouvrir
le Fichier txt VIA LA MACRO sous excel
je vous soumet le code /
Dim fichier As String
fichier =3D "C:\monfichier20060922_01.txt"

Workbooks.OpenText Filename:=3D"fichier", Origin:=3D-535, StartRow _
:=3D7, DataType:=3DxlFixedWidth, FieldInfo:=3DArray(Array(0, 1),
Array(19, 1), Array _
(36, 1), Array(50, 1), Array(53, 1), Array(65, 1), Array(81,
1), Array(97, 1), Array(101, 1) _
), TrailingMinusNumbers:=3DTrue
Range("C1").Select
Selection.Copy
Windows("etude de traffic Manithy.xls").Activate
Range("C3").Select
ActiveSheet.Paste
Windows("fichier").Activate
Range("C2").Select
Application.CutCopyMode =3D False
Selection.Copy
Windows("etude de traffic Manithy.xls").Activate
Range("D3").Select
ActiveSheet.Paste
Windows("fichier").Activate
Range("C3").Select
Application.CutCopyMode =3D False
Selection.Copy
Windows("etude de traffic Manithy.xls").Activate
Range("E3").Select
ActiveSheet.Paste
Windows("fichier").Activate
ActiveWindow.Close
End Sub
J'obtiens le message d'erreur suivant "fichier.xls" est introuvable
etc ...erreur 1004


Pouvez me dire ce qui ne va pas et aussi me soummettre une proposition
pour parcourir les 24 fichiers de la journ=E9e.
(j'ai pens=E9 faire une boucle "tant que")
Merci de votre aide

1 réponse

Avatar
FxM
Bonsoir,

Quelques points :

a) workbooks.opentext
fichier ne doit pas être entouré de guillemets puisque c'est une
variable et non un texte.
fichier = "C:monfichier20060922_01.txt"
Workbooks.OpenText Filename:=fichier, Origin:=-535, StartRow (etc)


b) Windows("fichier").Activate
L'erreur est due au fait que votre classeur ne s'appelle pas "fichier"
(guillemets -> texte), ni fichier (pas de guillemets -> variable) mais
monfichier20060922_01


c) passage par activate
Les codes du genre :
Windows("fichier").Activate
Range("C2").Select
Application.CutCopyMode = False
Selection.Copy
Windows("etude de traffic Manithy.xls").Activate
Range("D3").Select
ActiveSheet.Paste
sont typiques de l'enregistreur de macros.Le fait de passer par une

actualisation de l'affichage entraîne des lenteurs dans l'exécution de
la macro.

Ce qui précède peut être remplacé par (attention, je maintiens l'erreur
sur "fichier" avec guillemets!) :

Ce qui suit sur une seule ligne !
workbooks("fichier.xls").sheets("monfichier20060922_01").Range("C2").copy
workbooks("etude de traffic Manithy.xls").sheets("Feuil1").Range("D3")

Il te faut connaître le nom des feuilles. Pour le fichier texte, je
crois que le nom de la feuille est aussi le nom du fichier (sans .txt)

Il va aussi te falloir lister d'où vient et où va chaque info. Il est
aussi possible de boucler ou de simplifier mais ça dépend de l'origine
et de la destination.


d) 24 fichiers
Sur le principe, il faut donc connaître la date.
On va considérer les HH allant de 00 à 23. A adapter si 01 à 24.

'a variable de 0 à 23
For a = 0 to 23

'créer le nom de fichier selon "monfichierYYDDMM_HH.txt"
fichier = "monfichier" & format(date_entrée,yyddmm) & "_" &
format(a,00) & ".txt"

'ouvrir le fichier texte
workbooks.opentext fichier (etc)

'garder le nom du fichier pour pouvoir le fermer
nom = activeworkbook.name

'executer les actions de recopie
blablamachintruc

'fermer le fichier texte
workbook(nom).close false

'passer au fichier suivant
next a


e) fichier = "C:....."
La racine d'un disque dur n'est pas faite pour recevoir des fichiers.
Lui préférer largement un répertoire. Exemple : C:répertoire...


Voilà, voilà. N'hésite pas à repasser avec des détails si ça coince.
Au besoin, mets un exemple sur cjoint.com et indique le lien ici (avec
qq explications du problème).

@+
FxM




Bonjour,

J'ai besoin d'aide car je souhaite récupérer à partir d'une macro
des données dans des fichiers txt générés horairement
le format de fichiers txt est le suivant "monfichierYYDDMM_HH.txt"
Cette macro devra parcourir les 24 fichiers du jour et récupérer les
champs bien précis et les copier dans un fichier excel unique .
Pour l'intant je n'arrive pas écrire la macro qui me permet de ouvrir
le Fichier txt VIA LA MACRO sous excel
je vous soumet le code /
Dim fichier As String
fichier = "C:monfichier20060922_01.txt"

Workbooks.OpenText Filename:="fichier", Origin:=-535, StartRow _
:=7, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1),
Array(19, 1), Array _
(36, 1), Array(50, 1), Array(53, 1), Array(65, 1), Array(81,
1), Array(97, 1), Array(101, 1) _
), TrailingMinusNumbers:=True
Range("C1").Select
Selection.Copy
Windows("etude de traffic Manithy.xls").Activate
Range("C3").Select
ActiveSheet.Paste
Windows("fichier").Activate
Range("C2").Select
Application.CutCopyMode = False
Selection.Copy
Windows("etude de traffic Manithy.xls").Activate
Range("D3").Select
ActiveSheet.Paste
Windows("fichier").Activate
Range("C3").Select
Application.CutCopyMode = False
Selection.Copy
Windows("etude de traffic Manithy.xls").Activate
Range("E3").Select
ActiveSheet.Paste
Windows("fichier").Activate
ActiveWindow.Close
End Sub
J'obtiens le message d'erreur suivant "fichier.xls" est introuvable
etc ...erreur 1004


Pouvez me dire ce qui ne va pas et aussi me soummettre une proposition
pour parcourir les 24 fichiers de la journée.
(j'ai pensé faire une boucle "tant que")
Merci de votre aide