Transformation de fichier
Bonjour,
Je fais appel à vos connaissances.
J'aimerais pourvoir transformer de manière automatique le contenu d'un fichier fff (s'ouvre avec le bloc note) avec excel.
En gros, j'ouvre excel, je vais chercher le fichier qui s'ouvre dans excel avec les colonnes. Je clique sur un bouton qui modifie automatiquement des noms qui sont associé à un numéro et ensuite mon fichier initial se retransforme en fichier fff
Je ne sais pas si j'ai réussi à me faire comprendre
Merci de vous intéressez à mon cas
Bonjour,
Peut-être pas besoin d'ouvrir le fichier avec Excel...
On peut traiter des fichiers "texte" avec le VBA...
Pour t'aider, il nous faudrait un fichier "fff" exemple, et les données à modifier (qui elles, seraient dans le fichier Excel contenant le code...)
@ te relire
Bonjour,
Voici le contenu du fichier fff qu'il faut modifier :
FFF;WIN;competition;;individuel
27/11/2022;epee;M;m20;Challenge de la Botte 2023 - EHM17;EHM17
NOM,Prénom,1/3/2006,M,FRA,2026,;,,;061872,NIEVRE,NEVERS CE,,;1,
NOM,Prénom14/5/2008,M,FRA,2025,;,,;107947,NIEVRE,NEVERS CE,,;2,
NOM,Prénom28/3/2007,M,FRA,2034,;,,;106151,CÔTE-D'OR,DIJON ASPTT,,;3,
NOM,Prénom24/6/2006,M,FRA,,;,,;090309,VAL-D'OISE,ST GRATIEN,,;3,
NOM,Prénom25/7/2007,M,FRA,2027,;,,;099486,NIEVRE,NEVERS CE,,;5,
NOM,Prénom12/10/2007,M,FRA,2019,;,,;129082,,PARAY LE MONIAL,,;6,
NOM,Prénom5/7/2006,M,FRA,2035,;,,;084246,CÔTE-D'OR,DIJON ASPTT,,;7,
NOM,Prénom13/1/2006,M,FRA,2036,;,,;094796,CÔTE-D'OR,DIJON ASPTT,,;8,
NOM,Prénom2/5/2006,M,FRA,2022,;,,;099208,RHONE,BRON AE,,;9,
NOM,Prénom6/4/2006,M,FRA,2023,;,,;062704,NIEVRE,NEVERS CE,,;10,
NOM,Prénom14/10/2007,M,FRA,2028,;,,;153715,NIEVRE,NEVERS CE,,;11,
NOM,Prénom28/5/2007,M,FRA,2021,;,,;144908,ALLIER,VICHY SE,,;12,
NOM,Prénom5/7/2007,M,FRA,2020,;,,;233943,ALLIER,MONTLUCON,,;13,
Il faut modifier le code 061872 sur la premier ligne par exemple.
Il faut le remplacer par le code qui corresponde au club (NEVERS CE).
La liste des codes est dans le fichier joint.
Par contre, si le club n'est pas dans la liste (ici ST Gratien, Vichy, Montluçon), il faut un code générique.
J'espère être plus claire et précis
Merci d'avance
Bonjour,
En retour..
Placer ce fichier dans le répertoire contenant les fichiers "fff" à modifier.
Dès qu'un fichier est traité, il finira en "_TRT" sans que le fichier initial ne soit modifié...
Le code :
Sub trait_fff()
Dim LePath As String
Dim NomFich As String, Fich As String
Dim X As String, Ligne As String
Dim J As Long
Dim CV
Dim Cel As Range
Dim Le_Code As Object
Application.ScreenUpdating = False
Set Le_Code = CreateObject("Scripting.Dictionary") 'création dictionnaire -> liste sans doublons
With Sheets("Sheet1")
For Each Cel In .Range("A2:A" & .Cells(Rows.Count, "A").End(xlUp).Row)
Le_Code(Cel.Offset(, 1).Value) = Cel.Text 'chaque structure récupère son code
Next Cel
End With
Close #1, #2
LePath = ThisWorkbook.Path & "\" 'dans le répertoire de ce fichier
ChDir LePath
Fich = Dir(LePath & "*.fff")
Do While Fich <> ""
X = LePath & Fich 'nom complet du fichier
If InStr(1, X, "_TRT") = 0 Then 'si le fichier n'a pas été traité
NomFich = Left(X, Len(X) - 4) & "_TRT" & ".fff" 'on va rebaptiser le fichier avec "_TRT" à la fin
Open X For Input As #1 'ouverture du fichier original
Open NomFich For Output As #2 'création du fichier traité
Do While Not EOF(1) 'balayage des lignes
Line Input #1, Ligne: J = J + 1 'décompte
If J > 2 Then 'si on arrive à la ligne 3
CV = Split(Split(Ligne, ";")(2), ",") 'on récupère le nom de la structure
If Le_Code.Exists(CV(2)) Then 'si ce nom est connu dans le dictionnaire
Ligne = Replace(Ligne, CV(0), Le_Code(CV(2))) 'on remplace le code existant par le code kivabien
Else
Ligne = Replace(Ligne, CV(0), Le_Code("")) 'sinon, on met le code générique
End If
End If
Print #2, Ligne 'on inscrit chaque ligne balayée dans le fichier traité
Loop
Close #1, #2 'on ferme les 2 fichiers
End If
Fich = Dir 'fichier suivant
Loop
Close #1, #2
End SubEt le fichier :
Merci,
Il y a une erreur avec le code Passe Avant.
J'essaie de voir comment modifier
Re,
Tu mets ce fichier dans le répertoire contenant les fichiers "fff" à modifier.
Tu l'ouvres, valides l'exécution des macros, et tu cliques sur le bouton...
J'ai fait plusieurs tests, cela fonctionne mis à part pur le code pour Passe Avant, cela met le code générique.
Penses tu qu'il serait possible d'avoir une macro qui permet d'aller chercher le fichier plutôt que de copier le fichier dans le répertoire ? Même s'il y a 2 boutons.
Merci d'avance
Re-,
Pour le code "Passe Avant Escrime " (si c'est bien toute la cellule B34), comme il n'y avait pas d'exemple, pas pu tester...
Pour aller chercher le ou les fichiers à modifier, est-ce qu'il y aurait beaucoup à traiter en même temps, ou juste 1 de temps en temps, et qu'on irait chercher?
Re-,
La V2
Un explorateur s'ouvre, tu vas chercher les fichiers "fff" (tu peux en sélectionner plusieurs en maintenant la touche Ctrl appuyée).
Les fichiers traités seront enregistrés dans le répertoire choisi
Bonne fin d'apm (et bon match... :) )
Merci c'est parfait,
pour le code Passe Avant
FFF;WIN;competition;;individuel
27/11/2022;epee;F;m20;Challenge de la Botte 2023 - EDM17;EDM17
NOM,Prénom,8/3/2006,F,FRA,2527,;,,;249068,,PASSE AVANT ESCRIME,,;1,
NOM,Prénom,16/2/2009,F,FRA,2528,;,,;164751,,PASSE AVANT ESCRIME,,;2,
NOM,Prénom,12/7/2007,F,FRA,2536,;,,;165574,SAONE-ET-LOIRE,MACON ESC,,;3,
NOM,Prénom,15/2/2007,F,FRA,2538,;,,;165396,CÔTE-D'OR,DIJON ASPTT,,;3,
NOM,Prénom,26/6/2009,F,FRA,2529,;,,;193032,,PARAY LE MONIAL,,;5,
NOM,Prénom,16/8/2006,F,FRA,2537,;,,;118833,SAONE-ET-LOIRE,MACON ESC,,;6,
NOM,Prénom,22/10/2007,F,FRA,2534,;,,;130267,SAONE-ET-LOIRE,LE CREUSOT,,;7,
NOM,Prénom,2/10/2006,F,FRA,2531,;,,;153742,NIEVRE,NEVERS CE,,;8,
NOM,Prénom,23/6/2008,F,FRA,2533,;,,;166229,NIEVRE,NEVERS CE,,;9,
NOM,Prénom,15/9/2006,F,FRA,2532,;,,;246236,NIEVRE,NEVERS CE,,;10,
NOM,Prénom,18/4/2007,F,FRA,2539,;,,;091899,CÔTE-D'OR,DIJON ASPTT,,;11,
NOM,Prénom,24/6/2007,F,FRA,2540,;,,;211784,CÔTE-D'OR,DIJON ASPTT,,;12,
NOM,Prénom,3/5/2006,F,FRA,2530,;,,;219157,,PARAY LE MONIAL,,;13,
NOM,Prénom,26/3/2007,F,FRA,2535,;,,;210970,SAONE-ET-LOIRE,LE CREUSOT,,;14,
Pour le match, désolé mais je travaille
Bon match à toi aussi !!
Re-,
Mets en majuscule la cellule b34 dans le fichier Excel, et c'est bon...