Création de fichiers .csv à partir de fichier .txt
Ereudet
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Je viens de m'inscrire sur le forum donc si je ne fais pas les choses dans l'ordre ou si je ne suis pas au bon endroit, dites le moi :)
Je reçois le 02 de chaque mois 45 fichiers .txt contenant chacun des informations (relevés d'index de compteur EDF de la fin du mois N-1). A partir de ces fichiers .txt, je dois créer des fichiers .csv (1 fichier .csv pour chaque fichier .txt, donc 45 fichiers .csv à créer) que je transfère ensuite vers un ftp pour que ces fichiers .csv soient intégrés dans une base de donnée.
J'ai donc besoin de savoir comment je peux faire une macro qui va créer autant de fichier .csv que j'ai de fichier .txt, et comment récupérer les données qui m’intéressent dans les fichiers .txt pour les envoyer vers les .csv. Si en plus la macro peut envoyer les fichiers obtenus vers un ftp, j'aurai tout gagné ! :)
Actuellement, j'ai une macro qui va récupérer les données dont j'ai besoin dans les 45 fichiers .txt et qui les envoie dans une feuille de mon classeur Excel (mais toutes les données récupérées vont vers une unique feuille : chaque fichier .txt alimente une ligne de la feuille Excel). Comme j'ai besoin de fichiers .csv distincts, il faut que je modifie ma macro pour qu'elle crée un fichier .csv pour chaque fichier .txt.
Merci de votre aide !! :)
Je viens de m'inscrire sur le forum donc si je ne fais pas les choses dans l'ordre ou si je ne suis pas au bon endroit, dites le moi :)
Je reçois le 02 de chaque mois 45 fichiers .txt contenant chacun des informations (relevés d'index de compteur EDF de la fin du mois N-1). A partir de ces fichiers .txt, je dois créer des fichiers .csv (1 fichier .csv pour chaque fichier .txt, donc 45 fichiers .csv à créer) que je transfère ensuite vers un ftp pour que ces fichiers .csv soient intégrés dans une base de donnée.
J'ai donc besoin de savoir comment je peux faire une macro qui va créer autant de fichier .csv que j'ai de fichier .txt, et comment récupérer les données qui m’intéressent dans les fichiers .txt pour les envoyer vers les .csv. Si en plus la macro peut envoyer les fichiers obtenus vers un ftp, j'aurai tout gagné ! :)
Actuellement, j'ai une macro qui va récupérer les données dont j'ai besoin dans les 45 fichiers .txt et qui les envoie dans une feuille de mon classeur Excel (mais toutes les données récupérées vont vers une unique feuille : chaque fichier .txt alimente une ligne de la feuille Excel). Comme j'ai besoin de fichiers .csv distincts, il faut que je modifie ma macro pour qu'elle crée un fichier .csv pour chaque fichier .txt.
Merci de votre aide !! :)
A voir également:
- Transformer un fichier txt en csv
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir, le plus facile serait peut-être d'adapter le code de ta macro.
Sub DonneesEchéance()
Dim FichierAOuvrir
Dim i As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set F1 = Sheets("Liste")
Set F2 = Sheets("RecupDesDonnees")
F1.Select
ChDrive Cells(2, 1)
Chemin = Cells(2, 2) & "\"
ReDim FichierAOuvrir([C10000].End(xlUp).Row - 1) As String
ReDim VDate([C10000].End(xlUp).Row - 1) As String
ReDim NomFich([C10000].End(xlUp).Row - 1) As String
ReDim N°Fich([C10000].End(xlUp).Row - 1) As String
ReDim Dest([C10000].End(xlUp).Row - 1) As String
ReDim CodeVol([C10000].End(xlUp).Row - 1) As String
NbFichiers = [C10000].End(xlUp).Row - 1
For i = 1 To NbFichiers
If Cells(i + 1, 3) = "" Then GoTo Recup
FichierAOuvrir(i) = Cells(i + 1, 3)
Next i
Recup:
F2.Select
For i = 1 To NbFichiers
Workbooks.OpenText Filename:= _
Chemin & FichierAOuvrir(i), Origin:= _
xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array _
(3, 1), Array(4, 1), Array(5, 1)), TrailingMinusNumbers:=True
VDate(i) = [c1]
NomFich(i) = [c2]
N°Fich(i) = [c3]
Dest(i) = [c4]
CodeVol(i) = [C11]
ActiveWorkbook.Close
Next i
F2.Activate
For i = 1 To NbFichiers
'PremLigne = [A65535].End(xlUp).Row + 1
Cells(i + 1, 3) = VDate(i)
Cells(i + 1, 4) = NomFich(i)
Cells(i + 1, 5) = N°Fich(i)
Cells(i + 1, 6) = Dest(i)
Cells(i + 1, 7) = CodeVol(i)
Next i
End Sub
Sub ToutEffacer()
Application.ScreenUpdating = False
If [A65535].End(xlUp).Row = 1 Then Exit Sub
Dim Msg, Titre, Reponse
Msg = "Etes-vous sûr de vouloir tout effacer?"
Style = vbYesNo + vbCritical + vbDefaultButton2
Title = "Effacement des données"
Reponse = MsgBox(Msg, Style, Titre)
If Reponse = vbYes Then
Range(Cells(2, 1), Cells([A65535].End(xlUp).Row, [IV1].End(xlToLeft).Column)).Select
Selection.ClearContents
End If
Range("A2").Select
End Sub
pour le transfert ftp, une méthode est de créer un fichier de commande ftp, et d'ensuite appeller ftp avec ce fichier de commande. voici un exemple.