Générer des fichiers textes avec critères

Elodie195

XLDnaute Occasionnel
Bonjour,

Je souhaiterais générer à partir d'un fichier excel .xlsx plusieurs fichiers textes correspondants à divers critères.

Je m'explique :

J'ai un tableau extrait d'un logiciel, je l'ai mis en pièce jointe (fichier brut.xlsx) sa taille peut varier en fonction des analyses.

Première ligne, j'ai mes analyses : ANALYSE 1 ANALYSE 2 ANALYSE 3 ANALYSE 4
Première colonne à partir de A3, j'ai mes numéros de dossier.
Troisième colonne c'est les dates et heures.
Puis colonne 4 à infini c'est les valeurs des analyses.

Je voudrais si c'est possible :

pour chaque dossier, générer un fichier texte avec toutes les analyses qui lui corresponde en dessous.

exemple avec le fichier joint : (LABORATOIRE et PHARMA sont des valeurs fixes)

pour le dossier A.2013.1 :

LABORATOIRE;
A.2013.1;
PHARMA;ANALYSE 1;80.25101647;
ANALYSE 3;3,526148139
END;

exemple pour le dossier A.2013.6
LABORATOIRE;
A.2013.6;
PHARMA;ANALYSE 2;49,95794576;
ANALYSE 3;0,230094434;
ANALYSE 4;7,186419899;
END;

Il faudrait que le fichier texte s'appelle PHARMA_DATE_HEURE.txt (date et heure du jour) et s'enregistre dans C:\TEMP\

Pouvez vous m'aider pour ce projet ?

Merci d'avance de votre aide.

Je suis dispo pour toute question éventuelle si jamais je suis pas claire :p

Bonne journée.

Elo
 

Pièces jointes

  • fichier-brut.xlsx
    9.2 KB · Affichages: 34
Dernière édition:
G

Guest

Guest
Re : Générer des fichiers textes avec critères

Bonjour,

Dans le classeur joint, voir et lancer la macro splitFile. UNIQUEMENT Valable avec le fichier texte joint à ta demande. Je te laisse adapter.


A+
 

Elodie195

XLDnaute Occasionnel
Re : Générer des fichiers textes avec critères

Bonjour Hasco,

Merci beaucoup de votre réponse.

Par contre, je me sens bête car j'avais mis le mauvais fichier brut :(
j'avais mis un .txt au lieu du .xlsx. Je vous ai fait perdre du temps.

La structure du fichier est différente, les analyses sont en ligne et les numéros de dossier en colonne.

Pouvez vous m'aider avec cette version de fichier brut ?

Encore désolé de ma maladresse.

Elo
 
Dernière édition:
G

Guest

Guest
Re : Générer des fichiers textes avec critères

Re,

Tu ne dis pas ce que sont devenus le "PHARMA" et autre "LABORATOIRE" de ton premier post.
Que faire de la colonne File
Pour la colonne Date, s'agit-il de la date à donner au nom de fichier?
Essaie d'être plus précise.
Mets dans ton fichier une représentation des fichiers textes que cela doit donner

A+
 

Elodie195

XLDnaute Occasionnel
Re : Générer des fichiers textes avec critères

Rebonjour Hasco,

Donc en fait, dans fichier-brut.xlsx, ce qu'il faut garder c'est les noms d'analyses '"ANALYSE 1", etc. de la première ligne.
Ensuite dans la colonne A sous "'name", on doit garder que ce qui commence par A.20 soit les numéros de dossier.
On fait correspondre pour tel dossier correspondant telle analyse ayant telle valeur.

Par exemple, pour le dossier A.2013.1, le fichier texte doit être : (PHARMA LABORATOIRE et END sont des données "en dur" obligatoire)

LABORATOIRE;
A.2013.1;
PHARMA;ANALYSE 1;80.25101647;
ANALYSE 3;3,526148139;
END;

Pour la colonne "Date File" on ne s'en sert pas.

Pour la colonne A, tout ce qui est autre que A.20XX comme BLANC et TEST ne doivent pas être retenu.

Pour la date et l'heure des fichiers générés c'est au moment ou on enregistre le fichier texte (exemple PHARMA_181013_165610).

Merci de votre aide.

Elo
 

Pièces jointes

  • PHARMA_181013_165310.txt
    84 bytes · Affichages: 35
Dernière édition:
G

Guest

Guest
Re : Générer des fichiers textes avec critères

Bonsoir,

Dans la macro suivante, valable uniquement sur un fichier comme l'exemple donné, j'ai ajouté au nom des fichiers textes un index 1 à N en cas de doublons, comme la macro traite plusieurs fichiers à la seconde, le temps au format YYYYMMDD_HHMMSS n'est pas suffisant pour les distinguer.

S'il ne doit pas y avoir je te laisse enlever cet index (pas difficile)

