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"
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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"
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
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"
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
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"
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