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

7liste-code.xlsx (10.55 Ko)

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 Sub

Et le fichier :

9liste-code.xlsm (22.40 Ko)

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... :) )

10liste-code-v2.xlsm (22.66 Ko)

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...

Rechercher des sujets similaires à "transformation fichier"