Code:
Sub CreationFichiersTexte()
Dim rng As Range, r As Range, plgAnalyses As Range, a As Range
Dim f As Integer, first As Boolean, idx As Integer
Dim ligne As String
    'déterminer la plage des données
    With Sheets("Sheet1").Range("A1").CurrentRegion
        If .Rows.Count > 2 Then
            Set rng = .Offset(2).Resize(.Rows.Count - 2)
        Else
            MsgBox "aucune donnée à traiter n'a été trouvé!"
            Exit Sub
        End If
    End With
    
    'Pour chaque ligne dans la plage des données
    For Each r In rng.Rows
        'Si la première cellule commence par une Lette, un point,4 chiffres, un point
        If r.Cells(1, 1) Like "[A-Z].####.#*" Then
            'déterminer s'il existe des analyse à enregistrer
            On Error Resume Next
                Set plgAnalyses = r.Offset(, 3).Resize(, r.Columns.Count - 3).SpecialCells(xlCellTypeConstants)
            On Error GoTo 0
            If Not plgAnalyses Is Nothing Then
                'ouvrir un fichier
                f = FreeFile()
                idx = idx + 1
                Open ThisWorkbook.Path & "\PHARMA_" & Format(Now, "yyyymmdd_hhmmss") & "_" & idx & ".txt" For Append As #f
                Print #f, "LABORATOIRE;"
                Print #f, r.Cells(1, 1)
                first = True 'il faut ecrire PHARMA
                For Each a In plgAnalyses.Cells
                    If a.Value <> "" Then
                        ligne = "ANALYSE " & a.Column - 3 & ";" & a.Text & ";"
                        If first Then ligne = "PHARMA;" & ligne
                        Print #f, ligne
                        first = False
                    End If
                Next
            End If
            Print #f, "END;"
            Close #f
        End If
    Next
End Sub

A+
 

Elodie195

XLDnaute Occasionnel
Re : Générer des fichiers textes avec critères

Bonsoir,

C'est exactement ce que je voulais, c'est parfait !!! :)

Je vous remercie de m'avoir accorder de votre temps, c'est vraiment très gentil.

Je vous souhaite une bonne soirée et un bon week end.

Elo
 

Paf

XLDnaute Barbatruc
Re : Générer des fichiers textes avec critères

Bonjour à tous,

Bon, j'ai pris le temps de réfléchir et au moment de poster, une solution est déjà proposée.
Tant pis je propose la mienne (qui n'apporte rien de plus !)

Code:
 Sub FichierTexte()
Dim Pass As Boolean
Dim Chemin As String, MonCode As String, Nom As String, NomFic As String
Dim Derl As Long, DerCol As Long
Dim num As Integer

Chemin = "C:\TEMP\"
With Worksheets("Sheet1")
Derl = .Range("A" & Rows.Count).End(xlUp).Row

For i = 3 To Derl
Pass = False
MonCode = Left(.Cells(i, 1).Value, 4)
    If MonCode = "A.20" Then
        DerCol = .Cells(i, Cells.Columns.Count).End(xlToLeft).Column
    
        num = FreeFile
        Nom = "PHARMA_" & Format(Now(), "ddmmyy_hhmmss") & ".txt"
        NomFic = Chemin & Nom
        Open "C:\TEMP\" & Nom For Output As #num

        Print #num, "LABORATOIRE;"
        Print #num, .Cells(i, 1).Value & ";"
        For j = 4 To DerCol
            If .Cells(i, j).Value <> "" Then
                If Pass = False Then
                    Print #num, "PHARMA;" & .Cells(1, j).Value & ";" & .Cells(i, j).Value&; ";"
                    Pass = True
                Else
                    Print #num, .Cells(1, j).Value & ";" & .Cells(i, j).Value&; ";"
            
                End If
            End If
        Next j
    
        Print #num, "END;"
    
        Close #num
    End If
    Application.Wait Time + TimeSerial(0, 0, 1) 'faire une pause sinon les fichier porte le meme nom et "s'écrasent "
Next
End With
End Sub

Bon Week End
 

Elodie195

XLDnaute Occasionnel
Re : Générer des fichiers textes avec critères

Bonjour Paf,

Merci également de votre réponse qui m'a été utile !
J'ai ajouté un élément en plus dont j'avais besoin (afficher l'analyse)

Merci d'avoir passé du temps pour moi.

Bonne journée :)
 

Elodie195

XLDnaute Occasionnel
Re : Générer des fichiers textes avec critères

Rebonjour,

Désolé de remonter mon topic mais j'ai une petite question.
Dans la macro de Hasco, cela m'affiche le numéro de colonne au lieu du nom de l'analyse.
Dans la macro de Paf, cette analyse est bien dans le fichier texte extrait.

Pour avoir un fichier de sortie comme :
PHARMA;Analyse 1;valeur;

J'aimerais savoir comment ajouter les noms d'analyse dans la macro de Hasco ?
Pouvez vous m'aider ?

Merci d'avance.

Elo
 
Dernière édition:
G

Guest

Guest
Re : Générer des fichiers textes avec critères

Bonjour,

A vue de nez parceque je n'ai pas testé:
Changer la ligne:
Code:
ligne = "ANALYSE " & a.Column - 3 & ";" & a.Text & ";"

Par:
Code:
ligne = a.Parent.Cells(1, a.column) & ";" & a.Text & ";"
a est la cellule en cours dans la boucle
a.Parent la feuille parente de la cellule a
a.Column le numéro de colonne de a
a.Parent.Cells(1,a.column) la cellule de la ligne 1 de la colonne de a.Column
A+
 
Dernière modification par un modérateur:

Elodie195

XLDnaute Occasionnel
Re : Générer des fichiers textes avec critères

Rebonjour le fil,

J'avais une petite question :

dans le cas où mon fichier brut a une ligne supplémentaire (cf fichier joint).

C'est à dire une ligne qui se situe sous les analyses avec Conc [g] et Conc PMD

Comment puis je n'avoir que les valeurs qui sont sous les colonnes Conc [g] dans mes fichiers textes créés ?

Merci d'avance de votre aide.

Bonne journée :)

Elo
 

Pièces jointes

  • fichier-brut-ligne-supplémentaire.xlsx
    9.7 KB · Affichages: 38
Dernière édition:

Discussions similaires

Réponses
18
Affichages
611